เชธเชฟเชเชเชฒ เชเชตเชพเชฌเชฆเชพเชฐเซ เชธเชฟเชฆเซเชงเชพเชเชค, เชเซเชจเซ เชธเชฟเชเชเชฒ เชเชตเชพเชฌเชฆเชพเชฐเซเชจเชพ เชธเชฟเชฆเซเชงเชพเชเชค เชคเชฐเซเชเซ เชชเชฃ เชเชณเชเชตเชพเชฎเชพเช เชเชตเซ เชเซ,
เชธเชฎเชพเชจ เชชเชฐเชฟเชตเชฐเซเชคเชจเชถเซเชฒเชคเชพเชจเซ เชธเชฟเชฆเซเชงเชพเชเชค เชเชฐเซเชซ - เชธเชฎเชเชตเชพ เชฎเชพเชเซ เชเช เช
เชคเซเชฏเชเชค เชฒเชชเชธเชฃเซ เชตเซเชฏเชเซเชคเชฟ เช
เชจเซ เชชเซเชฐเซเชเซเชฐเชพเชฎเชฐ เชเชจเซเชเชฐเชตเซเชฏเซเชฎเชพเช เชเชตเซ เชจเชฐเซเชตเชธ เชชเซเชฐเชถเซเชจ.
เช เชธเชฟเชฆเซเชงเชพเชเชค เชธเชพเชฅเซเชจเซ เชฎเชพเชฐเซ เชชเซเชฐเชฅเชฎ เชเชเชญเซเชฐ เชชเชฐเชฟเชเชฏ เชชเซเชฐเชฅเชฎ เชตเชฐเซเชทเชจเซ เชถเชฐเซเชเชคเชฎเชพเช เชฅเชฏเซ เชนเชคเซ, เชเซเชฏเชพเชฐเซ เชฏเซเชตเชพเชจ เช เชจเซ เชฒเซเชฒเชพ เชฌเชพเชณเชเซเชจเซ เชฒเชพเชฐเซเชตเชพเชฎเชพเชเชฅเซ เชตเชฟเชฆเซเชฏเชพเชฐเซเชฅเซเช - เชตเชพเชธเซเชคเชตเชฟเช เชตเชฟเชฆเซเชฏเชพเชฐเซเชฅเซเช เชฌเชจเชพเชตเชตเชพ เชฎเชพเชเซ เชเชเชเชฒเชฎเชพเช เชฒเช เชเชตเชพเชฎเชพเช เชเชตเซเชฏเชพ เชนเชคเชพ.
เชเชเชเชฒเชฎเชพเช, เช เชฎเชจเซ 8-9 เชฒเซเชเซเชจเชพ เชเซเชฅเซเชฎเชพเช เชตเชนเซเชเชเชตเชพเชฎเชพเช เชเชตเซเชฏเชพ เชนเชคเชพ เช เชจเซ เชเช เชธเซเชชเชฐเซเชงเชพ เชนเชคเซ - เชเชฏเซเช เชเซเชฅ เชตเซเชกเชเชพเชจเซ เชฌเซเชเชฒ เชธเซเชฅเซ เชเชกเชชเซ เชชเซเชถเซ, เชเซ เชเซ เชเซเชฅเชฎเชพเชเชฅเซ เชชเซเชฐเชฅเชฎ เชตเซเชฏเชเซเชคเชฟ เชตเซเชกเชเชพเชจเซ เชเซเชฒเชพเชธเชฎเชพเช เชฐเซเชกเซ, เชฌเซเชเซ เชคเซเชจเซ เชชเซเชตเซ, เช เชจเซ เชคเซเชฐเซเชเชพเชจเซ เชจเชพเชธเซเชคเซ เชเซ. เชเชเชฎ เชเซ เชเซเชฃเซ เชคเซเชจเซ เชเชพเชฎเชเซเชฐเซ เชชเซเชฐเซเชฃ เชเชฐเซ เชเซ เชคเซ เชเซเชฅเชจเซ เชเชคเชพเชฐเชจเชพ เช เชเชคเชฎเชพเช เชเชพเชฏ เชเซ.
เชเซเชธ เชเซเชฏเชพเช เชเชคเชพเชฐเชจเซเช เชเชฆ เชคเซเชฐเชฃเชจเชพ เชเซเชฃเชพเชเชเชฎเชพเช เชนเชคเซเช เชคเซ SRPเชจเซ เชธเชพเชฐเซ เช เชฎเชฒ เชนเชคเซ.
เชตเซเชฏเชพเชเซเชฏเชพ 1. เชเชเชฒ เชเชตเชพเชฌเชฆเชพเชฐเซ.
เชธเชฟเชเชเชฒ เชฐเชฟเชธเซเชชเซเชจเซเชธเชฟเชฌเชฟเชฒเชฟเชเซ เชชเซเชฐเชฟเชจเซเชธเชฟเชชเชฒ (เชเชธเชเชฐเชชเซ) เชจเซ เชธเชคเซเชคเชพเชตเชพเชฐ เชตเซเชฏเชพเชเซเชฏเชพ เชเชฃเชพเชตเซ เชเซ เชเซ เชฆเชฐเซเช เชเชจเซเชเชฟเชเซเชจเซ เชชเซเชคเชพเชจเซ เชเชตเชพเชฌเชฆเชพเชฐเซ เช เชจเซ เช เชธเซเชคเชฟเชคเซเชต เชฎเชพเชเซเชจเซเช เชเชพเชฐเชฃ เชนเซเชฏ เชเซ เช เชจเซ เชคเซเชจเซ เชฎเชพเชคเซเชฐ เชเช เช เชเชตเชพเชฌเชฆเชพเชฐเซ เชนเซเชฏ เชเซ.
เชเชฌเซเชเซเชเซเช "เชชเซเชจเชพเชฐ" เชจเซ เชงเซเชฏเชพเชจเชฎเชพเช เชฒเซ (เชเซเชชเซเชชเชฒเชฐ).
SRP เชธเชฟเชฆเซเชงเชพเชเชคเชจเซ เช
เชฎเชฒ เชเชฐเชตเชพ เชฎเชพเชเซ, เช
เชฎเซ เชเชตเชพเชฌเชฆเชพเชฐเซเชเชจเซ เชคเซเชฐเชฃ เชญเชพเชเชฎเชพเช เชตเชนเซเชเชเซเชถเซเช:
- เชเช เชฐเซเชกเชตเซเช (PourOperation)
- เชเช เชชเซเชฃเซเช (เชกเซเชฐเชฟเชเชเช เชช เชเชชเชฐเซเชถเชจ)
- เชเช เชจเชพเชธเซเชคเซ เชเซ (เชเซเชเชฌเชพเชเช เชเชชเชฐเซเชถเชจ)
เชชเซเชฐเชเซเชฐเชฟเชฏเชพเชจเชพ เชฆเชฐเซเช เชธเชนเชญเชพเชเซเช เชชเซเชฐเชเซเชฐเชฟเชฏเชพเชจเชพ เชเช เชเชเช เชฎเชพเชเซ เชเชตเชพเชฌเชฆเชพเชฐ เชเซ, เชเชเชฒเซ เชเซ, เชเช เชชเชฐเชฎเชพเชฃเซ เชเชตเชพเชฌเชฆเชพเชฐเซ เชเซ - เชชเซเชตเซเช, เชฐเซเชกเชตเซเช เช เชฅเชตเชพ เชจเชพเชธเซเชคเซ.
เชชเซเชตเชพเชจเชพ เชเชฟเชฆเซเชฐ, เชฌเชฆเชฒเชพเชฎเชพเช, เช เชเชพเชฎเชเซเชฐเซ เชฎเชพเชเซ เชฐเชตเซเชถ เชเซ:
ัlass Tippler {
//...
void Act(){
_pourOperation.Do() // ะฝะฐะปะธัั
_drinkUpOperation.Do() // ะฒัะฟะธัั
_takeBiteOperation.Do() // ะทะฐะบััะธัั
}
}
เชถเชพ เชฎเชพเชเซ?
เชฎเชพเชจเชต เชชเซเชฐเซเชเซเชฐเชพเชฎเชฐ เชเชช-เชฎเซเชจ เชฎเชพเชเซ เชเซเชก เชฒเชเซ เชเซ, เช
เชจเซ เชเชช-เชฎเซเชจ เชฌเซเชฆเชฐเชเชพเชฐ, เชฎเซเชฐเซเช เช
เชจเซ เชนเชเชฎเซเชถเชพ เชเชคเชพเชตเชณเชฎเชพเช เชนเซเชฏ เชเซ. เชคเซ เชเช เชธเชฎเชฏเซ เชฒเชเชญเช 3 - 7 เชถเชฌเซเชฆเซ เชชเชเชกเซ เช
เชจเซ เชธเชฎเชเซ เชถเชเซ เชเซ.
เชถเชฐเชพเชฌเซเชจเชพ เชเชฟเชธเซเชธเชพเชฎเชพเช, เชเชฎเชพเชเชฅเซ เชคเซเชฐเชฃ เชถเชฌเซเชฆเซ เชเซ. เชเซ เชเซ, เชเซ เชเชชเชฃเซ เชเช เชถเซเช เชธเชพเชฅเซ เชเซเชก เชฒเชเซเช, เชคเซ เชคเซเชฎเชพเช เชนเชพเชฅ, เชเชถเซเชฎเชพ, เชเชเชกเชพ เช
เชจเซ เชฐเชพเชเชเชพเชฐเชฃ เชตเชฟเชถเซ เช
เชจเชเชค เชฆเชฒเซเชฒเซ เชนเชถเซ. เช
เชจเซ เช เชฌเชงเซเช เชเช เชชเชฆเซเชงเชคเชฟเชจเชพ เชถเชฐเซเชฐเชฎเชพเช เชนเชถเซ. เชฎเชจเซ เชเชพเชคเชฐเซ เชเซ เชเซ เชคเชฎเซ เชคเชฎเชพเชฐเซ เชชเซเชฐเซเชเซเชเชฟเชธเชฎเชพเช เชเชตเซ เชเซเชก เชเซเชฏเซ เชนเชถเซ. เชฎเชพเชจเชธ เชฎเชพเชเซ เชธเซเชฅเซ เชฎเชพเชจเชตเซเชฏ เชเชธเซเชเซ เชจเชฅเซ.
เชฌเซเชเซ เชฌเชพเชเซ, เชเชพเชณเชพ เชชเชพเชกเชตเชพ เชฎเชพเชฃเชธเชจเซ เชคเซเชจเชพ เชฎเชพเชฅเชพเชฎเชพเช เชตเชพเชธเซเชคเชตเชฟเช เชฆเซเชจเชฟเชฏเชพเชจเซ เชตเชธเซเชคเซเชเชจเซเช เช เชจเซเชเชฐเชฃ เชเชฐเชตเชพ เชฎเชพเชเซ เชฐเชเชพเชฏเซเชฒ เชเซ. เชคเซเชจเซ เชเชฒเซเชชเชจเชพเชฎเชพเช, เชคเซ เชคเซเชฎเชจเซ เชเชเชธเชพเชฅเซ เชฆเชฌเชพเชฃ เชเชฐเซ เชถเชเซ เชเซ, เชคเซเชฎเชพเชเชฅเซ เชจเชตเซ เชตเชธเซเชคเซเชเชจเซ เชเชธเซเชฎเซเชฌเชฒ เชเชฐเซ เชถเชเซ เชเซ เช เชจเซ เชคเซ เช เชฐเซเชคเซ เชคเซเชจเซ เช เชฒเช เชเชฐเซ เชถเชเซ เชเซ. เชเซเชจเชพ เชฎเซเชกเชฒเชจเซ เชเชพเชฐเชจเซ เชเชฒเซเชชเชจเชพ เชเชฐเซ. เชคเชฎเชพเชฐเซ เชเชฒเซเชชเชจเชพเชฎเชพเช, เชคเชฎเซ เชฆเชฐเชตเชพเชเซ เชเซเชฒเซ เชถเชเซ เชเซ, เชฆเชฐเชตเชพเชเชพเชจเชพ เชเซเชฐเซเชฎเชจเซ เชธเซเชเซเชฐเซ เชเชพเชขเซ เชถเชเซ เชเซ เช เชจเซ เชคเซเชฏเชพเช เชตเชฟเชจเซเชกเซ เชฒเชฟเชซเซเช เชฎเชฟเชเซเชจเชฟเชเชฎเซเชธ เชเซเช เชถเชเซ เชเซ, เชเซเชจเซ เช เชเชฆเชฐ เชเชฟเชฏเชฐเซเชธ เชนเชถเซ. เชชเชฐเชเชคเซ เชคเชฎเซ เชเช เช เชธเชฎเชฏเซ เชฎเชถเซเชจเชจเชพ เชคเชฎเชพเชฎ เชเชเชเซเชจเซ เชเช "เชธเซเชเชฟ" เชฎเชพเช เชเซเช เชถเชเชคเชพ เชจเชฅเซ. เชเชเชพเชฎเชพเช เชเชเซเช "เชตเชพเชจเชฐ เชฎเชพเชฃเชธ" เชเชฐเซ เชถเชเชคเซเช เชจเชฅเซ.
เชคเซเชฅเซ, เชฎเชพเชจเชต เชชเซเชฐเซเชเซเชฐเชพเชฎเชฐเซ เชเชเชฟเชฒ เชฎเชฟเชเซเชจเชฟเชเชฎเซเชธเชจเซ เชเชเชพ เชเชเชฟเชฒ เช เชจเซ เชเชพเชฐเซเชฏเชเชพเชฐเซ เชคเชคเซเชตเซเชจเชพ เชธเชฎเซเชนเชฎเชพเช เชตเชฟเชเชเชฟเชค เชเชฐเซ เชเซ. เชเซ เชเซ, เชคเซ เชเซเชฆเซ เชเซเชฆเซ เชฐเซเชคเซ เชตเชฟเชเชเชฟเชค เชฅเช เชถเชเซ เชเซ: เชเชฃเซ เชเซเชจเซ เชเชพเชฐเชฎเชพเช, เชเชฐ เชกเชเซเช เชฆเชฐเชตเชพเชเชพเชฎเชพเช เชเชพเชฏ เชเซ, เช เชจเซ เชเชงเซเชจเชฟเช เชเชพเชฐเชฎเชพเช, เชฒเซเช เชเชฒเซเชเซเชเซเชฐเซเชจเชฟเชเซเชธเชฎเชพเช เชจเชฟเชทเซเชซเชณเชคเชพ เชเชจเซเชเชฟเชจเชจเซ เชถเชฐเซ เชฅเชคเชพเช เช เชเชเชพเชตเซ เชเซ, เชเซ เชธเชฎเชพเชฐเชเชพเชฎ เชฆเชฐเชฎเชฟเชฏเชพเชจ เชธเชฎเชธเซเชฏเชพ เชฌเชจเซ เชถเชเซ เชเซ.
เชคเซเชฅเซ, SRP เช เชเช เชธเชฟเชฆเซเชงเชพเชเชค เชเซ เชเซ เชธเชฎเชเชพเชตเซ เชเซ เชเซ เชเซเชตเซ เชฐเซเชคเซ เชตเชฟเชเชเชจ เชเชฐเชตเซเช, เชเชเชฒเซ เชเซ, เชตเชฟเชญเชพเชเชจ เชฐเซเชเชพ เชเซเชฏเชพเช เชฆเซเชฐเชตเซ.
เชคเซ เชเชนเซ เชเซ เชเซ "เชเชตเชพเชฌเชฆเชพเชฐเซ" เชจเชพ เชตเชฟเชญเชพเชเชจเชจเชพ เชธเชฟเชฆเซเชงเชพเชเชค เช เชจเซเชธเชพเชฐ เชตเชฟเชเชเชจ เชเชฐเชตเซเช เชเชฐเซเชฐเซ เชเซ, เชเชเชฒเซ เชเซ เช เชฎเซเช เชตเชธเซเชคเซเชเชจเชพ เชเชพเชฐเซเชฏเซ เช เชจเซเชธเชพเชฐ.
เชเชพเชฒเซ เชชเซเชตเชพ เชชเชฐ เชชเชพเชเชพ เชเชเช เช เชจเซ เชตเชฟเชเชเชจ เชฆเชฐเชฎเชฟเชฏเชพเชจ เชตเชพเชจเชฐ เชฎเชพเชฃเชธเชจเซ เชฎเชณเชคเชพ เชซเชพเชฏเชฆเชพเช:
- เชเซเชก เชฆเชฐเซเช เชธเซเชคเชฐเซ เช เชคเซเชฏเชเชค เชธเซเชชเชทเซเช เชฅเช เชเชฏเซ เชเซ
- เชเซเชก เชเชเชธเชพเชฅเซ เช เชจเซเช เชชเซเชฐเซเชเซเชฐเชพเชฎเชฐเซ เชฆเซเชตเชพเชฐเชพ เชฒเชเซ เชถเชเชพเชฏ เชเซ (เชฆเชฐเซเช เชเช เช เชฒเช เชคเชคเซเชต เชฒเชเซ เชเซ)
- เชธเซเชตเชฏเชเชธเชเชเชพเชฒเชฟเชค เชชเชฐเซเชเซเชทเชฃ เชธเชฐเชณ เชเซ - เชคเชคเซเชต เชเซเชเชฒเซเช เชธเชฐเชณ เชเซ, เชคเซ เชชเชฐเซเชเซเชทเชฃ เชเชฐเชตเชพเชจเซเช เชธเชฐเชณ เชเซ
- เชเซเชกเชจเซ เชฐเชเชจเชพเชคเซเชฎเชเชคเชพ เชฆเซเชเชพเชฏ เชเซ - เชคเชฎเซ เชฌเชฆเชฒเซ เชถเชเซ เชเซ เชกเซเชฐเชฟเชเชเช เชช เชเชชเชฐเซเชถเชจ เชถเชฐเชพเชฌเซ เชเซเชฌเชฒ เชจเซเชเซ เชชเซเชฐเชตเชพเชนเซ เชฐเซเชกเซ เชเซ. เช เชฅเชตเชพ เชฐเซเชกเชตเชพเชจเซ เชเซเชฐเชฟเชฏเชพเชจเซ เชเชชเชฐเซเชถเชจเชฅเซ เชฌเชฆเชฒเซ เชเซเชฎเชพเช เชคเชฎเซ เชตเชพเชเชจ เช เชจเซ เชชเชพเชฃเซ เช เชฅเชตเชพ เชตเซเชกเชเชพ เช เชจเซ เชฌเซเชฏเชฐ เชฎเชฟเชเซเชธ เชเชฐเซ. เชตเซเชฏเชตเชธเชพเชฏเชจเซ เชเชตเชถเซเชฏเชเชคเชพเชเชจเซ เชเชงเชพเชฐเซ, เชคเชฎเซ เชชเชฆเซเชงเชคเชฟ เชเซเชกเชจเซ เชธเซเชชเชฐเซเชถ เชเชฐเซเชฏเชพ เชตเชฟเชจเชพ เชฌเชงเซเช เชเชฐเซ เชถเชเซ เชเซ เชเซเชชเซเชชเชฒเชฐ.เชเชเซเช.
- เช เชเชชเชฐเซเชถเชจเซเชธเชฎเชพเชเชฅเซ เชคเชฎเซ เชเชพเชเชงเชฐเชพเชจเซ เชซเซเชฒเซเชก เชเชฐเซ เชถเชเซ เชเซ (เชซเชเซเชค เชเชชเชฏเซเช เชเชฐเซเชจเซ TakeBitOperation), เชเชฒเซเชเซเชนเซเชฒเชฟเช (เชฎเชพเชคเซเชฐ เชเชชเชฏเซเช เชเชฐเซเชจเซ เชกเซเชฐเชฟเชเชเช เชช เชเชชเชฐเซเชถเชจ เชธเซเชงเชพ เชฌเซเชเชฒเชฎเชพเชเชฅเซ) เช เชจเซ เช เชจเซเชฏ เชเชฃเซ เชตเซเชฏเชตเชธเชพเชฏเชฟเช เชเชตเชถเซเชฏเชเชคเชพเชเชจเซ เชชเซเชฐเซเชฃ เชเชฐเซ.
(เชเชน, เชเชตเซเช เชฒเชพเชเซ เชเซ เชเซ เช เชชเชนเซเชฒเซเชฅเซ เช OCP เชธเชฟเชฆเซเชงเชพเชเชค เชเซ, เช เชจเซ เชฎเซเช เช เชชเซเชธเซเชเชจเซ เชเชตเชพเชฌเชฆเชพเชฐเซเชจเซเช เชเชฒเซเชฒเชเชเชจ เชเชฐเซเชฏเซเช เชเซ)
เช เชจเซ, เช เชฒเชฌเชคเซเชค, เชเซเชฐเชซเชพเชฏเชฆเชพ:
- เชเชชเชฃเซ เชตเชงเซ เชชเซเชฐเชเชพเชฐเซ เชฌเชจเชพเชตเชตเชพ เชชเชกเชถเซ.
- เชเช เชถเชฐเชพเชฌเซ เชชเซเชฐเชฅเชฎ เชตเชเชค เชชเซเชตเซ เชเซ เชคเซเชจเชพ เชเชฐเชคเชพเช เชฅเซเชกเชพ เชเชฒเชพเชเซ เชชเชเซ.
เชตเซเชฏเชพเชเซเชฏเชพ 2. เชเชเซเชเซเชค เชชเชฐเชฟเชตเชฐเซเชคเชจเชเซเชทเชฎเชคเชพ.
เชฎเชจเซ เชชเชฐเชตเชพเชจเชเซ เชเชชเซ, เชธเชเซเชเชจเซ! เชชเซเชตเชพเชจเชพ เชตเชฐเซเชเชจเซ เชชเชฃ เชเช เช เชเชตเชพเชฌเชฆเชพเชฐเซ เชเซ - เชคเซ เชชเซเชตเซ เชเซ! เช เชจเซ เชธเชพเชฎเชพเชจเซเชฏ เชฐเซเชคเซ, "เชเชตเชพเชฌเชฆเชพเชฐเซ" เชถเชฌเซเชฆ เชเช เช เชคเซเชฏเชเชค เช เชธเซเชชเชทเซเช เชเซเชฏเชพเชฒ เชเซ. เชเซเช เชฎเชพเชจเชตเชคเชพเชจเชพ เชญเชพเชตเชฟ เชฎเชพเชเซ เชเชตเชพเชฌเชฆเชพเชฐ เชเซ, เช เชจเซ เชเซเช เชงเซเชฐเซเชต เชชเชฐ เชเชฅเชฒเชพเชตเซเชฒ เชชเซเชเชเซเชตเชฟเชจเชจเซ เชเชเซเชฐเชตเชพ เชฎเชพเชเซ เชเชตเชพเชฌเชฆเชพเชฐ เชเซ.
เชเชพเชฒเซ เชชเซเชจเชพเชฐเชจเชพ เชฌเซ เช เชฎเชฒเซเชเชฐเชฃเซเชจเซ เชงเซเชฏเชพเชจเชฎเชพเช เชฒเชเช. เชเชชเชฐ เชเชฃเชพเชตเซเชฒ เชชเซเชฐเชฅเชฎ เชเชเชฎเชพเช เชคเซเชฐเชฃ เชตเชฐเซเชเซ เชเซ - เชฐเซเชกเชตเซเช, เชชเซเชตเซเช เช เชจเซ เชจเชพเชธเซเชคเซ.
เชฌเซเชเซเช "เชซเซเชฐเชตเชฐเซเชก เชเชจเซเชก เชเชจเซเชฒเซ เชซเซเชฐเชตเชฐเซเชก" เชชเชฆเซเชงเชคเชฟ เชฆเซเชตเชพเชฐเชพ เชฒเชเชตเชพเชฎเชพเช เชเชตเซเชฏเซเช เชเซ เช เชจเซ เชชเชฆเซเชงเชคเชฟเชฎเชพเช เชคเชฎเชพเชฎ เชคเชฐเซเช เชธเชฎเชพเชฏเซเชฒ เชเซ. เชเชเซเช:
//ะะต ััะฐัััะต ะฒัะตะผั ะฝะฐ ะธะทััะตะฝะธะต ััะพะณะพ ะบะปะฐััะฐ. ะัััะต ััะตัััะต ะฟะตัะตะฝัะบั
ัlass BrutTippler {
//...
void Act(){
// ะฝะฐะปะธะฒะฐะตะผ
if(!_hand.TryDischarge(from:_bottle, to:_glass, size:_glass.Capacity))
throw new OverdrunkException();
// ะฒัะฟะธะฒะฐะตะผ
if(!_hand.TryDrink(from: _glass, size: _glass.Capacity))
throw new OverdrunkException();
//ะะฐะบัััะฒะฐะตะผ
for(int i = 0; i< 3; i++){
var food = _foodStore.TakeOrDefault();
if(food==null)
throw new FoodIsOverException();
_hand.TryEat(food);
}
}
}
เช เชฌเชเชจเซ เชตเชฐเซเชเซ, เชฌเชนเชพเชฐเชจเชพ เชจเชฟเชฐเซเชเซเชทเชเชจเชพ เชฆเซเชทเซเชเชฟเชเซเชฃเชฅเซ, เชฌเชฐเชพเชฌเชฐ เชธเชฎเชพเชจ เชฆเซเชเชพเชฏ เชเซ เช เชจเซ "เชชเซเชตเชพ" เชจเซ เชธเชฎเชพเชจ เชเชตเชพเชฌเชฆเชพเชฐเซ เชตเชนเซเชเชเซ เชเซ.
เชฎเซเชเชเชตเชฃ!
เชชเชเซ เชเชชเชฃเซ เชเชจเชฒเชพเชเชจ เชเชเช เชเซเช เช เชจเซ SRP เชจเซ เชฌเซเชเซ เชตเซเชฏเชพเชเซเชฏเชพ เชถเซเชงเซเช เชเซเช - เชธเชฟเชเชเชฒ เชเซเชจเซเชเซเชฌเชฟเชฒเชฟเชเซ เชชเซเชฐเชฟเชจเซเชธเชฟเชชเชฒ.
SCP เชเชฃเชพเชตเซ เชเซ เชเซ "เชฎเซเชกเซเชฏเซเชฒเชจเซ เชฌเชฆเชฒเชตเชพเชจเซเช เชเช เช เชจเซ เชฎเชพเชคเซเชฐ เชเช เช เชเชพเชฐเชฃ เชเซ" เชเชเชฒเซ เชเซ, "เชเชตเชพเชฌเชฆเชพเชฐเซ เช เชชเชฐเชฟเชตเชฐเซเชคเชจเชจเซเช เชเชพเชฐเชฃ เชเซ."
(เชเชตเซเช เชฒเชพเชเซ เชเซ เชเซ เชเซ เชฒเซเชเซ เชฎเซเชณ เชตเซเชฏเชพเชเซเชฏเชพ เชธเชพเชฅเซ เชเชตเซเชฏเชพ เชนเชคเชพ เชคเซเช เชตเชพเชจเชฐ เชฎเชพเชฃเชธเชจเซ เชเซเชฒเชฟเชชเซเชฅเชฟเช เชเซเชทเชฎเชคเชพเชเชฎเชพเช เชตเชฟเชถเซเชตเชพเชธ เชงเชฐเชพเชตเชคเชพ เชนเชคเชพ)
เชนเชตเซ เชฌเชงเซเช เช เชเชเซเชฏเชพเช เชชเชกเซ เชเซ. เช เชฒเชเชฅเซ, เชเชชเชฃเซ เชฐเซเชกเชตเชพเชจเซ, เชชเซเชตเชพเชจเซ เช เชจเซ เชจเชพเชธเซเชคเซ เชเชฐเชตเชพเชจเซ เชชเซเชฐเชเซเชฐเชฟเชฏเชพเช เชฌเชฆเชฒเซ เชถเชเซเช เชเซเช, เชชเชฐเชเชคเซ เชชเซเชจเชพเชฐเชพเชฎเชพเช เชเชชเชฃเซ เชซเชเซเชค เชเซเชฐเชฟเชฏเชพเชเชจเซ เชเซเชฐเชฎ เช เชจเซ เชฐเชเชจเชพ เชฌเชฆเชฒเซ เชถเชเซเช เชเซเช, เชเชฆเชพเชนเชฐเชฃ เชคเชฐเซเชเซ, เชชเซเชคเชพ เชชเชนเซเชฒเชพ เชจเชพเชธเซเชคเชพเชจเซ เชเชธเซเชกเซเชจเซ เช เชฅเชตเชพ เชเซเชธเซเชเชจเซเช เชตเชพเชเชเชจ เชเชฎเซเชฐเซเชจเซ.
"เชซเซเชฐเชตเชฐเซเชก เช เชจเซ เชเชจเซเชฒเซ เชซเซเชฐเชตเชฐเซเชก" เช เชญเชฟเชเชฎเชฎเชพเช, เชเซ เชฌเชงเซเช เชฌเชฆเชฒเซ เชถเชเชพเชฏ เชเซ เชคเซ เชซเชเซเชค เชชเชฆเซเชงเชคเชฟเชฎเชพเช เช เชฌเชฆเชฒเชพเชฏ เชเซ เชเชเซเช. เช เชตเชพเชเชเซ เชถเชเชพเชฏ เชคเซเชตเซเช เช เชจเซ เช เชธเชฐเชเชพเชฐเช เชนเซเช เชถเชเซ เชเซ เชเซเชฏเชพเชฐเซ เชคเซเชฏเชพเช เชฅเซเชกเซ เชคเชฐเซเช เชนเซเชฏ เชเซ เช เชจเซ เชคเซ เชญเชพเชเซเชฏเซ เช เชฌเชฆเชฒเชพเชฏ เชเซ, เชชเชฐเชเชคเซ เชคเซ เชเชฃเซเชตเชพเชฐ เชฆเชฐเซเช 500 เชฒเชพเชเชจเชจเซ เชญเชฏเชเชเชฐ เชชเชฆเซเชงเชคเชฟเชเชฎเชพเช เชธเชฎเชพเชชเซเชค เชฅเชพเชฏ เชเซ, เชเซเชฎเชพเช เชฐเชถเชฟเชฏเชพเชจเซ เชจเชพเชเซเชฎเชพเช เชเซเชกเชพเชตเชพ เชฎเชพเชเซ เชเชฐเซเชฐเซ เชนเซเชฏ เชคเซเชจเชพ เชเชฐเชคเชพเช เชตเชงเซ เชเซ เชจเชฟเชตเซเชฆเชจเซ เชนเซเชฏ เชเซ.
เชตเซเชฏเชพเชเซเชฏเชพ 3. เชซเซเชฐเชซเชพเชฐเซเชจเซเช เชธเซเชฅเชพเชจเชฟเชเซเชเชฐเชฃ.
เชชเซเชจเชพเชฐเชพเช เชเชฃเซเชตเชพเชฐ เชธเชฎเชเซ เชถเชเชคเชพ เชจเชฅเซ เชเซ เชคเซเช เชถเชพ เชฎเชพเชเซ เชเซเช เชฌเซเชเชพเชจเชพ เชเชชเชพเชฐเซเชเชฎเซเชจเซเชเชฎเชพเช เชเชพเชเซ เชเชฏเชพ, เช เชฅเชตเชพ เชคเซเชฎเชจเซ เชฎเซเชฌเชพเชเชฒ เชซเซเชจ เชเซเชฏเชพเช เชเซ. เชตเชฟเชเชคเชตเชพเชฐ เชฒเซเชเซเชเช เชเชฎเซเชฐเชตเชพเชจเซ เช เชธเชฎเชฏ เชเซ.
เชเชพเชฒเซ เชฐเซเชกเชตเชพเชจเซ เชชเซเชฐเชเซเชฐเชฟเชฏเชพ เชธเชพเชฅเซ เชฒเซเชเซเชเช เชถเชฐเซ เชเชฐเซเช:
class PourOperation: IOperation{
PourOperation(ILogger log /*....*/){/*...*/}
//...
void Do(){
_log.Log($"Before pour with {_hand} and {_bottle}");
//Pour business logic ...
_log.Log($"After pour with {_hand} and {_bottle}");
}
}
เชคเซเชฎเชพเช เชธเชฎเชพเชตเชฟเชทเซเช เชเชฐเซเชจเซ PourOperation, เช เชฎเซ เชเชตเชพเชฌเชฆเชพเชฐเซ เช เชจเซ เชเชจเซเชเซเชชเซเชธเซเชฏเซเชฒเซเชถเชจเชจเชพ เชฆเซเชทเซเชเชฟเชเซเชฃเชฅเซ เชธเชฎเชเชฆเชพเชฐเซเชชเซเชฐเซเชตเช เชเชพเชฎ เชเชฐเซเชฏเซเช, เชชเชฐเชเชคเซ เชนเชตเซ เช เชฎเซ เชชเชฐเชฟเชตเชฐเซเชคเชจเชถเซเชฒเชคเชพเชจเชพ เชธเชฟเชฆเซเชงเชพเชเชค เชธเชพเชฅเซ เชฎเซเชเชเชตเชฃเชฎเชพเช เชเซเช. เชเชชเชฐเซเชถเชจ เชเชชเชฐเชพเชเชค, เชเซ เชฌเชฆเชฒเชพเช เชถเชเซ เชเซ, เชฒเซเชเชฟเชเช เชชเซเชคเซ เชชเชฃ เชชเชฐเชฟเชตเชฐเซเชคเชจเชเซเชทเชฎ เชฌเชจเซ เชเซ. เชคเชฎเชพเชฐเซ เชฐเซเชกเชตเชพเชจเซ เชเชพเชฎเชเซเชฐเซ เชฎเชพเชเซ เช เชฒเช เช เชจเซ เชตเชฟเชถเชฟเชทเซเช เชฒเซเชเชฐ เชฌเชจเชพเชตเชตเซเช เชชเชกเชถเซ:
interface IPourLogger{
void LogBefore(IHand, IBottle){}
void LogAfter(IHand, IBottle){}
void OnError(IHand, IBottle, Exception){}
}
class PourOperation: IOperation{
PourOperation(IPourLogger log /*....*/){/*...*/}
//...
void Do(){
_log.LogBefore(_hand, _bottle);
try{
//... business logic
_log.LogAfter(_hand, _bottle");
}
catch(exception e){
_log.OnError(_hand, _bottle, e)
}
}
}
เชเซเชฃเชตเชเชชเซเชฐเซเชตเช เชตเชพเชเชเชจเชพเชฐ เชคเซเชจเซ เชจเซเชเชง เชฒเซเชถเซ เชฒเซเชเชเชซเซเชเชฐ, LogBefore ะธ OnError เชตเซเชฏเชเซเชคเชฟเชเชค เชฐเซเชคเซ เชชเชฃ เชฌเชฆเชฒเซ เชถเชเชพเชฏ เชเซ, เช เชจเซ, เช เชเชพเชเชจเชพ เชชเชเชฒเชพเช เชธเชพเชฅเซ เชธเชพเชฎเซเชฏเชคเชพ เชฆเซเชตเชพเชฐเชพ, เชคเซเชฐเชฃ เชตเชฐเซเชเซ เชฌเชจเชพเชตเชถเซ: PourLoggerBefore, PourLoggerAfter ะธ PourErrorLogger.
เช เชจเซ เชฏเชพเชฆ เชฐเชพเชเชตเซเช เชเซ เชชเซเชจเชพเชฐ เชฎเชพเชเซ เชคเซเชฐเชฃ เชเชชเชฐเซเชถเชจ เชเซ, เช เชฎเชจเซ เชจเชต เชฒเซเชเซเชเช เชเซเชฒเชพเชธ เชฎเชณเซ เชเซ. เชชเชฐเชฟเชฃเชพเชฎเซ, เชธเชฎเชเซเชฐ เชชเซเชตเชพเชจเชพ เชตเชฐเซเชคเซเชณเชฎเชพเช 14 (!!!) เชตเชฐเซเชเซเชจเซ เชธเชฎเชพเชตเซเชถ เชฅเชพเชฏ เชเซ.
เชนเชพเชฏเชชเชฐเชฌเซเชฒเชพ? เชญเชพเชเซเชฏเซ เช! เชตเชฟเชเชเชจ เชเชฐเชจเชพเชฐ เชเซเชฐเซเชจเซเชก เชงเชฐเชพเชตเชคเซ เชตเชพเชจเชฐ เชฎเชพเชฃเชธ "เชฐเซเชกเชจเชพเชฐ" เชจเซ เชกเชฟเชเซเชจเซเชเชฐ, เชเซเชฒเชพเชธ, เชฐเซเชกเชคเชพ เชเชชเชฐเซเชเชฐเซเชธ, เชชเชพเชฃเซ เชชเซเชฐเชตเช เชพ เชธเซเชตเชพ, เชชเชฐเชฎเชพเชฃเซเชเชจเซ เช เชฅเชกเชพเชฎเชฃเชจเซเช เชญเซเชคเชฟเช เชฎเซเชกเซเชฒเชฎเชพเช เชตเชฟเชญเชพเชเชฟเชค เชเชฐเชถเซ เช เชจเซ เชเชเชพเชฎเซ เชเซเชตเชพเชฐเซเชเชฐเชฎเชพเช เชคเซ เชจเชฟเชฐเซเชญเชฐเชคเชพเชจเซ เชฆเซเชฐ เชเชฐเชตเชพเชจเซ เชชเซเชฐเชฏเชพเชธ เชเชฐเชถเซ. เชตเซเชถเซเชตเชฟเช เชเชฒเซ. เช เชจเซ เชฎเชพเชฐเชพ เชชเชฐ เชตเชฟเชถเซเชตเชพเชธ เชเชฐเซ, เชคเซ เช เชเชเชถเซ เชจเชนเซเช.
เชคเซ เช เชธเชฎเชฏเซ เชเซ เชเซ เชเชฃเชพ เชเชตเชพ เชจเชฟเชทเซเชเชฐเซเชท เชชเชฐ เชเชตเซ เชเซ เชเซ SRP เช เชเซเชฒเชพเชฌเซ เชฐเชเชตเชพเชกเชพเชจเซ เชชเชฐเซเชเชฅเชพเช เชเซ, เช เชจเซ เชจเซเชกเชฒเซเชธ เชฐเชฎเชตเชพ เชฎเชพเชเซ เชฆเซเชฐ เชเชพเชฏ เชเซ...
... Srp เชจเซ เชคเซเชฐเซเชเซ เชตเซเชฏเชพเชเซเชฏเชพเชจเชพ เช เชธเซเชคเชฟเชคเซเชต เชตเชฟเชถเซ เชเซเชฏเชพเชฐเซเชฏ เชถเซเชเซเชฏเชพ เชตเชฟเชจเชพ:
"เชธเชฟเชเชเชฒ เชฐเชฟเชธเซเชชเซเชจเซเชธเชฟเชฌเชฟเชฒเชฟเชเซ เชธเชฟเชฆเซเชงเชพเชเชค เชเชฃเชพเชตเซ เชเซ เชเซ เชเซ เชตเชธเซเชคเซเช เชชเชฐเชฟเชตเชฐเซเชคเชจ เชเซเชตเซ เชเซ เชคเซ เชเช เชเชเซเชฏเชพเช เชธเชเชเซเชฐเชนเชฟเชค เชฅเชตเซ เชเซเชเช" เช เชฅเชตเชพ "เชเชเชธเชพเชฅเซ เชเซ เชซเซเชฐเชซเชพเชฐ เชฅเชพเชฏ เชคเซ เชเช เช เชเชเซเชฏเชพเช เชฐเชพเชเชตเชพ เชเซเชเช"
เชเชเชฒเซ เชเซ, เชเซ เชเชชเชฃเซ เชเซเช เชเชชเชฐเซเชถเชจเชจเซเช เชฒเซเชเซเชเช เชฌเชฆเชฒเซเช, เชคเซ เชเชชเชฃเซ เชคเซเชจเซ เชเช เชเชเซเชฏเชพเช เชฌเชฆเชฒเชตเซเช เชเซเชเช.
เช เชเช เชเซเชฌ เช เชฎเชนเชคเซเชตเชชเซเชฐเซเชฃ เชฎเซเชฆเซเชฆเซ เชเซ - เชเชพเชฐเชฃ เชเซ เชเชชเชฐเซเชเซเชค เชคเชฎเชพเชฎ เชเชธเชเชฐเชชเซเชจเชพ เชเซเชฒเชพเชธเชพเชเชฎเชพเช เชเชนเซเชตเชพเชฎเชพเช เชเชตเซเชฏเซเช เชเซ เชเซ เชเซเชฏเชพเชฐเซ เชชเซเชฐเชเชพเชฐเซเชจเซ เชเชเชกเซ เชฐเชนเซเชฏเชพ เชนเชคเชพ เชคเซเชฏเชพเชฐเซ เชคเซเชจเซ เชเชเชกเซ เชจเชพเชเชตเซเช เชเชฐเซเชฐเซ เชนเชคเซเช, เชเชเชฒเซ เชเซ, เชคเซเชเช เชเชฌเซเชเซเชเซเชเชจเชพ เชเชฆ เชชเชฐ "เชเชชเชฒเซ เชฎเชฐเซเชฏเชพเชฆเชพ" เชฒเชพเชฆเซ เชนเชคเซ, เช เชจเซ เชนเชตเซ เช เชฎเซ เชชเชนเซเชฒเซเชฅเซ เช "เชจเซเชเซ เชฎเชฐเซเชฏเชพเชฆเชพ" เชตเชฟเชถเซ เชตเชพเชค เชเชฐเซ เชฐเชนเซเชฏเชพ เชเซเช. เชฌเซเชเชพ เชถเชฌเซเชฆเซ เชฎเชพเช, เชเชธเชเชฐเชชเซเชจเซ เชฎเชพเชคเซเชฐ "เชเชเชกเชคเซ เชตเชเชคเซ เชเชเชกเซ เชจเชพเชเชตเซเช" เช เชเชฐเซเชฐเซ เชจเชฅเซ, เชชเชฃ เชคเซ เชตเชงเซ เชชเชกเชคเซเช เชเชฐเชตเซเช เชชเชฃ เชจเชนเซเช - "เชเชจเซเชเชฐเชฒเซเชเชฟเชเช เชตเชธเซเชคเซเชเชจเซ เชเชเชกเซ เชจเชพเชเชถเซ เชจเชนเซเช". เช Occam เชฎเชพเชคเชพเชจเซ เชฐเซเชเชฐ เช เชจเซ เชเชพเชณเชพ เชชเชพเชกเชตเชพ เชฎเชพเชฃเชธ เชตเชเซเชเซ เชฎเชนเชพเชจ เชฏเซเชฆเซเชง เชเซ!
เชนเชตเซ เชชเซเชจเชพเชฐเชจเซ เชธเชพเชฐเซเช เชฒเชพเชเชตเซเช เชเซเชเช. IPourLogger เชฒเซเชเชฐเชจเซ เชคเซเชฐเชฃ เชตเชฐเซเชเซเชฎเชพเช เชตเชฟเชญเชพเชเชฟเชค เชเชฐเชตเชพเชจเซ เชเซเช เชเชฐเซเชฐ เชจเชฅเซ เชคเซ เชเชชเชฐเชพเชเชค, เช เชฎเซ เชฌเชงเชพ เชฒเซเชเชฐเซเชธเชจเซ เชเช เชชเซเชฐเชเชพเชฐเชฎเชพเช เชเซเชกเซ เชถเชเซเช เชเซเช:
class OperationLogger{
public OperationLogger(string operationName){/*..*/}
public void LogBefore(object[] args){/*...*/}
public void LogAfter(object[] args){/*..*/}
public void LogError(object[] args, exception e){/*..*/}
}
เช เชจเซ เชเซ เชเชชเชฃเซ เชเซเชฅเชพ เชชเซเชฐเชเชพเชฐเชจเซเช เชเชชเชฐเซเชถเชจ เชเชฎเซเชฐเซเช, เชคเซ เชคเซเชจเชพ เชฎเชพเชเซ เชฒเซเชเชฟเชเช เชชเชนเซเชฒเซเชฅเซ เช เชคเซเชฏเชพเชฐ เชเซ. เช เชจเซ เชเชพเชฎเชเซเชฐเซเชจเซ เชเซเชก เชชเซเชคเซ เชธเซเชตเชเซเช เช เชจเซ เชเชจเซเชซเซเชฐเชพเชธเซเชเซเชฐเชเซเชเชฐ เช เชตเชพเชเชฅเซ เชฎเซเชเซเชค เชเซ.
เชชเชฐเชฟเชฃเชพเชฎเซ, เช เชฎเชพเชฐเซ เชชเชพเชธเซ เชชเซเชตเชพเชจเซ เชธเชฎเชธเซเชฏเชพ เชนเชฒ เชเชฐเชตเชพ เชฎเชพเชเซ 5 เชตเชฐเซเชเซ เชเซ:
- เชฐเซเชกเชตเชพเชจเซ เชเชพเชฎเชเซเชฐเซ
- เชชเซเชตเชพเชจเซเช เชเชชเชฐเซเชถเชจ
- เชเชพเชฎเชฟเชเช เชเชชเชฐเซเชถเชจ
- เชฒเซเชเชฐ
- เชชเซเชจเชพเชฐ เชฐเชตเซเชถ
เชคเซเชฎเชพเชเชจเชพ เชฆเชฐเซเช เชเช เชเชพเชฐเซเชฏเชเซเชทเชฎเชคเชพ เชฎเชพเชเซ เชธเชเชค เชฐเซเชคเซ เชเชตเชพเชฌเชฆเชพเชฐ เชเซ เช เชจเซ เชฌเชฆเชฒเชพเชตเชจเซเช เชเช เชเชพเชฐเชฃ เชเซ. เชชเชฐเชฟเชตเชฐเซเชคเชจ เชธเชฎเชพเชจ เชคเชฎเชพเชฎ เชจเชฟเชฏเชฎเซ เชจเชเซเชเชฎเชพเช เชธเซเชฅเชฟเชค เชเซ.
เชตเชพเชธเซเชคเชตเชฟเช เชเซเชตเชจ เชเชฆเชพเชนเชฐเชฃ
เช เชฎเซ เชเชเชตเชพเชฐ b2b เชเซเชฒเชพเชฏเชเชเชจเซ เชเชชเชฎเซเชณเซ เชฐเชเซเชธเซเชเชฐ เชเชฐเชตเชพ เชฎเชพเชเซ เชธเซเชตเชพ เชฒเชเซ เชนเชคเซ. เช เชจเซ เชธเชฎเชพเชจ เชธเชพเชฎเชเซเชฐเซเชจเซ 200 เชฒเซเชเซเช เชฎเชพเชเซ เชญเชเชตเชพเชจ เชชเชฆเซเชงเชคเชฟ เชฆเซเชเชพเช:
- 1C เชชเชฐ เชเชพเช เช เชจเซ เชเชเชพเชเชจเซเช เชฌเชจเชพเชตเซ
- เช เชเชเชพเชเชจเซเช เชธเชพเชฅเซ, เชชเซเชฎเซเชจเซเช เชฎเซเชกเซเชฏเซเชฒ เชชเชฐ เชเชพเช เช เชจเซ เชคเซเชจเซ เชคเซเชฏเชพเช เชฌเชจเชพเชตเซ
- เชคเชชเชพเชธเซ เชเซ เชเชตเชพ เชเชเชพเชเชจเซเช เชธเชพเชฅเซเชจเซเช เชเชเชพเชเชจเซเช เชฎเซเชเซเชฏ เชธเชฐเซเชตเชฐ เชชเชฐ เชฌเชจเชพเชตเชตเชพเชฎเชพเช เชเชตเซเชฏเซเช เชจเชฅเซ
- เชจเชตเซเช เชเชพเชคเซเช เชฌเชจเชพเชตเซ
- เชเซเชเชตเชฃเซ เชฎเซเชกเซเชฏเซเชฒเชฎเชพเช เชจเซเชเชงเชฃเซ เชชเชฐเชฟเชฃเชพเชฎเซ เช เชจเซ เชจเซเชเชงเชฃเซ เชชเชฐเชฟเชฃเชพเชฎเซ เชธเซเชตเชพเชฎเชพเช 1c เชจเชเชฌเชฐ เชเชฎเซเชฐเซ
- เช เชเซเชทเซเชเชเชฎเชพเช เชเชเชพเชเชจเซเช เชฎเชพเชนเชฟเชคเซ เชเชฎเซเชฐเซ
- เชชเซเชเชจเซเช เชธเชฐเซเชตเชฟเชธเชฎเชพเช เช เชเซเชฒเชพเชฏเชจเซเช เชฎเชพเชเซ เชชเซเชเชจเซเช เชจเชเชฌเชฐ เชฌเชจเชพเชตเซ. เช เชธเซเชตเชพเชฎเชพเช เชคเชฎเชพเชฐเซ 1c เชเชเชพเชเชจเซเช เชจเชเชฌเชฐ เชเชชเซ.
เช เชจเซ เช เชธเซเชเชฟเชฎเชพเช เชญเชฏเชเชเชฐ เชเชจเซเชเซเชเชฟเชตเชฟเชเซ เชธเชพเชฅเซ เชฒเชเชญเช 10 เชตเชงเซ เชตเซเชฏเชตเชธเชพเชฏเชฟเช เชเชพเชฎเชเซเชฐเซเช เชนเชคเซ. เชฒเชเชญเช เชฆเชฐเซเชเชจเซ เชเชเชพเชเชจเซเช เชเชฌเซเชเซเชเซเชเชจเซ เชเชฐเซเชฐ เชนเชคเซ. เช เชกเชงเชพ เชเซเชฒเชฎเชพเช เชฌเชฟเชเชฆเซ ID เช เชจเซ เชเซเชฒเชพเชฏเชเชเชจเซเช เชจเชพเชฎ เชเชฐเซเชฐเซ เชนเชคเซเช.
เชฐเชฟเชซเซเชเซเชเชฐเชฟเชเชเชจเชพ เชเช เชเชฒเชพเช เชชเชเซ, เช เชฎเซ เชเชจเซเชซเซเชฐเชพเชธเซเชเซเชฐเชเซเชเชฐ เชเซเชก เช เชจเซ เชเชเชพเชเชจเซเช เชธเชพเชฅเซ เชเชพเชฎ เชเชฐเชตเชพเชจเซ เชเซเชเชฒเซเช เชเซเชเชเชพเชเชจเซ เช เชฒเช เชชเชฆเซเชงเชคเชฟเช/เชตเชฐเซเชเซเชฎเชพเช เช เชฒเช เชเชฐเชตเชพเชฎเชพเช เชธเชเซเชทเชฎ เชฅเชฏเชพ. เชญเชเชตเชพเชจ เชชเชฆเซเชงเชคเชฟเช เชคเซเชจเซ เชธเชฐเชณ เชฌเชจเชพเชตเซเชฏเซเช, เชชเชฐเชเชคเซ เชเซเชกเชจเซ 100 เชฒเซเชเซเช เชฌเชพเชเซ เชนเชคเซ เชเซ เชซเชเซเชค เชเซเชเชเชตเชฃเชฎเชพเช เชฎเซเชเชตเชพ เชฎเชพเชเชเชคเชพ เชจ เชนเชคเชพ.
เชฅเซเชกเชพ เชฆเชฟเชตเชธเซ เชชเชเซ เช เชคเซ เชธเซเชชเชทเซเช เชฅเช เชเชฏเซเช เชเซ เช "เชนเชณเชตเชพ" เชชเชฆเซเชงเชคเชฟเชจเซ เชธเชพเชฐ เช เชเช เชตเซเชฏเชตเชธเชพเชฏ เช เชฒเซเชเซเชฐเชฟเชงเชฎเชจเซ เชเซ. เช เชจเซ เชคเซ เชเซ เชคเชเชจเซเชเซ เชตเชฟเชถเชฟเชทเซเชเชคเชพเชเชจเซเช เชฎเซเชณ เชตเชฐเซเชฃเชจ เชเซเชฌ เชเชเชฟเชฒ เชนเชคเซเช. เช เชจเซ เช เชชเชฆเซเชงเชคเชฟเชจเซ เชเซเชเชกเชพเชเชฎเชพเช เชคเซเชกเซ เชจเชพเชเชตเชพเชจเซ เชชเซเชฐเชฏเชพเชธ เชเซ เชเซ SRPเชจเซเช เชเชฒเซเชฒเชเชเชจ เชเชฐเชถเซ, เช เชจเซ เชเชฒเชเซเช เชจเชนเซเช.
เชเชชเชเชพเชฐเชฟเชเชคเชพ.
เชเชชเชฃเชพ เชจเชถเชพเชจเซ เชเชเชฒเชพ เชเซเชกเซ เชฆเซเชตเชพเชจเซ เชธเชฎเชฏ เชเชตเซ เชเชฏเซ เชเซ. เชคเชฎเชพเชฐเชพ เชเชเชธเซ เชธเซเชเชพเชตเซ - เช เชฎเซ เชเซเชเซเชเชธเชชเชฃเซ เชเซเช เชฆเชฟเชตเชธ เชคเซเชจเชพ เชชเชฐ เชชเชพเชเชพ เชเชตเซเชถเซเช. เชนเชตเซ เช เชฒเซเชเชฎเชพเชเชฅเซ เชเซเชเชพเชจเชจเซ เชเชชเชเชพเชฐเชฟเช เชฌเชจเชพเชตเซเช.
เชเชชเชเชพเชฐเชฟเชเชคเชพ 1. SRP เชจเซ เชตเซเชฏเชพเชเซเชฏเชพ
- เชคเชคเซเชตเซเชจเซ เช เชฒเช เชเชฐเซ เชเซเชฅเซ เชคเซเชฎเชพเชเชฅเซ เชฆเชฐเซเช เชเช เชตเชธเซเชคเซ เชฎเชพเชเซ เชเชตเชพเชฌเชฆเชพเชฐ เชนเซเชฏ.
- เชเชตเชพเชฌเชฆเชพเชฐเซเชจเซ เช เชฐเซเชฅ "เชฌเชฆเชฒเชตเชพเชจเซเช เชเชพเชฐเชฃ" เชเซ. เชเชเชฒเซ เชเซ, เชตเซเชฏเชตเชธเชพเชฏเชจเชพ เชคเชฐเซเชเชจเซ เชฆเซเชฐเชทเซเชเชฟเช, เชฆเชฐเซเช เชคเชคเซเชตเชฎเชพเช เชชเชฐเชฟเชตเชฐเซเชคเชจ เชฎเชพเชเซ เชฎเชพเชคเซเชฐ เชเช เช เชเชพเชฐเชฃ เชเซ.
- เชตเซเชฏเชตเชธเชพเชฏเชจเชพ เชคเชฐเซเชเชฎเชพเช เชธเชเชญเชตเชฟเชค เชซเซเชฐเชซเชพเชฐเซ. เชธเซเชฅเชพเชจเชฟเช เชนเซเชตเซเช เชเซเชเช. เชธเชฎเชเชพเชฒเซเชจ เชฐเซเชคเซ เชฌเชฆเชฒเชพเชคเชพ เชคเชคเซเชตเซ เชจเชเซเชเชจเชพ เชนเซเชตเชพ เชเซเชเช.
เชเชชเชเชพเชฐเชฟเชเชคเชพ 2. เชเชฐเซเชฐเซ เชธเซเชต-เชชเชฐเซเชเซเชทเชฃ เชฎเชพเชชเชฆเชเชก.
SRP เชจเซ เชชเชฐเชฟเชชเซเชฐเซเชฃ เชเชฐเชตเชพ เชฎเชพเชเซ เชฎเซเช เชชเซเชฐเชคเชพ เชฎเชพเชชเชฆเชเชก เชเซเชฏเชพ เชจเชฅเซ. เชชเชฐเชเชคเซ เชคเซเชฏเชพเช เชเชฐเซเชฐเซ เชถเชฐเชคเซ เชเซ:
1) เชคเชฎเชพเชฐเซ เชเชพเชคเชจเซ เชชเซเชเซ เชเซ เช เชตเชฐเซเช/เชชเชฆเซเชงเชคเชฟ/เชฎเซเชกเซเชฏเซเชฒ/เชธเซเชตเชพ เชถเซเช เชเชฐเซ เชเซ. เชคเชฎเชพเชฐเซ เชคเซเชจเซ เชธเชฐเชณ เชตเซเชฏเชพเชเซเชฏเชพ เชธเชพเชฅเซ เชเชตเชพเชฌ เชเชชเชตเซ เชเซเชเช. ( เชเชญเชพเชฐ
เชธเซเชชเชทเซเชเชคเชพ
เชเซ เชเซ, เชเซเชเชฒเซเชเชตเชพเชฐ เชธเชฐเชณ เชตเซเชฏเชพเชเซเชฏเชพ เชถเซเชงเชตเชพเชจเซเช เชเซเชฌ เชฎเซเชถเซเชเซเชฒ เชเซ
2) เชญเซเชฒเชจเซ เช เซเช เชเชฐเชตเซ เช เชฅเชตเชพ เชจเชตเซ เชธเซเชตเชฟเชงเชพ เชเชฎเซเชฐเชตเชพเชฅเซ เชซเชพเชเชฒเซ/เชตเชฐเซเชเซเชจเซ เชจเซเชฏเซเชจเชคเชฎ เชธเชเชเซเชฏเชพเชจเซ เช เชธเชฐ เชฅเชพเชฏ เชเซ. เชเชฆเชฐเซเชถ เชฐเซเชคเซ - เชเช.
เชธเซเชชเชทเซเชเชคเชพ
เชเชตเชพเชฌเชฆเชพเชฐเซ (เชธเซเชตเชฟเชงเชพ เช เชฅเชตเชพ เชฌเช เชฎเชพเชเซ) เชเช เชซเชพเชเชฒ/เชตเชฐเซเชเชฎเชพเช เชธเชฎเชพเชตเชฟเชทเซเช เชนเซเชตเชพเชฅเซ, เชคเชฎเซ เชฌเชฐเชพเชฌเชฐ เชเชพเชฃเซ เชเซ เชเซ เชเซเชฏเชพเช เชเซเชตเซเช เช เชจเซ เชถเซเช เชธเชเชชเชพเชฆเชฟเชค เชเชฐเชตเซเช. เชเชฆเชพเชนเชฐเชฃ เชคเชฐเซเชเซ: เชฒเซเชเชฟเชเช เชเชชเชฐเซเชถเชจเซเชธเชจเชพ เชเชเชเชชเซเชเชจเซ เชฌเชฆเชฒเชตเชพเชจเซ เชธเซเชตเชฟเชงเชพ เชฎเชพเชเซ เชฎเชพเชคเซเชฐ เชฒเซเชเชฐ เชฌเชฆเชฒเชตเชพเชจเซ เชเชฐเซเชฐ เชชเชกเชถเซ. เชฌเชพเชเซเชจเชพ เชเซเชกเชจเซ เชเชฒเชพเชตเชตเชพเชจเซ เชเชฐเซเชฐ เชจเชฅเซ.
เชฌเซเชเซเช เชเชฆเชพเชนเชฐเชฃ เช เชเช เชจเชตเซเช UI เชเชเชเซเชฐเซเชฒ เชเชฎเซเชฐเชตเชพเชจเซเช เชเซ, เชเซ เช เชเชพเชเชจเชพ เชฒเซเชเซ เชเซเชตเซเช เช เชเซ. เชเซ เช เชคเชฎเชจเซ 10 เช เชฒเช เช เชฒเช เชเชจเซเชเชฟเชเซ เช เชจเซ 15 เช เชฒเช เชเชจเซเชตเชฐเซเชเชฐ เชเชฎเซเชฐเชตเชพ เชฆเชฌเชพเชฃ เชเชฐเซ เชเซ, เชคเซ เชเชตเซเช เชฒเชพเชเซ เชเซ เชเซ เชคเชฎเซ เชคเซเชจเซ เชตเชงเชพเชฐเซ เชเชฐเซ เชฐเชนเซเชฏเชพเช เชเซ.
3) เชเซ เชเชฃเชพ เชตเชฟเชเชพเชธเชเชฐเซเชคเชพเช เชคเชฎเชพเชฐเชพ เชชเซเชฐเซเชเซเชเซเชเชจเซ เชตเชฟเชตเชฟเชง เชธเซเชตเชฟเชงเชพเช เชชเชฐ เชเชพเชฎ เชเชฐเซ เชฐเชนเซเชฏเชพ เชนเซเชฏ, เชคเซ เชฎเชฐเซเช เชธเชเชเชฐเซเชทเชจเซ เชธเชเชญเชพเชตเชจเชพ, เชเชเชฒเซ เชเซ, เชเช เช เชธเชฎเชฏเซ เชเชฃเชพ เชตเชฟเชเชพเชธเชเชฐเซเชคเชพเช เชฆเซเชตเชพเชฐเชพ เชธเชฎเชพเชจ เชซเชพเชเชฒ/เชเซเชฒเชพเชธ เชฌเชฆเชฒเชตเชพเชจเซ เชธเชเชญเชพเชตเชจเชพ เชจเซเชฏเซเชจเชคเชฎ เชเซ.
เชธเซเชชเชทเซเชเชคเชพ
เชเซ, เชเซเชฏเชพเชฐเซ เชจเชตเซเช เชเชชเชฐเซเชถเชจ โเชชเซเชฐ เชตเซเชกเชเชพ เช เชจเซเชกเชฐ เชง เชเซเชฌเชฒโ เชเชฎเซเชฐเซ เชฐเชนเซเชฏเชพ เชนเซเชฏ, เชคเซ เชคเชฎเชพเชฐเซ เชฒเซเชเชฐเชจเซ เชธเซเชชเชฐเซเชถ เชเชฐเชตเชพเชจเซ เชเชฐเซเชฐ เชเซ, เชชเซเชตเชพเชจเซเช เช เชจเซ เชฐเซเชกเชตเชพเชจเซเช เชเชชเชฐเซเชถเชจ, เชคเซ เชเชตเซเช เชฒเชพเชเซ เชเซ เชเซ เชเชตเชพเชฌเชฆเชพเชฐเซเช เชเซเชเชฟเชฒ เชฐเซเชคเซ เชตเชนเซเชเชเชพเชฏเซเชฒเซ เชเซ. เช เชฒเชฌเชคเซเชค, เช เชนเชเชฎเซเชถเชพ เชถเชเซเชฏ เชจเชฅเซ, เชชเชฐเชเชคเซ เชเชชเชฃเซ เช เชเชเชเชกเซ เชเชเชพเชกเชตเชพเชจเซ เชชเซเชฐเชฏเชพเชธ เชเชฐเชตเซ เชเซเชเช.
4) เชเซเชฏเชพเชฐเซ เชฌเชฟเชเชจเซเชธ เชฒเซเชเชฟเช (เชตเชฟเชเชพเชธเชเชฐเซเชคเชพ เช เชฅเชตเชพ เชฎเซเชจเซเชเชฐ เชคเชฐเชซเชฅเซ) เชตเชฟเชถเซ เชธเซเชชเชทเซเชเชคเชพ เชเชฐเชคเซ เชชเซเชฐเชถเซเชจ เชชเซเชเชตเชพเชฎเชพเช เชเชตเซ, เชคเซเชฏเชพเชฐเซ เชคเชฎเซ เชธเชเชค เชฐเซเชคเซ เชเช เชตเชฐเซเช/เชซเชพเชเชฒเชฎเชพเช เชเชพเชต เช เชจเซ เชคเซเชฏเชพเชเชฅเซ เช เชฎเชพเชนเชฟเชคเซ เชฎเซเชณเชตเซ.
เชธเซเชชเชทเซเชเชคเชพ
เชธเซเชตเชฟเชงเชพเช, เชจเชฟเชฏเชฎเซ เช เชฅเชตเชพ เช เชฒเซเชเซเชฐเชฟเชงเชฎเซเชธ เชธเชเชจ เชฐเซเชคเซ เชฒเชเชตเชพเชฎเชพเช เชเชตเซ เชเซ, เชฆเชฐเซเช เชเช เชเชเซเชฏเชพเช, เช เชจเซ เชธเชฎเชเซเชฐ เชเซเชก เชธเซเชชเซเชธเชฎเชพเช เชซเซเชฒเซเชเซเชธ เชธเชพเชฅเซ เชตเชฟเชเซเชฐเชพเชฏเซเชฒเชพ เชจเชฅเซ.
5) เชจเชพเชฎเชเชฐเชฃ เชธเซเชชเชทเซเช เชเซ.
เชธเซเชชเชทเซเชเชคเชพ
เชเชชเชฃเซ เชตเชฐเซเช เช เชฅเชตเชพ เชชเชฆเซเชงเชคเชฟ เชเช เชตเชธเซเชคเซ เชฎเชพเชเซ เชเชตเชพเชฌเชฆเชพเชฐ เชเซ, เช เชจเซ เชเชตเชพเชฌเชฆเชพเชฐเซ เชคเซเชจเชพ เชจเชพเชฎเชฎเชพเช เชชเซเชฐเชคเชฟเชฌเชฟเชเชฌเชฟเชค เชฅเชพเชฏ เชเซ
AllManagersManagerService - เชธเชเชญเชตเชคเช เชญเชเชตเชพเชจ เชตเชฐเซเช
เชธเซเชฅเชพเชจเชฟเช เชเซเชเชตเชฃเซ - เชเชฆเชพเช เชจเชนเซเช
เชเชชเชเชพเชฐเชฟเชเชคเชพ 3. เชเชเซเชฎ-เชชเซเชฐเชฅเชฎ เชตเชฟเชเชพเชธ เชชเชฆเซเชงเชคเชฟ.
เชกเชฟเชเชพเชเชจเชจเซ เชถเชฐเซเชเชคเชฎเชพเช, เชตเชพเชจเชฐ เชฎเชพเชฃเชธ เชเชพเชฃเชคเซ เชจเชฅเซ เช เชจเซ เชธเชฎเชธเซเชฏเชพ เชนเชฒ เชเชฐเชตเชพเชฎเชพเช เชเชตเชคเซ เชคเชฎเชพเชฎ เชธเซเชเซเชทเซเชฎเชคเชพเชจเซ เช เชจเซเชญเชตเชคเซ เชจเชฅเซ เช เชจเซ เชคเซ เชญเซเชฒ เชเชฐเซ เชถเชเซ เชเซ. เชคเชฎเซ เชตเชฟเชตเชฟเชง เชฐเซเชคเซ เชญเซเชฒเซ เชเชฐเซ เชถเชเซ เชเซ:
- เชตเชฟเชตเชฟเชง เชเชตเชพเชฌเชฆเชพเชฐเซเชเชจเซ เชฎเชฐเซเช เชเชฐเซเชจเซ เชตเชธเซเชคเซเชเชจเซ เชเซเชฌ เชฎเซเชเซ เชฌเชจเชพเชตเซ
- เชเช เช เชเชตเชพเชฌเชฆเชพเชฐเซเชจเซ เชเชฃเชพเช เชตเชฟเชตเชฟเชง เชชเซเชฐเชเชพเชฐเซเชฎเชพเช เชตเชฟเชญเชพเชเซเชค เชเชฐเซเชจเซ เชฐเชฟเชซเซเชฐเซเชฎเชฟเชเช
- เชเชตเชพเชฌเชฆเชพเชฐเซเชจเซ เชธเซเชฎเชพเชเชจเซ เชเซเชเซ เชฐเซเชคเซ เชตเซเชฏเชพเชเซเชฏเชพเชฏเชฟเชค เชเชฐเซ
เช เชจเชฟเชฏเชฎ เชฏเชพเชฆ เชฐเชพเชเชตเซเช เช เชเชคเซเชฏเชจเซเช เชเซ: "เชฎเซเชเซ เชญเซเชฒ เชเชฐเชตเซ เชตเชงเซ เชธเชพเชฐเซเช เชเซ," เช เชฅเชตเชพ "เชเซ เชคเชฎเชจเซ เชเชพเชคเชฐเซ เชจ เชนเซเชฏ, เชคเซ เชคเซเชจเซ เชตเชฟเชญเชพเชเชฟเชค เชเชฐเชถเซ เชจเชนเซเช." เชเซ, เชเชฆเชพเชนเชฐเชฃ เชคเชฐเซเชเซ, เชคเชฎเชพเชฐเชพ เชตเชฐเซเชเชฎเชพเช เชฌเซ เชเชตเชพเชฌเชฆเชพเชฐเซเช เชเซ, เชคเซ เชคเซ เชนเชเซ เชชเชฃ เชธเชฎเชเซ เชถเชเชพเชฏ เชคเซเชตเซเช เชเซ เช เชจเซ เชเซเชฒเชพเชฏเชเช เชเซเชกเชฎเชพเช เชจเซเชฏเซเชจเชคเชฎ เชซเซเชฐเชซเชพเชฐเซ เชธเชพเชฅเซ เชฌเซ เชญเชพเชเชฎเชพเช เชตเชฟเชญเชพเชเชฟเชค เชเชฐเซ เชถเชเชพเชฏ เชเซ. เชธเชเชฆเชฐเซเชญ เชเชฃเซ เชซเชพเชเชฒเซเชฎเชพเช เชซเซเชฒเชพเชฏเซเชฒเซ เชนเซเชตเชพเชจเซ เชเชพเชฐเชฃเซ เช เชจเซ เชเซเชฒเชพเชฏเชเช เชเซเชกเชฎเชพเช เชเชฐเซเชฐเซ เชจเชฟเชฐเซเชญเชฐเชคเชพเชจเชพ เช เชญเชพเชตเชจเซ เชเชพเชฐเชฃเซ เชเชพเชเชจเชพ เชเซเชเชกเชพเชเชฎเชพเชเชฅเซ เชเซเชฒเชพเชธ เชเชธเซเชฎเซเชฌเชฒ เชเชฐเชตเซเช เชธเชพเชฎเชพเชจเซเชฏ เชฐเซเชคเซ เชตเชงเซ เชฎเซเชถเซเชเซเชฒ เชเซ.
เชคเซเชจเซ เชเช เชฆเชฟเชตเชธ เชเชนเซเชตเชพเชจเซ เชธเชฎเชฏ เชเซ
SRP เชจเซ เช เชตเชเชพเชถ OOP เช เชจเซ SOLID เชชเซเชฐเชคเซ เชฎเชฐเซเชฏเชพเชฆเชฟเชค เชจเชฅเซ. เชคเซ เชชเชฆเซเชงเชคเชฟเช, เชเชพเชฐเซเชฏเซ, เชตเชฐเซเชเซ, เชฎเซเชกเซเชฏเซเชฒเซ, เชฎเชพเชเชเซเชฐเซเชธเซเชตเชพเช เช เชจเซ เชธเซเชตเชพเชเชจเซ เชฒเชพเชเซ เชชเชกเซ เชเซ. เชคเซ โเชซเชฟเชเซเชเซเชธ-เชซเชฟเชเซเชเซเชธ-เช เชจเซ-เชชเซเชฐเซเชกโ เช เชจเซ โเชฐเซเชเซเช-เชธเชพเชฏเชจเซเชธโ เชตเชฟเชเชพเชธ เชฌเชเชจเซเชจเซ เชฒเชพเชเซ เชชเชกเซ เชเซ, เชเซ เชตเชฟเชถเซเชตเชจเซ เชฆเชฐเซเช เชเชเซเชฏเชพเช เชฅเซเชกเซเช เชธเชพเชฐเซเช เชฌเชจเชพเชตเซ เชเซ. เชเซ เชคเชฎเซ เชคเซเชจเชพ เชตเชฟเชถเซ เชตเชฟเชเชพเชฐเซ, เชคเซ เช เชฒเชเชญเช เชคเชฎเชพเชฎ เชเชจเซเชเชฟเชจเชฟเชฏเชฐเชฟเชเชเชจเซ เชฎเซเชณเชญเซเชค เชธเชฟเชฆเซเชงเชพเชเชค เชเซ. เชฎเชฟเชเซเชจเชฟเชเชฒ เชเชจเซเชเชฟเชจเชฟเชฏเชฐเชฟเชเช, เชเชเชเซเชฐเซเชฒ เชธเชฟเชธเซเชเชฎเซเชธ เช เชจเซ เชเชฐเซเชเชฐ เชคเชฎเชพเชฎ เชเชเชฟเชฒ เชธเชฟเชธเซเชเชฎเซ เชเชเชเซเชฎเชพเชเชฅเซ เชฌเชจเซเชฒเซ เชเซ, เช เชจเซ "เช เชเชกเชฐเชซเซเชฐเซเชเชฎเซเชจเซเชเซเชถเชจ" เชกเชฟเชเชพเชเชจเชฐเซเชธเชจเซ เชฒเชตเชเซเชเชคเชพเชฅเซ เชตเชเชเชฟเชค เชเชฐเซ เชเซ, "เชเชตเชฐเชซเซเชฐเซเชเชฎเซเชจเซเชเซเชถเชจ" เชกเชฟเชเชพเชเชจเชฐเซเชธเชจเซ เชเชพเชฐเซเชฏเชเซเชทเชฎเชคเชพเชฅเซ เชตเชเชเชฟเชค เชเชฐเซ เชเซ, เช เชจเซ เชเซเชเซ เชธเซเชฎเชพเช เชคเซเชฎเชจเซ เชเชพเชฐเชฃ เช เชจเซ เชฎเชพเชจเชธเชฟเช เชถเชพเชเชคเชฟเชฅเซ เชตเชเชเชฟเชค เชเชฐเซ เชเซ.
SRP เชชเซเชฐเชเซเชคเชฟ เชฆเซเชตเชพเชฐเชพ เชถเซเชงเชพเชฏเซเชฒ เชจเชฅเซ เช เชจเซ เชคเซ เชเซเชเซเชเชธ เชตเชฟเชเซเชเชพเชจเชจเซ เชญเชพเช เชจเชฅเซ. เชคเซ เชเชชเชฃเซ เชเซเชตเชฟเช เช เชจเซ เชฎเชจเซเชตเซเชเซเชเชพเชจเชฟเช เชฎเชฐเซเชฏเชพเชฆเชพเชเชฎเชพเชเชฅเซ เชฌเชนเชพเชฐ เชจเซเชเชณเซ เชเชพเชฏ เชเซ. เชคเซ เชฎเชพเชคเซเชฐ เชเชช-เชฎเซเชจ เชฎเชเชเชจเซ เชเชชเชฏเซเช เชเชฐเซเชจเซ เชเชเชฟเชฒ เชชเซเชฐเชฃเชพเชฒเซเชเชจเซ เชจเชฟเชฏเชเชคเซเชฐเชฟเชค เช เชจเซ เชตเชฟเชเชธเชพเชตเชตเชพเชจเซ เชเช เชฎเชพเชฐเซเช เชเซ. เชคเซ เช เชฎเชจเซ เชเชนเซ เชเซ เชเซ เชธเชฟเชธเซเชเชฎ เชเซเชตเซ เชฐเซเชคเซ เชตเชฟเชเชเชฟเชค เชเชฐเชตเซ. เชฎเซเชณ เชซเซเชฐเซเชฎเซเชฏเซเชฒเซเชถเชจ เชฎเชพเชเซ เชตเชพเชเชฌเซ เชฎเชพเชคเซเชฐเชพเชฎเชพเช เชเซเชฒเชฟเชชเซเชฅเซเชจเซ เชเชฐเซเชฐ เชนเชคเซ, เชชเชฐเชเชคเซ เชนเซเช เชเชถเชพ เชฐเชพเชเซเช เชเซเช เชเซ เช เชฒเซเช เชธเซเชฎเซเชเชธเซเชเซเชฐเซเชจเชฎเชพเชเชฅเซ เชเซเชเชฒเชพเชเชจเซ เชธเชพเชซ เชเชฐเชถเซ.
เชธเซเชฐเซเชธ: www.habr.com