แƒ”แƒ แƒ—แƒ˜แƒแƒœแƒ˜ แƒžแƒแƒกแƒฃแƒฎแƒ˜แƒกแƒ›แƒ’แƒ”แƒ‘แƒšแƒแƒ‘แƒ˜แƒก แƒžแƒ แƒ˜แƒœแƒชแƒ˜แƒžแƒ˜. แƒแƒ แƒช แƒ˜แƒกแƒ” แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜, แƒ แƒแƒ’แƒแƒ แƒช แƒฉแƒแƒœแƒก

แƒ”แƒ แƒ—แƒ˜แƒแƒœแƒ˜ แƒžแƒแƒกแƒฃแƒฎแƒ˜แƒกแƒ›แƒ’แƒ”แƒ‘แƒšแƒแƒ‘แƒ˜แƒก แƒžแƒ แƒ˜แƒœแƒชแƒ˜แƒžแƒ˜. แƒแƒ แƒช แƒ˜แƒกแƒ” แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜, แƒ แƒแƒ’แƒแƒ แƒช แƒฉแƒแƒœแƒก แƒ”แƒ แƒ—แƒ˜แƒแƒœแƒ˜ แƒžแƒแƒกแƒฃแƒฎแƒ˜แƒกแƒ›แƒ’แƒ”แƒ‘แƒšแƒแƒ‘แƒ˜แƒก แƒžแƒ แƒ˜แƒœแƒชแƒ˜แƒžแƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒแƒกแƒ”แƒ•แƒ” แƒชแƒœแƒแƒ‘แƒ˜แƒšแƒ˜แƒ แƒ แƒแƒ’แƒแƒ แƒช แƒ”แƒ แƒ—แƒ˜แƒแƒœแƒ˜ แƒžแƒแƒกแƒฃแƒฎแƒ˜แƒกแƒ›แƒ’แƒ”แƒ‘แƒšแƒแƒ‘แƒ˜แƒก แƒžแƒ แƒ˜แƒœแƒชแƒ˜แƒžแƒ˜,
แƒแƒ™แƒ แƒ”แƒ แƒ—แƒ˜แƒแƒœแƒ˜ แƒชแƒ•แƒแƒšแƒ”แƒ‘แƒแƒ“แƒแƒ‘แƒ˜แƒก แƒžแƒ แƒ˜แƒœแƒชแƒ˜แƒžแƒ˜ - แƒฃแƒ™แƒ˜แƒ“แƒฃแƒ แƒ”แƒกแƒแƒ“ แƒ›แƒแƒšแƒ˜แƒžแƒฃแƒš แƒ‘แƒ˜แƒญแƒก แƒ’แƒแƒกแƒแƒ’แƒ”แƒ‘แƒแƒ“ แƒ“แƒ แƒแƒกแƒ”แƒ—แƒ˜ แƒœแƒ”แƒ แƒ•แƒ˜แƒฃแƒšแƒ˜ แƒ™แƒ˜แƒ—แƒฎแƒ•แƒ แƒžแƒ แƒแƒ’แƒ แƒแƒ›แƒ˜แƒกแƒขแƒ˜แƒก แƒ˜แƒœแƒขแƒ”แƒ แƒ•แƒ˜แƒฃแƒ–แƒ”.

แƒฉแƒ”แƒ›แƒ˜ แƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒ˜ แƒกแƒ”แƒ แƒ˜แƒแƒ–แƒฃแƒšแƒ˜ แƒ’แƒแƒชแƒœแƒแƒ‘แƒ แƒแƒ› แƒžแƒ แƒ˜แƒœแƒชแƒ˜แƒžแƒ—แƒแƒœ แƒ›แƒแƒฎแƒ“แƒ แƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒ˜ แƒ™แƒฃแƒ แƒกแƒ˜แƒก แƒ“แƒแƒกแƒแƒฌแƒงแƒ˜แƒกแƒจแƒ˜, แƒ แƒแƒชแƒ แƒแƒฎแƒแƒšแƒ’แƒแƒ–แƒ แƒ“แƒ”แƒ‘แƒ˜ แƒ“แƒ แƒ›แƒฌแƒ•แƒแƒœแƒ”แƒ”แƒ‘แƒ˜ แƒขแƒงแƒ”แƒจแƒ˜ แƒฌแƒแƒ˜แƒงแƒ•แƒแƒœแƒ”แƒก, แƒ แƒแƒ—แƒ แƒšแƒแƒ แƒ•แƒ”แƒ‘แƒ˜แƒกแƒ’แƒแƒœ แƒกแƒขแƒฃแƒ“แƒ”แƒœแƒขแƒ”แƒ‘แƒ˜ - แƒœแƒแƒ›แƒ“แƒ•แƒ˜แƒšแƒ˜ แƒกแƒขแƒฃแƒ“แƒ”แƒœแƒขแƒ”แƒ‘แƒ˜ แƒ’แƒแƒ”แƒ™แƒ”แƒ—แƒ”แƒ‘แƒ˜แƒœแƒแƒ—.

แƒขแƒงแƒ”แƒจแƒ˜ แƒ“แƒแƒ•แƒงแƒแƒ•แƒ˜แƒ— 8-9 แƒ™แƒแƒชแƒ˜แƒแƒœ แƒฏแƒ’แƒฃแƒคแƒ”แƒ‘แƒแƒ“ แƒ“แƒ แƒฉแƒแƒ•แƒแƒขแƒแƒ แƒ”แƒ— แƒจแƒ”แƒฏแƒ˜แƒ‘แƒ แƒ˜ - แƒ แƒแƒ›แƒ”แƒšแƒ˜ แƒฏแƒ’แƒฃแƒคแƒ˜ แƒ“แƒแƒšแƒ”แƒ•แƒ“แƒ แƒ”แƒ แƒ— แƒ‘แƒแƒ—แƒš แƒแƒ แƒแƒงแƒก แƒงแƒ•แƒ”แƒšแƒแƒ–แƒ” แƒกแƒฌแƒ แƒแƒคแƒแƒ“, แƒ˜แƒ› แƒžแƒ˜แƒ แƒแƒ‘แƒ˜แƒ—, แƒ แƒแƒ› แƒฏแƒ’แƒฃแƒคแƒ˜แƒ“แƒแƒœ แƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒ›แƒ แƒแƒ แƒแƒงแƒ˜ แƒฉแƒแƒแƒกแƒฎแƒ แƒญแƒ˜แƒฅแƒแƒจแƒ˜, แƒ›แƒ”แƒแƒ แƒ”แƒ› แƒ“แƒแƒšแƒ˜แƒแƒก. แƒฎแƒแƒšแƒ แƒ›แƒ”แƒกแƒแƒ›แƒ”แƒก แƒแƒฅแƒ•แƒก แƒกแƒแƒญแƒ›แƒ”แƒšแƒ˜. แƒ’แƒแƒœแƒงแƒแƒคแƒ˜แƒšแƒ”แƒ‘แƒ, แƒ แƒแƒ›แƒ”แƒšแƒ›แƒแƒช แƒ“แƒแƒแƒกแƒ แƒฃแƒšแƒ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ, แƒ’แƒแƒ“แƒแƒ“แƒ˜แƒก แƒฏแƒ’แƒฃแƒคแƒ˜แƒก แƒ แƒ˜แƒ’แƒ˜แƒก แƒ‘แƒแƒšแƒแƒก.

แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒ, แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒ แƒ˜แƒ’แƒ˜แƒก แƒ–แƒแƒ›แƒ แƒ˜แƒงแƒ แƒกแƒแƒ›แƒ˜แƒก แƒฏแƒ”แƒ แƒแƒ“แƒ˜, แƒ˜แƒงแƒ SRP-แƒ˜แƒก แƒ™แƒแƒ แƒ’แƒ˜ แƒ’แƒแƒœแƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒ”แƒ‘แƒ.

แƒ’แƒแƒœแƒ›แƒแƒ แƒขแƒ”แƒ‘แƒ 1. แƒ”แƒ แƒ—แƒ˜แƒแƒœแƒ˜ แƒžแƒแƒกแƒฃแƒฎแƒ˜แƒกแƒ›แƒ’แƒ”แƒ‘แƒšแƒแƒ‘แƒ.

แƒ”แƒ แƒ—แƒ˜แƒแƒœแƒ˜ แƒžแƒแƒกแƒฃแƒฎแƒ˜แƒกแƒ›แƒ’แƒ”แƒ‘แƒšแƒแƒ‘แƒ˜แƒก แƒžแƒ แƒ˜แƒœแƒชแƒ˜แƒžแƒ˜แƒก (SRP) แƒแƒคแƒ˜แƒชแƒ˜แƒแƒšแƒฃแƒ  แƒ’แƒแƒœแƒ›แƒแƒ แƒขแƒ”แƒ‘แƒแƒจแƒ˜ แƒœแƒแƒ—แƒฅแƒ•แƒแƒ›แƒ˜แƒ, แƒ แƒแƒ› แƒ—แƒ˜แƒ—แƒแƒ”แƒฃแƒš แƒกแƒฃแƒ‘แƒ˜แƒ”แƒฅแƒขแƒก แƒแƒฅแƒ•แƒก แƒกแƒแƒ™แƒฃแƒ—แƒแƒ แƒ˜ แƒžแƒแƒกแƒฃแƒฎแƒ˜แƒกแƒ›แƒ’แƒ”แƒ‘แƒšแƒแƒ‘แƒ แƒ“แƒ แƒแƒ แƒกแƒ”แƒ‘แƒแƒ‘แƒ˜แƒก แƒ›แƒ˜แƒ–แƒ”แƒ–แƒ˜ แƒ“แƒ แƒ›แƒแƒก แƒแƒฅแƒ•แƒก แƒ›แƒฎแƒแƒšแƒแƒ“ แƒ”แƒ แƒ—แƒ˜ แƒžแƒแƒกแƒฃแƒฎแƒ˜แƒกแƒ›แƒ’แƒ”แƒ‘แƒšแƒแƒ‘แƒ.

แƒ’แƒแƒœแƒ•แƒ˜แƒฎแƒ˜แƒšแƒแƒ— แƒแƒ‘แƒ˜แƒ”แƒฅแƒขแƒ˜ "แƒกแƒแƒกแƒ›แƒ”แƒšแƒ˜" (แƒขแƒ˜แƒžแƒšแƒ”แƒ แƒ˜).
SRP แƒžแƒ แƒ˜แƒœแƒชแƒ˜แƒžแƒ˜แƒก แƒ’แƒแƒœแƒกแƒแƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒ”แƒ‘แƒšแƒแƒ“, แƒฉแƒ•แƒ”แƒœ แƒ“แƒแƒ•แƒงแƒแƒคแƒ— แƒžแƒแƒกแƒฃแƒฎแƒ˜แƒกแƒ›แƒ’แƒ”แƒ‘แƒšแƒแƒ‘แƒ”แƒ‘แƒก แƒกแƒแƒ›แƒแƒ“:

  • แƒ”แƒ แƒ—แƒ˜ แƒแƒกแƒฎแƒแƒ›แƒก (PourOperation)
  • แƒ”แƒ แƒ—แƒ˜ แƒกแƒ•แƒแƒ›แƒก (DrinkUpOperation)
  • แƒ”แƒ แƒ—แƒก แƒแƒฅแƒ•แƒก แƒกแƒแƒญแƒ›แƒ”แƒšแƒ˜ (TakeBiteOperation)

แƒžแƒ แƒแƒชแƒ”แƒกแƒ˜แƒก แƒ—แƒ˜แƒ—แƒแƒ”แƒฃแƒšแƒ˜ แƒ›แƒแƒœแƒแƒฌแƒ˜แƒšแƒ” แƒžแƒแƒกแƒฃแƒฎแƒ˜แƒกแƒ›แƒ’แƒ”แƒ‘แƒ”แƒšแƒ˜แƒ แƒžแƒ แƒแƒชแƒ”แƒกแƒ˜แƒก แƒ”แƒ แƒ— แƒ™แƒแƒ›แƒžแƒแƒœแƒ”แƒœแƒขแƒ–แƒ”, แƒแƒœแƒฃ แƒแƒฅแƒ•แƒก แƒ”แƒ แƒ—แƒ˜ แƒแƒขแƒแƒ›แƒฃแƒ แƒ˜ แƒžแƒแƒกแƒฃแƒฎแƒ˜แƒกแƒ›แƒ’แƒ”แƒ‘แƒšแƒแƒ‘แƒ - แƒ“แƒแƒšแƒ”แƒ•แƒ, แƒ“แƒแƒแƒกแƒฎแƒ˜แƒ— แƒแƒœ แƒฌแƒแƒกแƒแƒฎแƒ”แƒ›แƒกแƒ”แƒ‘แƒšแƒแƒ“.

แƒกแƒแƒกแƒ›แƒ”แƒšแƒ˜ แƒฎแƒ•แƒ แƒ”แƒšแƒ˜, แƒ—แƒแƒ•แƒ˜แƒก แƒ›แƒฎแƒ แƒ˜แƒ•, แƒแƒ แƒ˜แƒก แƒคแƒแƒกแƒแƒ“แƒ˜ แƒแƒ› แƒแƒžแƒ”แƒ แƒแƒชแƒ˜แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก:

ัlass Tippler {
    //...
    void Act(){
        _pourOperation.Do() // ะฝะฐะปะธั‚ัŒ
        _drinkUpOperation.Do() // ะฒั‹ะฟะธั‚ัŒ
        _takeBiteOperation.Do() // ะทะฐะบัƒัะธั‚ัŒ
    }
}

แƒ”แƒ แƒ—แƒ˜แƒแƒœแƒ˜ แƒžแƒแƒกแƒฃแƒฎแƒ˜แƒกแƒ›แƒ’แƒ”แƒ‘แƒšแƒแƒ‘แƒ˜แƒก แƒžแƒ แƒ˜แƒœแƒชแƒ˜แƒžแƒ˜. แƒแƒ แƒช แƒ˜แƒกแƒ” แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜, แƒ แƒแƒ’แƒแƒ แƒช แƒฉแƒแƒœแƒก

แƒ แƒแƒขแƒแƒ›?

แƒแƒ“แƒแƒ›แƒ˜แƒแƒœแƒ˜ แƒžแƒ แƒแƒ’แƒ แƒแƒ›แƒ˜แƒกแƒขแƒ˜ แƒ›แƒแƒ˜แƒ›แƒฃแƒœแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒ™แƒแƒ“แƒก แƒฌแƒ”แƒ แƒก, แƒ›แƒแƒ˜แƒ›แƒฃแƒœแƒ˜ แƒ™แƒ˜ แƒฃแƒงแƒฃแƒ แƒแƒ“แƒฆแƒ”แƒ‘แƒ, แƒกแƒฃแƒšแƒ”แƒšแƒ˜ แƒ“แƒ แƒงแƒแƒ•แƒ”แƒšแƒ—แƒ•แƒ˜แƒก แƒฉแƒฅแƒแƒ แƒแƒ‘แƒก. แƒ›แƒแƒก แƒจแƒ”แƒฃแƒซแƒšแƒ˜แƒ แƒ”แƒ แƒ—แƒ“แƒ แƒแƒฃแƒšแƒแƒ“ แƒ“แƒแƒ˜แƒญแƒ˜แƒ แƒแƒก แƒ“แƒ แƒ’แƒแƒ˜แƒ’แƒแƒก แƒ“แƒแƒแƒฎแƒšแƒแƒ”แƒ‘แƒ˜แƒ— 3-7 แƒขแƒ”แƒ แƒ›แƒ˜แƒœแƒ˜.
แƒ›แƒ—แƒ•แƒ แƒแƒšแƒ˜แƒก แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒแƒจแƒ˜ แƒ”แƒก แƒกแƒแƒ›แƒ˜ แƒขแƒ”แƒ แƒ›แƒ˜แƒœแƒ˜แƒ. แƒ—แƒฃแƒ›แƒชแƒ, แƒ—แƒฃ แƒ™แƒแƒ“แƒก แƒ”แƒ แƒ—แƒ˜ แƒคแƒฃแƒ แƒชแƒšแƒ˜แƒ— แƒ“แƒแƒ•แƒฌแƒ”แƒ แƒ—, แƒ›แƒแƒจแƒ˜แƒœ แƒ›แƒแƒกแƒจแƒ˜ แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ แƒฎแƒ”แƒšแƒ”แƒ‘แƒ˜, แƒกแƒแƒ—แƒ•แƒแƒšแƒ”แƒ”แƒ‘แƒ˜, แƒฉแƒฎแƒฃแƒ‘แƒ˜ แƒ“แƒ แƒ’แƒแƒฃแƒ—แƒแƒ•แƒ”แƒ‘แƒ”แƒšแƒ˜ แƒ™แƒแƒ›แƒแƒ—แƒ˜ แƒžแƒแƒšแƒ˜แƒขแƒ˜แƒ™แƒแƒ–แƒ”. แƒ“แƒ แƒ”แƒก แƒงแƒ•แƒ”แƒšแƒแƒคแƒ”แƒ แƒ˜ แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ แƒ”แƒ แƒ—แƒ˜ แƒ›แƒ”แƒ—แƒแƒ“แƒ˜แƒก แƒกแƒฎแƒ”แƒฃแƒšแƒจแƒ˜. แƒ“แƒแƒ แƒฌแƒ›แƒฃแƒœแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ•แƒแƒ , แƒ—แƒฅแƒ•แƒ”แƒœ แƒ’แƒ˜แƒœแƒแƒฎแƒแƒ•แƒ— แƒแƒกแƒ”แƒ—แƒ˜ แƒ™แƒแƒ“แƒ˜ แƒ—แƒฅแƒ•แƒ”แƒœแƒก แƒžแƒ แƒแƒฅแƒขแƒ˜แƒ™แƒแƒจแƒ˜. แƒแƒ  แƒแƒ แƒ˜แƒก แƒงแƒ•แƒ”แƒšแƒแƒ–แƒ” แƒฐแƒฃแƒ›แƒแƒœแƒฃแƒ แƒ˜ แƒขแƒ”แƒกแƒขแƒ˜ แƒคแƒกแƒ˜แƒฅแƒ˜แƒ™แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก.

แƒ›แƒ”แƒแƒ แƒ”แƒก แƒ›แƒฎแƒ แƒ˜แƒ•, แƒ›แƒแƒ˜แƒ›แƒฃแƒœแƒ˜ แƒแƒ“แƒแƒ›แƒ˜แƒแƒœแƒ˜ แƒจแƒ”แƒฅแƒ›แƒœแƒ˜แƒšแƒ˜แƒ แƒ˜แƒ›แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก, แƒ แƒแƒ› แƒ›แƒแƒแƒฎแƒ“แƒ˜แƒœแƒแƒก แƒ—แƒแƒ•แƒ˜แƒก แƒ—แƒแƒ•แƒจแƒ˜ แƒ แƒ”แƒแƒšแƒฃแƒ แƒ˜ แƒกแƒแƒ›แƒงแƒแƒ แƒแƒก แƒแƒ‘แƒ˜แƒ”แƒฅแƒขแƒ”แƒ‘แƒ˜แƒก แƒกแƒ˜แƒ›แƒฃแƒšแƒแƒชแƒ˜แƒ. แƒ›แƒ˜แƒก แƒฌแƒแƒ แƒ›แƒแƒกแƒแƒฎแƒ•แƒแƒจแƒ˜ แƒ›แƒแƒก แƒจแƒ”แƒฃแƒซแƒšแƒ˜แƒ แƒจแƒ”แƒแƒ”แƒ แƒ—แƒแƒก แƒ˜แƒกแƒ˜แƒœแƒ˜, แƒ›แƒแƒแƒฌแƒงแƒแƒก แƒ›แƒแƒ—แƒ’แƒแƒœ แƒแƒฎแƒแƒšแƒ˜ แƒกแƒแƒ’แƒœแƒ”แƒ‘แƒ˜ แƒ“แƒ แƒ“แƒแƒจแƒแƒšแƒแƒก แƒ˜แƒกแƒ˜แƒœแƒ˜ แƒ˜แƒ›แƒแƒ•แƒ” แƒ’แƒ–แƒ˜แƒ—. แƒฌแƒแƒ แƒ›แƒแƒ˜แƒ“แƒ’แƒ˜แƒœแƒ”แƒ— แƒซแƒ•แƒ”แƒšแƒ˜ แƒ›แƒแƒ“แƒ”แƒšแƒ˜แƒก แƒ›แƒแƒœแƒฅแƒแƒœแƒ. แƒ—แƒฅแƒ•แƒ”แƒœแƒก แƒฌแƒแƒ แƒ›แƒแƒกแƒแƒฎแƒ•แƒแƒจแƒ˜ แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ’แƒแƒแƒฆแƒแƒ— แƒ™แƒแƒ แƒ˜, แƒ’แƒแƒแƒฆแƒแƒ— แƒ™แƒแƒ แƒ˜แƒก แƒ›แƒแƒ แƒ—แƒ•แƒ แƒ“แƒ แƒ˜แƒฅ แƒœแƒแƒฎแƒแƒ— แƒคแƒแƒœแƒฏแƒ แƒ˜แƒก แƒแƒ›แƒฌแƒ” แƒ›แƒ”แƒฅแƒแƒœแƒ˜แƒ–แƒ›แƒ”แƒ‘แƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ—แƒ แƒจแƒ˜แƒ’แƒœแƒ˜แƒ— แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ แƒ’แƒแƒ“แƒแƒชแƒ”แƒ›แƒแƒ—แƒ แƒ™แƒแƒšแƒแƒคแƒ˜. แƒ›แƒแƒ’แƒ แƒแƒ› แƒ—แƒฅแƒ•แƒ”แƒœ แƒ•แƒ”แƒ  แƒฎแƒ”แƒ“แƒแƒ•แƒ— แƒแƒžแƒแƒ แƒแƒขแƒ˜แƒก แƒงแƒ•แƒ”แƒšแƒ แƒ™แƒแƒ›แƒžแƒแƒœแƒ”แƒœแƒขแƒก แƒ”แƒ แƒ—แƒ“แƒ แƒแƒฃแƒšแƒแƒ“, แƒ”แƒ แƒ— โ€žแƒฉแƒแƒ›แƒแƒœแƒแƒ—แƒ•แƒแƒšแƒจแƒ˜โ€œ. แƒ›แƒแƒ˜แƒœแƒช "แƒ›แƒแƒ˜แƒ›แƒฃแƒœ แƒ™แƒแƒชแƒก" แƒแƒ  แƒจแƒ”แƒฃแƒซแƒšแƒ˜แƒ.

แƒ›แƒแƒจแƒแƒกแƒแƒ“แƒแƒ›แƒ”, แƒแƒ“แƒแƒ›แƒ˜แƒแƒœแƒ”แƒ‘แƒ˜ แƒžแƒ แƒแƒ’แƒ แƒแƒ›แƒ˜แƒกแƒขแƒ”แƒ‘แƒ˜ แƒแƒœแƒแƒฌแƒ˜แƒšแƒ”แƒ‘แƒ”แƒœ แƒ แƒ—แƒฃแƒš แƒ›แƒ”แƒฅแƒแƒœแƒ˜แƒ–แƒ›แƒ”แƒ‘แƒก แƒœแƒแƒ™แƒšแƒ”แƒ‘แƒแƒ“ แƒ แƒ—แƒฃแƒš แƒ“แƒ แƒกแƒแƒ›แƒฃแƒจแƒแƒ แƒ”แƒšแƒ”แƒ›แƒ”แƒœแƒขแƒ”แƒ‘แƒแƒ“. แƒ—แƒฃแƒ›แƒชแƒ, แƒ›แƒ˜แƒกแƒ˜ แƒ“แƒแƒจแƒšแƒ แƒจแƒ”แƒกแƒแƒซแƒšแƒ”แƒ‘แƒ”แƒšแƒ˜แƒ แƒกแƒฎแƒ•แƒแƒ“แƒแƒกแƒฎแƒ•แƒ แƒ’แƒ–แƒ˜แƒ—: แƒ‘แƒ”แƒ•แƒ  แƒซแƒ•แƒ”แƒš แƒ›แƒแƒœแƒฅแƒแƒœแƒแƒจแƒ˜ แƒฐแƒแƒ”แƒ แƒ˜แƒก แƒกแƒแƒ“แƒ˜แƒœแƒแƒ แƒ˜ แƒ™แƒแƒ แƒ”แƒ‘แƒจแƒ˜ แƒ›แƒ˜แƒ“แƒ˜แƒก, แƒฎแƒแƒšแƒ แƒ—แƒแƒœแƒแƒ›แƒ”แƒ“แƒ แƒแƒ•แƒ” แƒ›แƒแƒœแƒฅแƒแƒœแƒ”แƒ‘แƒจแƒ˜ แƒกแƒแƒ™แƒ”แƒขแƒ˜แƒก แƒ”แƒšแƒ”แƒฅแƒขแƒ แƒแƒœแƒ˜แƒ™แƒ˜แƒก แƒ’แƒแƒฃแƒ›แƒแƒ แƒ—แƒแƒแƒ‘แƒ แƒฎแƒ”แƒšแƒก แƒฃแƒจแƒšแƒ˜แƒก แƒซแƒ แƒแƒ•แƒ˜แƒก แƒฉแƒแƒ แƒ—แƒ•แƒแƒก, แƒ แƒแƒช แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒ แƒ˜แƒงแƒแƒก แƒ แƒ”แƒ›แƒแƒœแƒขแƒ˜แƒก แƒ“แƒ แƒแƒก.

แƒแƒฎแƒšแƒ, SRP แƒแƒ แƒ˜แƒก แƒžแƒ แƒ˜แƒœแƒชแƒ˜แƒžแƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ’แƒแƒœแƒ›แƒแƒ แƒขแƒแƒ•แƒก, แƒ—แƒฃ แƒ แƒแƒ’แƒแƒ  แƒฃแƒœแƒ“แƒ แƒ“แƒแƒ˜แƒจแƒแƒšแƒ, แƒแƒœแƒฃ แƒกแƒแƒ“ แƒฃแƒœแƒ“แƒ แƒ“แƒแƒ•แƒฎแƒแƒขแƒแƒ— แƒ’แƒแƒ›แƒงแƒแƒคแƒ˜ แƒฎแƒแƒ–แƒ˜.

แƒ˜แƒก แƒแƒ›แƒ‘แƒแƒ‘แƒก, แƒ แƒแƒ› แƒแƒฃแƒชแƒ˜แƒšแƒ”แƒ‘แƒ”แƒšแƒ˜แƒ แƒ“แƒแƒจแƒšแƒ โ€žแƒžแƒแƒกแƒฃแƒฎแƒ˜แƒกแƒ›แƒ’แƒ”แƒ‘แƒšแƒแƒ‘แƒ˜แƒกโ€œ แƒ“แƒแƒงแƒแƒคแƒ˜แƒก แƒžแƒ แƒ˜แƒœแƒชแƒ˜แƒžแƒ˜แƒก แƒ›แƒ˜แƒฎแƒ”แƒ“แƒ•แƒ˜แƒ—, แƒแƒœแƒฃ แƒ’แƒแƒ แƒ™แƒ•แƒ”แƒฃแƒšแƒ˜ แƒแƒ‘แƒ˜แƒ”แƒฅแƒขแƒ”แƒ‘แƒ˜แƒก แƒแƒ›แƒแƒชแƒแƒœแƒ”แƒ‘แƒ˜แƒก แƒ›แƒ˜แƒฎแƒ”แƒ“แƒ•แƒ˜แƒ—.

แƒ”แƒ แƒ—แƒ˜แƒแƒœแƒ˜ แƒžแƒแƒกแƒฃแƒฎแƒ˜แƒกแƒ›แƒ’แƒ”แƒ‘แƒšแƒแƒ‘แƒ˜แƒก แƒžแƒ แƒ˜แƒœแƒชแƒ˜แƒžแƒ˜. แƒแƒ แƒช แƒ˜แƒกแƒ” แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜, แƒ แƒแƒ’แƒแƒ แƒช แƒฉแƒแƒœแƒก

แƒ“แƒแƒ•แƒฃแƒ‘แƒ แƒฃแƒœแƒ“แƒ”แƒ— แƒกแƒแƒกแƒ›แƒ”แƒšแƒก แƒ“แƒ แƒ˜แƒ› แƒฃแƒžแƒ˜แƒ แƒแƒขแƒ”แƒกแƒแƒ‘แƒ”แƒ‘แƒก, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒกแƒแƒช แƒ›แƒแƒ˜แƒ›แƒฃแƒœแƒ˜ แƒ™แƒแƒชแƒ˜ แƒ˜แƒฆแƒ”แƒ‘แƒก แƒ“แƒแƒจแƒšแƒ˜แƒก แƒ“แƒ แƒแƒก:

  • แƒ™แƒแƒ“แƒ˜ แƒซแƒแƒšแƒ˜แƒแƒœ แƒœแƒแƒ—แƒ”แƒšแƒ˜ แƒ’แƒแƒฎแƒ“แƒ แƒงแƒ•แƒ”แƒšแƒ แƒ“แƒแƒœแƒ”แƒ–แƒ”
  • แƒ™แƒแƒ“แƒ˜ แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ“แƒแƒฌแƒ”แƒ แƒแƒก แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜แƒ›แƒ” แƒžแƒ แƒแƒ’แƒ แƒแƒ›แƒ˜แƒกแƒขแƒ›แƒ แƒ”แƒ แƒ—แƒ“แƒ แƒแƒฃแƒšแƒแƒ“ (แƒ—แƒ˜แƒ—แƒแƒ”แƒฃแƒšแƒ˜ แƒฌแƒ”แƒ แƒก แƒชแƒแƒšแƒ™แƒ”แƒฃแƒš แƒ”แƒšแƒ”แƒ›แƒ”แƒœแƒขแƒก)
  • แƒแƒ•แƒขแƒแƒ›แƒแƒขแƒฃแƒ แƒ˜ แƒขแƒ”แƒกแƒขแƒ˜แƒ แƒ”แƒ‘แƒ แƒ’แƒแƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ - แƒ แƒแƒช แƒฃแƒคแƒ แƒ แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜แƒ แƒ”แƒšแƒ”แƒ›แƒ”แƒœแƒขแƒ˜, แƒ›แƒ˜แƒ— แƒฃแƒคแƒ แƒ แƒแƒ“แƒ•แƒ˜แƒšแƒ˜แƒ แƒ›แƒ˜แƒกแƒ˜ แƒขแƒ”แƒกแƒขแƒ˜แƒ แƒ”แƒ‘แƒ
  • แƒฉแƒœแƒ“แƒ”แƒ‘แƒ แƒ™แƒแƒ“แƒ˜แƒก แƒจแƒ”แƒ›แƒแƒ“แƒ’แƒ”แƒœแƒšแƒแƒ‘แƒ - แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒจแƒ”แƒชแƒ•แƒแƒšแƒแƒ— DrinkUpOperation แƒแƒžแƒ”แƒ แƒแƒชแƒ˜แƒแƒก, แƒ แƒแƒ›แƒšแƒ˜แƒก แƒ“แƒ แƒแƒกแƒแƒช แƒ›แƒ—แƒ•แƒ แƒแƒšแƒ˜ แƒแƒกแƒฎแƒแƒ›แƒก แƒกแƒ˜แƒ—แƒฎแƒ”แƒก แƒ›แƒแƒ’แƒ˜แƒ“แƒ˜แƒก แƒฅแƒ•แƒ”แƒจ. แƒแƒœ แƒจแƒ”แƒชแƒ•แƒแƒšแƒ”แƒ— แƒฉแƒแƒ›แƒแƒกแƒฎแƒ›แƒ˜แƒก แƒแƒžแƒ”แƒ แƒแƒชแƒ˜แƒ แƒแƒžแƒ”แƒ แƒแƒชแƒ˜แƒ˜แƒ—, แƒ แƒแƒ›แƒ”แƒšแƒจแƒ˜แƒช แƒจแƒ”แƒฃแƒ แƒ˜แƒ”แƒ— แƒฆแƒ•แƒ˜แƒœแƒ แƒ“แƒ แƒฌแƒงแƒแƒšแƒ˜ แƒแƒœ แƒแƒ แƒแƒงแƒ˜ แƒ“แƒ แƒšแƒฃแƒ“แƒ˜. แƒ‘แƒ˜แƒ–แƒœแƒ”แƒกแƒ˜แƒก แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ”แƒ‘แƒ˜แƒ“แƒแƒœ แƒ’แƒแƒ›แƒแƒ›แƒ“แƒ˜แƒœแƒแƒ แƒ”, แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ’แƒแƒแƒ™แƒ”แƒ—แƒแƒ— แƒงแƒ•แƒ”แƒšแƒแƒคแƒ”แƒ แƒ˜ แƒ›แƒ”แƒ—แƒแƒ“แƒ˜แƒก แƒ™แƒแƒ“แƒ˜แƒก แƒจแƒ”แƒฎแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ แƒ”แƒจแƒ” Tippler.แƒ˜แƒ›แƒแƒฅแƒ›แƒ”แƒ“แƒ”.
  • แƒแƒ› แƒแƒžแƒ”แƒ แƒแƒชแƒ˜แƒ”แƒ‘แƒ˜แƒ“แƒแƒœ แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ“แƒแƒ™แƒ”แƒชแƒแƒ— แƒฌแƒ”แƒ‘แƒแƒ•แƒแƒœแƒ (แƒ›แƒฎแƒแƒšแƒแƒ“ แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ— TakeBitOperation), แƒแƒšแƒ™แƒแƒฐแƒแƒšแƒฃแƒ แƒ˜ (แƒ›แƒฎแƒแƒšแƒแƒ“ แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ). DrinkUpOperation แƒžแƒ˜แƒ แƒ“แƒแƒžแƒ˜แƒ  แƒ‘แƒแƒ—แƒšแƒ˜แƒ“แƒแƒœ) แƒ“แƒ แƒแƒ™แƒ›แƒแƒงแƒแƒคแƒ˜แƒšแƒ”แƒ‘แƒก แƒ‘แƒ”แƒ•แƒ  แƒกแƒฎแƒ•แƒ แƒ‘แƒ˜แƒ–แƒœแƒ”แƒก แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒแƒก.

(แƒแƒฐ, แƒ แƒแƒ’แƒแƒ แƒช แƒฉแƒแƒœแƒก, แƒ”แƒก แƒฃแƒ™แƒ•แƒ” 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)
        }
    }
}

แƒ–แƒ”แƒ“แƒ›แƒ˜แƒฌแƒ”แƒ•แƒœแƒ˜แƒ—แƒ˜ แƒ›แƒ™แƒ˜แƒ—แƒฎแƒ•แƒ”แƒšแƒ˜ แƒแƒ›แƒแƒก แƒจแƒ”แƒแƒ›แƒฉแƒœแƒ”แƒ•แƒก LogAfter, แƒจแƒ”แƒกแƒ•แƒšแƒ แƒแƒ“แƒ แƒ” ะธ แƒ”แƒ แƒ—แƒ˜ แƒจแƒ”แƒชแƒ“แƒแƒ›แƒ แƒแƒกแƒ”แƒ•แƒ” แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒจแƒ”แƒ˜แƒชแƒ•แƒแƒšแƒแƒก แƒ˜แƒœแƒ“แƒ˜แƒ•แƒ˜แƒ“แƒฃแƒแƒšแƒฃแƒ แƒแƒ“ แƒ“แƒ, แƒฌแƒ˜แƒœแƒ แƒœแƒแƒ‘แƒ˜แƒฏแƒ”แƒ‘แƒ˜แƒก แƒแƒœแƒแƒšแƒแƒ’แƒ˜แƒ˜แƒ—, แƒจแƒ”แƒ˜แƒฅแƒ›แƒœแƒ”แƒ‘แƒ แƒกแƒแƒ›แƒ˜ แƒ™แƒšแƒแƒกแƒ˜: PourLogger แƒแƒ“แƒ แƒ”, PourLoggerAfter ะธ PourErrorLogger.

แƒ“แƒ แƒ’แƒแƒ•แƒ˜แƒฎแƒกแƒ”แƒœแƒแƒ—, แƒ แƒแƒ› แƒกแƒแƒกแƒ›แƒ”แƒšแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒกแƒแƒ›แƒ˜ แƒแƒžแƒ”แƒ แƒแƒชแƒ˜แƒแƒ, แƒฉแƒ•แƒ”แƒœ แƒ•แƒ˜แƒฆแƒ”แƒ‘แƒ— แƒฎแƒ”-แƒขแƒงแƒ˜แƒก แƒชแƒฎแƒ แƒ แƒ™แƒšแƒแƒกแƒก. แƒจแƒ”แƒ“แƒ”แƒ’แƒแƒ“, แƒ›แƒ—แƒ”แƒšแƒ˜ แƒกแƒแƒกแƒ›แƒ”แƒšแƒ˜ แƒฌแƒ แƒ” แƒจแƒ”แƒ“แƒ’แƒ”แƒ‘แƒ 14 (!!!) แƒ™แƒšแƒแƒกแƒ˜แƒกแƒ’แƒแƒœ.

แƒฐแƒ˜แƒžแƒ”แƒ แƒ‘แƒแƒšแƒ? แƒซแƒšแƒ˜แƒ•แƒก! แƒ›แƒแƒ˜แƒ›แƒฃแƒœแƒ˜ แƒ™แƒแƒชแƒ˜ แƒ“แƒแƒจแƒšแƒ˜แƒก แƒฎแƒ”แƒšแƒงแƒฃแƒ›แƒ‘แƒแƒ แƒ˜แƒ— แƒ“แƒแƒงแƒแƒคแƒก โ€žแƒฉแƒแƒ›แƒกแƒฎแƒ›แƒ”แƒšแƒกโ€œ แƒ“แƒ”แƒ™แƒแƒœแƒขแƒ”แƒ แƒจแƒ˜, แƒญแƒ˜แƒฅแƒแƒจแƒ˜, แƒฉแƒแƒกแƒฎแƒ›แƒ˜แƒก แƒแƒžแƒ”แƒ แƒแƒขแƒแƒ แƒ”แƒ‘แƒแƒ“, แƒฌแƒงแƒแƒšแƒ›แƒแƒ›แƒแƒ แƒแƒ’แƒ”แƒ‘แƒ˜แƒก แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒแƒ“, แƒ›แƒแƒšแƒ”แƒ™แƒฃแƒšแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒฏแƒแƒฎแƒ”แƒ‘แƒ˜แƒก แƒคแƒ˜แƒ–แƒ˜แƒ™แƒฃแƒ  แƒ›แƒแƒ“แƒ”แƒšแƒแƒ“ แƒ“แƒ แƒ›แƒแƒ›แƒ“แƒ”แƒ•แƒœแƒ แƒ™แƒ•แƒแƒ แƒขแƒแƒšแƒจแƒ˜ แƒ˜แƒก แƒจแƒ”แƒ”แƒชแƒ“แƒ”แƒ‘แƒ แƒ’แƒแƒ”แƒ แƒ™แƒ•แƒ˜แƒ แƒ“แƒแƒ›แƒแƒ™แƒ˜แƒ“แƒ”แƒ‘แƒฃแƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜. แƒ’แƒšแƒแƒ‘แƒแƒšแƒฃแƒ แƒ˜ แƒชแƒ•แƒšแƒแƒ“แƒ”แƒ‘แƒ˜. แƒ“แƒ แƒ›แƒ”แƒ แƒฌแƒ›แƒฃแƒœแƒ”แƒ—, แƒ˜แƒก แƒแƒ  แƒ’แƒแƒฉแƒ”แƒ แƒ“แƒ”แƒ‘แƒ.

แƒแƒ› แƒ“แƒ แƒแƒก แƒ‘แƒ”แƒ•แƒ แƒ˜ แƒ›แƒ˜แƒ“แƒ˜แƒก แƒ˜แƒ› แƒ“แƒแƒกแƒ™แƒ•แƒœแƒแƒ›แƒ“แƒ”, แƒ แƒแƒ› SRP แƒแƒ แƒ˜แƒก แƒ–แƒฆแƒแƒžแƒ แƒ”แƒ‘แƒ˜ แƒ•แƒแƒ แƒ“แƒ˜แƒกแƒคแƒ”แƒ แƒ˜ แƒกแƒแƒ›แƒ”แƒคแƒแƒ”แƒ‘แƒ˜แƒ“แƒแƒœ แƒ“แƒ แƒ›แƒ˜แƒ“แƒ˜แƒแƒœ แƒšแƒแƒคแƒกแƒ˜แƒก แƒกแƒแƒ—แƒแƒ›แƒแƒจแƒแƒ“...

... Srp-แƒ˜แƒก แƒ›แƒ”แƒกแƒแƒ›แƒ” แƒ“แƒ”แƒคแƒ˜แƒœแƒ˜แƒชแƒ˜แƒ˜แƒก แƒแƒ แƒกแƒ”แƒ‘แƒแƒ‘แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘ แƒแƒ“แƒ”แƒกแƒ›แƒ” แƒจแƒ”แƒกแƒฌแƒแƒ•แƒšแƒ˜แƒก แƒ’แƒแƒ แƒ”แƒจแƒ”:

โ€žแƒ”แƒ แƒ—แƒ˜แƒแƒœแƒ˜ แƒžแƒแƒกแƒฃแƒฎแƒ˜แƒกแƒ›แƒ’แƒ”แƒ‘แƒšแƒแƒ‘แƒ˜แƒก แƒžแƒ แƒ˜แƒœแƒชแƒ˜แƒžแƒ˜ แƒแƒ›แƒ‘แƒแƒ‘แƒก, แƒ แƒแƒ› แƒชแƒ•แƒšแƒ˜แƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒ›แƒกแƒ’แƒแƒ•แƒกแƒ˜ แƒœแƒ˜แƒ•แƒ—แƒ”แƒ‘แƒ˜ แƒฃแƒœแƒ“แƒ แƒ˜แƒœแƒแƒฎแƒ”แƒ‘แƒแƒ“แƒ”แƒก แƒ”แƒ แƒ— แƒแƒ“แƒ’แƒ˜แƒšแƒแƒก". แƒแƒœ "แƒ แƒ แƒชแƒ•แƒšแƒ˜แƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜ แƒ”แƒ แƒ—แƒแƒ“ แƒฃแƒœแƒ“แƒ แƒ˜แƒœแƒแƒฎแƒ”แƒ‘แƒแƒ“แƒ”แƒก แƒ”แƒ แƒ— แƒแƒ“แƒ’แƒ˜แƒšแƒแƒก"

แƒแƒœแƒฃ, แƒ—แƒฃ แƒฉแƒ•แƒ”แƒœ แƒจแƒ”แƒ•แƒชแƒ•แƒšแƒ˜แƒ— แƒแƒžแƒ”แƒ แƒแƒชแƒ˜แƒ˜แƒก แƒšแƒแƒ’แƒ˜แƒœแƒ’แƒก, แƒ›แƒแƒจแƒ˜แƒœ แƒ˜แƒก แƒฃแƒœแƒ“แƒ แƒจแƒ”แƒ•แƒชแƒ•แƒแƒšแƒแƒ— แƒ”แƒ แƒ— แƒแƒ“แƒ’แƒ˜แƒšแƒแƒก.

แƒ”แƒก แƒซแƒแƒšแƒ˜แƒแƒœ แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ•แƒแƒœแƒ˜ แƒžแƒฃแƒœแƒฅแƒขแƒ˜แƒ - แƒ แƒแƒ“แƒ’แƒแƒœ SRP-แƒ˜แƒก แƒงแƒ•แƒ”แƒšแƒ แƒแƒฎแƒกแƒœแƒ-แƒ’แƒแƒœแƒ›แƒแƒ แƒขแƒ”แƒ‘แƒ, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ–แƒ”แƒ›แƒแƒ— แƒ˜แƒงแƒ แƒœแƒแƒ—แƒฅแƒ•แƒแƒ›แƒ˜, แƒ แƒแƒ› แƒกแƒแƒญแƒ˜แƒ แƒ แƒ˜แƒงแƒ แƒขแƒ˜แƒžแƒ”แƒ‘แƒ˜แƒก แƒ“แƒแƒ›แƒกแƒฎแƒ•แƒ แƒ”แƒ•แƒ แƒ›แƒแƒ—แƒ˜ แƒ“แƒแƒ›แƒกแƒฎแƒ•แƒ แƒ”แƒ•แƒ˜แƒกแƒแƒก, แƒแƒœแƒฃ แƒ›แƒแƒ— แƒ“แƒแƒแƒฌแƒ”แƒกแƒ”แƒก โ€žแƒ–แƒ”แƒ›แƒแƒ“แƒแƒœ แƒจแƒ”แƒ–แƒฆแƒฃแƒ“แƒ•แƒโ€œ แƒแƒ‘แƒ˜แƒ”แƒฅแƒขแƒ˜แƒก แƒ–แƒแƒ›แƒแƒ–แƒ” แƒ“แƒ แƒแƒฎแƒšแƒ แƒฉแƒ•แƒ”แƒœ แƒ•แƒกแƒแƒฃแƒ‘แƒ แƒแƒ‘แƒ— โ€žแƒฅแƒ•แƒ”แƒ›แƒแƒ“แƒแƒœ แƒจแƒ”แƒ–แƒฆแƒฃแƒ“แƒ•แƒแƒ–แƒ”โ€œ. แฒกแƒฎแƒ•แƒ แƒกแƒ˜แƒขแƒงแƒ•แƒ”แƒ‘แƒ˜แƒ—, SRP แƒแƒ แƒ แƒ›แƒฎแƒแƒšแƒแƒ“ แƒ›แƒแƒ˜แƒ—แƒฎแƒแƒ•แƒก โ€žแƒ“แƒแƒ›แƒกแƒฎแƒ•แƒ แƒ”แƒ•แƒแƒก แƒ“แƒแƒฅแƒฃแƒชแƒ›แƒแƒชแƒ”แƒ‘แƒ˜แƒกแƒแƒกโ€œ, แƒแƒ แƒแƒ›แƒ”แƒ“ แƒแƒ  แƒ’แƒแƒ“แƒแƒแƒญแƒแƒ แƒ‘แƒแƒก แƒ›แƒแƒก - โ€žแƒœแƒฃ แƒ“แƒแƒแƒ›แƒขแƒ•แƒ แƒ”แƒ•แƒ— แƒฃแƒ แƒ—แƒ˜แƒ”แƒ แƒ—แƒ“แƒแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ‘แƒฃแƒš แƒœแƒ˜แƒ•แƒ—แƒ”แƒ‘แƒกโ€œ. แƒ”แƒก แƒแƒ แƒ˜แƒก แƒ“แƒ˜แƒ“แƒ˜ แƒ‘แƒ แƒซแƒแƒšแƒ แƒแƒ™แƒแƒ›แƒ˜แƒก แƒกแƒแƒžแƒแƒ แƒกแƒกแƒ แƒ“แƒ แƒ›แƒแƒ˜แƒ›แƒฃแƒœแƒ˜แƒก แƒ™แƒแƒชแƒก แƒจแƒแƒ แƒ˜แƒก!

แƒ”แƒ แƒ—แƒ˜แƒแƒœแƒ˜ แƒžแƒแƒกแƒฃแƒฎแƒ˜แƒกแƒ›แƒ’แƒ”แƒ‘แƒšแƒแƒ‘แƒ˜แƒก แƒžแƒ แƒ˜แƒœแƒชแƒ˜แƒžแƒ˜. แƒแƒ แƒช แƒ˜แƒกแƒ” แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜, แƒ แƒแƒ’แƒแƒ แƒช แƒฉแƒแƒœแƒก

แƒแƒฎแƒšแƒ แƒ›แƒกแƒ›แƒ”แƒšแƒ›แƒ แƒ—แƒแƒ•แƒ˜ แƒฃแƒ™แƒ”แƒ— แƒฃแƒœแƒ“แƒ แƒ˜แƒ’แƒ แƒซแƒœแƒแƒก. แƒ’แƒแƒ แƒ“แƒ แƒ˜แƒ›แƒ˜แƒกแƒ, แƒ แƒแƒ› แƒแƒ  แƒแƒ แƒ˜แƒก แƒกแƒแƒญแƒ˜แƒ แƒ IPourLogger logger-แƒ˜แƒก แƒกแƒแƒ› แƒ™แƒšแƒแƒกแƒแƒ“ แƒ“แƒแƒงแƒแƒคแƒ, แƒฉแƒ•แƒ”แƒœ แƒแƒกแƒ”แƒ•แƒ” แƒจแƒ”แƒ’แƒ•แƒ˜แƒซแƒšแƒ˜แƒ แƒ’แƒแƒ•แƒแƒ”แƒ แƒ—แƒ˜แƒแƒœแƒแƒ— แƒงแƒ•แƒ”แƒšแƒ แƒšแƒแƒ’แƒ”แƒ แƒ˜ แƒ”แƒ แƒ— แƒขแƒ˜แƒžแƒแƒ“:

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-แƒ˜แƒก แƒ’แƒแƒœแƒ›แƒแƒ แƒขแƒ”แƒ‘แƒ

  1. แƒ’แƒแƒ›แƒแƒงแƒแƒ•แƒ˜แƒ— แƒ”แƒšแƒ”แƒ›แƒ”แƒœแƒขแƒ”แƒ‘แƒ˜ แƒ˜แƒกแƒ”, แƒ แƒแƒ› แƒ—แƒ˜แƒ—แƒแƒ”แƒฃแƒšแƒ˜ แƒ›แƒแƒ—แƒ’แƒแƒœแƒ˜ แƒžแƒแƒกแƒฃแƒฎแƒ˜แƒกแƒ›แƒ’แƒ”แƒ‘แƒ”แƒšแƒ˜แƒ แƒ”แƒ แƒ— แƒ แƒแƒ›แƒ”แƒ–แƒ”.
  2. แƒžแƒแƒกแƒฃแƒฎแƒ˜แƒกแƒ›แƒ’แƒ”แƒ‘แƒšแƒแƒ‘แƒ แƒœแƒ˜แƒจแƒœแƒแƒ•แƒก โ€žแƒจแƒ”แƒชแƒ•แƒšแƒ˜แƒก แƒ›แƒ˜แƒ–แƒ”แƒ–แƒกโ€œ. แƒแƒœแƒฃ, แƒ—แƒ˜แƒ—แƒแƒ”แƒฃแƒš แƒ”แƒšแƒ”แƒ›แƒ”แƒœแƒขแƒก แƒแƒฅแƒ•แƒก แƒชแƒ•แƒšแƒ˜แƒšแƒ”แƒ‘แƒ˜แƒก แƒ›แƒฎแƒแƒšแƒแƒ“ แƒ”แƒ แƒ—แƒ˜ แƒ›แƒ˜แƒ–แƒ”แƒ–แƒ˜, แƒ‘แƒ˜แƒ–แƒœแƒ”แƒก แƒšแƒแƒ’แƒ˜แƒ™แƒ˜แƒก แƒ—แƒ•แƒแƒšแƒกแƒแƒ–แƒ แƒ˜แƒกแƒ˜แƒ—.
  3. แƒžแƒแƒขแƒ”แƒœแƒชแƒ˜แƒฃแƒ แƒ˜ แƒชแƒ•แƒšแƒ˜แƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜ แƒ‘แƒ˜แƒ–แƒœแƒ”แƒก แƒšแƒแƒ’แƒ˜แƒ™แƒแƒจแƒ˜. แƒšแƒแƒ™แƒแƒšแƒ˜แƒ–แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒฃแƒœแƒ“แƒ แƒ˜แƒงแƒแƒก. แƒ”แƒšแƒ”แƒ›แƒ”แƒœแƒขแƒ”แƒ‘แƒ˜, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ˜แƒช แƒกแƒ˜แƒœแƒฅแƒ แƒแƒœแƒฃแƒšแƒแƒ“ แƒ˜แƒชแƒ•แƒšแƒ”แƒ‘แƒ, แƒแƒฎแƒšแƒแƒก แƒฃแƒœแƒ“แƒ แƒ˜แƒงแƒแƒก.

แƒคแƒแƒ แƒ›แƒแƒšแƒ˜แƒ–แƒ›แƒ˜ 2. แƒแƒฃแƒชแƒ˜แƒšแƒ”แƒ‘แƒ”แƒšแƒ˜ แƒ—แƒ•แƒ˜แƒ—แƒจแƒ”แƒ›แƒแƒฌแƒ›แƒ”แƒ‘แƒ˜แƒก แƒ™แƒ แƒ˜แƒขแƒ”แƒ แƒ˜แƒฃแƒ›แƒ”แƒ‘แƒ˜.

แƒ›แƒ” แƒ•แƒ”แƒ  แƒ•แƒœแƒแƒฎแƒ” แƒกแƒแƒ™แƒ›แƒแƒ แƒ˜แƒกแƒ˜ แƒ™แƒ แƒ˜แƒขแƒ”แƒ แƒ˜แƒฃแƒ›แƒ”แƒ‘แƒ˜ SRP-แƒ˜แƒก แƒจแƒ”แƒกแƒแƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒšแƒแƒ“. แƒ›แƒแƒ’แƒ แƒแƒ› แƒแƒ แƒ˜แƒก แƒแƒฃแƒชแƒ˜แƒšแƒ”แƒ‘แƒ”แƒšแƒ˜ แƒžแƒ˜แƒ แƒแƒ‘แƒ”แƒ‘แƒ˜:

1) แƒฐแƒ™แƒ˜แƒ—แƒฎแƒ”แƒ— แƒกแƒแƒ™แƒฃแƒ—แƒแƒ  แƒ—แƒแƒ•แƒก, แƒ แƒแƒก แƒแƒ™แƒ”แƒ—แƒ”แƒ‘แƒก แƒ”แƒก แƒ™แƒšแƒแƒกแƒ˜/แƒ›แƒ”แƒ—แƒแƒ“แƒ˜/แƒ›แƒแƒ“แƒฃแƒšแƒ˜/แƒ›แƒแƒ›แƒกแƒแƒฎแƒฃแƒ แƒ”แƒ‘แƒ. แƒ—แƒฅแƒ•แƒ”แƒœ แƒฃแƒœแƒ“แƒ แƒฃแƒžแƒแƒกแƒฃแƒฎแƒแƒ— แƒ›แƒแƒก แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜ แƒ’แƒแƒœแƒ›แƒแƒ แƒขแƒ”แƒ‘แƒ˜แƒ—. ( แฒ’แƒ›แƒแƒ“แƒšแƒแƒ‘แƒ— แƒ‘แƒ แƒแƒ˜แƒขแƒแƒ แƒ˜ )

แƒ’แƒแƒœแƒ›แƒแƒ แƒขแƒ”แƒ‘แƒ”แƒ‘แƒ˜

แƒ—แƒฃแƒ›แƒชแƒ, แƒ–แƒแƒ’แƒฏแƒ”แƒ  แƒซแƒแƒšแƒ˜แƒแƒœ แƒ แƒ—แƒฃแƒšแƒ˜แƒ แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜ แƒ’แƒแƒœแƒ›แƒแƒ แƒขแƒ”แƒ‘แƒ˜แƒก แƒžแƒแƒ•แƒœแƒ

2) แƒจแƒ”แƒชแƒ“แƒแƒ›แƒ˜แƒก แƒ’แƒแƒ›แƒแƒกแƒฌแƒแƒ แƒ”แƒ‘แƒ แƒแƒœ แƒแƒฎแƒแƒšแƒ˜ แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ˜แƒก แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ แƒ’แƒแƒ•แƒšแƒ”แƒœแƒแƒก แƒแƒฎแƒ“แƒ”แƒœแƒก แƒคแƒแƒ˜แƒšแƒ”แƒ‘แƒ˜แƒก/แƒ™แƒšแƒแƒกแƒ”แƒ‘แƒ˜แƒก แƒ›แƒ˜แƒœแƒ˜แƒ›แƒแƒšแƒฃแƒ  แƒ แƒแƒแƒ“แƒ”แƒœแƒแƒ‘แƒแƒ–แƒ”. แƒ˜แƒ“แƒ”แƒแƒšแƒฃแƒ  แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒแƒจแƒ˜ - แƒ”แƒ แƒ—แƒ˜.

แƒ’แƒแƒœแƒ›แƒแƒ แƒขแƒ”แƒ‘แƒ”แƒ‘แƒ˜

แƒ•แƒ˜แƒœแƒแƒ˜แƒ“แƒแƒœ แƒžแƒแƒกแƒฃแƒฎแƒ˜แƒกแƒ›แƒ’แƒ”แƒ‘แƒšแƒแƒ‘แƒ (แƒ›แƒแƒฎแƒแƒกแƒ˜แƒแƒ—แƒ”แƒ‘แƒšแƒ”แƒ‘แƒ–แƒ” แƒแƒœ แƒจแƒ”แƒชแƒ“แƒแƒ›แƒ”แƒ‘แƒ–แƒ”) แƒแƒ แƒ˜แƒก แƒฉแƒแƒกแƒ›แƒฃแƒšแƒ˜ แƒ”แƒ แƒ— แƒคแƒแƒ˜แƒšแƒจแƒ˜/แƒ™แƒšแƒแƒกแƒจแƒ˜, แƒ—แƒฅแƒ•แƒ”แƒœ แƒ–แƒฃแƒกแƒขแƒแƒ“ แƒ˜แƒชแƒ˜แƒ— แƒกแƒแƒ“ แƒฃแƒœแƒ“แƒ แƒœแƒแƒฎแƒแƒ— แƒ“แƒ แƒ แƒ แƒฃแƒœแƒ“แƒ แƒจแƒ”แƒชแƒ•แƒแƒšแƒแƒ—. แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒแƒ“: แƒฉแƒแƒฌแƒ”แƒ แƒ˜แƒก แƒแƒžแƒ”แƒ แƒแƒชแƒ˜แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒแƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒชแƒ•แƒšแƒ˜แƒก แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ แƒ›แƒแƒ˜แƒ—แƒฎแƒแƒ•แƒก แƒ›แƒฎแƒแƒšแƒแƒ“ แƒšแƒแƒ’แƒ”แƒ แƒ˜แƒก แƒจแƒ”แƒชแƒ•แƒšแƒแƒก. แƒแƒ  แƒแƒ แƒ˜แƒก แƒกแƒแƒญแƒ˜แƒ แƒ แƒ“แƒแƒœแƒแƒ แƒฉแƒ”แƒœแƒ˜ แƒ™แƒแƒ“แƒ˜แƒก แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒ.

แƒ™แƒ˜แƒ“แƒ”แƒ• แƒ”แƒ แƒ—แƒ˜ แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒ˜แƒ แƒแƒฎแƒแƒšแƒ˜ UI แƒ™แƒแƒœแƒขแƒ แƒแƒšแƒ˜แƒก แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ, แƒฌแƒ˜แƒœแƒ แƒ›แƒกแƒ’แƒแƒ•แƒกแƒ˜. แƒ—แƒฃ แƒ”แƒก แƒ’แƒแƒ˜แƒซแƒฃแƒšแƒ”แƒ‘แƒ— แƒ“แƒแƒแƒ›แƒแƒขแƒแƒ— 10 แƒกแƒฎแƒ•แƒแƒ“แƒแƒกแƒฎแƒ•แƒ แƒ”แƒ แƒ—แƒ”แƒฃแƒšแƒ˜ แƒ“แƒ 15 แƒ’แƒแƒœแƒกแƒฎแƒ•แƒแƒ•แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ’แƒแƒ“แƒแƒ›แƒงแƒ•แƒแƒœแƒ˜, แƒ แƒแƒ’แƒแƒ แƒช แƒฉแƒแƒœแƒก, แƒ’แƒแƒ“แƒแƒญแƒแƒ แƒ‘แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒฎแƒแƒ แƒ—.

3) แƒ—แƒฃ แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜แƒ›แƒ” แƒ“แƒ”แƒ•แƒ”แƒšแƒแƒžแƒ”แƒ แƒ˜ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก แƒ—แƒฅแƒ•แƒ”แƒœแƒ˜ แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜แƒก แƒกแƒฎแƒ•แƒแƒ“แƒแƒกแƒฎแƒ•แƒ แƒ›แƒแƒฎแƒแƒกแƒ˜แƒแƒ—แƒ”แƒ‘แƒšแƒ”แƒ‘แƒ–แƒ”, แƒ›แƒแƒจแƒ˜แƒœ แƒจแƒ”แƒ แƒฌแƒงแƒ›แƒ˜แƒก แƒ™แƒแƒœแƒคแƒšแƒ˜แƒฅแƒขแƒ˜แƒก แƒแƒšแƒ‘แƒแƒ—แƒแƒ‘แƒ, แƒแƒœแƒฃ แƒแƒšแƒ‘แƒแƒ—แƒแƒ‘แƒ แƒ˜แƒ›แƒ˜แƒกแƒ, แƒ แƒแƒ› แƒ”แƒ แƒ—แƒ˜ แƒ“แƒ แƒ˜แƒ’แƒ˜แƒ•แƒ” แƒคแƒแƒ˜แƒšแƒ˜/แƒ™แƒšแƒแƒกแƒ˜ แƒจแƒ”แƒ˜แƒชแƒ•แƒแƒšแƒแƒก แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜แƒ›แƒ” แƒ“แƒ”แƒ•แƒ”แƒšแƒแƒžแƒ”แƒ แƒ›แƒ แƒ”แƒ แƒ—แƒ“แƒ แƒแƒฃแƒšแƒแƒ“, แƒ›แƒ˜แƒœแƒ˜แƒ›แƒแƒšแƒฃแƒ แƒ˜แƒ.

แƒ’แƒแƒœแƒ›แƒแƒ แƒขแƒ”แƒ‘แƒ”แƒ‘แƒ˜

แƒ—แƒฃ แƒแƒฎแƒแƒšแƒ˜ แƒแƒžแƒ”แƒ แƒแƒชแƒ˜แƒ˜แƒก โ€žแƒ“แƒแƒแƒกแƒฎแƒ˜แƒ— แƒแƒ แƒแƒงแƒ˜ แƒ›แƒแƒ’แƒ˜แƒ“แƒ˜แƒก แƒฅแƒ•แƒ”แƒจโ€œ แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ˜แƒกแƒแƒก, แƒ—แƒฅแƒ•แƒ”แƒœ แƒฃแƒœแƒ“แƒ แƒ˜แƒ›แƒแƒฅแƒ›แƒ”แƒ“แƒแƒ— แƒšแƒแƒ’แƒ”แƒ แƒ–แƒ”, แƒ“แƒแƒšแƒ”แƒ•แƒ˜แƒกแƒ แƒ“แƒ แƒฉแƒแƒ›แƒแƒกแƒฎแƒ›แƒ˜แƒก แƒแƒžแƒ”แƒ แƒแƒชแƒ˜แƒแƒ–แƒ”, แƒ›แƒแƒจแƒ˜แƒœ, แƒ แƒแƒ’แƒแƒ แƒช แƒฉแƒแƒœแƒก, แƒžแƒแƒกแƒฃแƒฎแƒ˜แƒกแƒ›แƒ’แƒ”แƒ‘แƒšแƒแƒ‘แƒ”แƒ‘แƒ˜ แƒแƒ แƒแƒกแƒฌแƒแƒ แƒแƒ“ แƒ˜แƒงแƒแƒคแƒ. แƒ แƒ แƒ—แƒฅแƒ›แƒ แƒฃแƒœแƒ“แƒ, แƒ”แƒก แƒงแƒแƒ•แƒ”แƒšแƒ—แƒ•แƒ˜แƒก แƒแƒ  แƒแƒ แƒ˜แƒก แƒจแƒ”แƒกแƒแƒซแƒšแƒ”แƒ‘แƒ”แƒšแƒ˜, แƒ›แƒแƒ’แƒ แƒแƒ› แƒฃแƒœแƒ“แƒ แƒ•แƒ”แƒชแƒแƒ“แƒแƒ—, แƒ แƒแƒ› แƒ”แƒก แƒ›แƒแƒฉแƒ•แƒ”แƒœแƒ”แƒ‘แƒ”แƒšแƒ˜ แƒจแƒ”แƒ•แƒแƒ›แƒชแƒ˜แƒ แƒแƒ—.

4) แƒ‘แƒ˜แƒ–แƒœแƒ”แƒก แƒšแƒแƒ’แƒ˜แƒ™แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘ แƒ“แƒแƒ›แƒแƒ–แƒฃแƒกแƒขแƒ”แƒ‘แƒ”แƒšแƒ˜ แƒ™แƒ˜แƒ—แƒฎแƒ•แƒ˜แƒก แƒ“แƒแƒกแƒ›แƒ˜แƒกแƒแƒก (แƒ“แƒ”แƒ•แƒ”แƒšแƒแƒžแƒ”แƒ แƒ˜แƒกแƒ’แƒแƒœ แƒแƒœ แƒ›แƒ”แƒœแƒ”แƒฏแƒ”แƒ แƒ˜แƒกแƒ’แƒแƒœ), แƒ—แƒฅแƒ•แƒ”แƒœ แƒจแƒ”แƒ“แƒ˜แƒฎแƒแƒ แƒ— แƒ›แƒ™แƒแƒชแƒ แƒแƒ“ แƒ”แƒ แƒ— แƒ™แƒšแƒแƒกแƒจแƒ˜/แƒคแƒแƒ˜แƒšแƒจแƒ˜ แƒ“แƒ แƒ›แƒฎแƒแƒšแƒแƒ“ แƒ˜แƒฅแƒ˜แƒ“แƒแƒœ แƒ˜แƒฆแƒ”แƒ‘แƒ— แƒ˜แƒœแƒคแƒแƒ แƒ›แƒแƒชแƒ˜แƒแƒก.

แƒ’แƒแƒœแƒ›แƒแƒ แƒขแƒ”แƒ‘แƒ”แƒ‘แƒ˜

แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ”แƒ‘แƒ˜, แƒฌแƒ”แƒกแƒ”แƒ‘แƒ˜ แƒแƒœ แƒแƒšแƒ’แƒแƒ แƒ˜แƒ—แƒ›แƒ”แƒ‘แƒ˜ แƒ˜แƒฌแƒ”แƒ แƒ”แƒ‘แƒ แƒ™แƒแƒ›แƒžแƒแƒฅแƒขแƒฃแƒ แƒแƒ“, แƒ—แƒ˜แƒ—แƒแƒ”แƒฃแƒšแƒ˜ แƒ”แƒ แƒ— แƒแƒ“แƒ’แƒ˜แƒšแƒแƒก แƒ“แƒ แƒแƒ  แƒแƒ แƒ˜แƒก แƒ›แƒ˜แƒ›แƒแƒคแƒแƒœแƒขแƒฃแƒšแƒ˜ แƒ“แƒ แƒแƒจแƒ”แƒ‘แƒ˜แƒ— แƒ™แƒแƒ“แƒ˜แƒก แƒกแƒ˜แƒ•แƒ แƒชแƒ”แƒจแƒ˜.

5) แƒ“แƒแƒกแƒแƒฎแƒ”แƒšแƒ”แƒ‘แƒ แƒ’แƒแƒกแƒแƒ’แƒ”แƒ‘แƒ˜แƒ.

แƒ’แƒแƒœแƒ›แƒแƒ แƒขแƒ”แƒ‘แƒ”แƒ‘แƒ˜

แƒฉแƒ•แƒ”แƒœแƒ˜ แƒ™แƒšแƒแƒกแƒ˜ แƒแƒœ แƒ›แƒ”แƒ—แƒแƒ“แƒ˜ แƒžแƒแƒกแƒฃแƒฎแƒ˜แƒกแƒ›แƒ’แƒ”แƒ‘แƒ”แƒšแƒ˜แƒ แƒ”แƒ แƒ— แƒ แƒแƒ›แƒ”แƒ–แƒ” แƒ“แƒ แƒžแƒแƒกแƒฃแƒฎแƒ˜แƒกแƒ›แƒ’แƒ”แƒ‘แƒšแƒแƒ‘แƒ แƒแƒ˜แƒกแƒแƒฎแƒ”แƒ‘แƒ แƒ›แƒ˜แƒก แƒกแƒแƒฎแƒ”แƒšแƒ–แƒ”

AllManagersManagerService - แƒกแƒแƒ•แƒแƒ แƒแƒฃแƒ“แƒแƒ“ แƒฆแƒ›แƒ”แƒ แƒ—แƒ˜แƒก แƒ™แƒšแƒแƒกแƒ˜
LocalPayment - แƒแƒšแƒ‘แƒแƒ— แƒแƒ แƒ

แƒคแƒแƒ แƒ›แƒแƒšแƒ˜แƒ–แƒ›แƒ˜ 3. Occam-แƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒ˜ แƒ’แƒแƒœแƒ•แƒ˜แƒ—แƒแƒ แƒ”แƒ‘แƒ˜แƒก แƒ›แƒ”แƒ—แƒแƒ“แƒแƒšแƒแƒ’แƒ˜แƒ.

แƒ“แƒ˜แƒ–แƒแƒ˜แƒœแƒ˜แƒก แƒ“แƒแƒกแƒแƒฌแƒงแƒ˜แƒกแƒจแƒ˜ แƒ›แƒแƒ˜แƒ›แƒฃแƒœแƒ›แƒ แƒแƒ  แƒ˜แƒชแƒ˜แƒก แƒ“แƒ แƒแƒ  แƒ’แƒ แƒซแƒœแƒแƒ‘แƒก แƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒ˜แƒก แƒ’แƒแƒ“แƒแƒญแƒ แƒ˜แƒก แƒงแƒ•แƒ”แƒšแƒ แƒ“แƒแƒฎแƒ•แƒ”แƒฌแƒ˜แƒšแƒแƒ‘แƒแƒก แƒ“แƒ แƒจแƒ”แƒฃแƒซแƒšแƒ˜แƒ แƒจแƒ”แƒชแƒ“แƒแƒ›แƒ แƒ“แƒแƒฃแƒจแƒ•แƒแƒก. แƒจแƒ”แƒชแƒ“แƒแƒ›แƒ˜แƒก แƒ“แƒแƒจแƒ•แƒ”แƒ‘แƒ แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒกแƒฎแƒ•แƒแƒ“แƒแƒกแƒฎแƒ•แƒ แƒ’แƒ–แƒ˜แƒ—:

  • แƒ’แƒแƒฎแƒแƒ“แƒ”แƒ— แƒแƒ‘แƒ˜แƒ”แƒฅแƒขแƒ”แƒ‘แƒ˜ แƒซแƒแƒšแƒ˜แƒแƒœ แƒ“แƒ˜แƒ“แƒ˜ แƒกแƒฎแƒ•แƒแƒ“แƒแƒกแƒฎแƒ•แƒ แƒžแƒแƒกแƒฃแƒฎแƒ˜แƒกแƒ›แƒ’แƒ”แƒ‘แƒšแƒแƒ‘แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒ แƒฌแƒงแƒ›แƒ˜แƒ—
  • แƒฎแƒ”แƒšแƒแƒฎแƒแƒšแƒ˜ แƒฉแƒแƒ แƒฉแƒ แƒ”แƒ แƒ—แƒ˜ แƒžแƒแƒกแƒฃแƒฎแƒ˜แƒกแƒ›แƒ’แƒ”แƒ‘แƒšแƒแƒ‘แƒ˜แƒก แƒกแƒฎแƒ•แƒแƒ“แƒแƒกแƒฎแƒ•แƒ แƒขแƒ˜แƒžแƒ”แƒ‘แƒแƒ“ แƒ“แƒแƒงแƒแƒคแƒ˜แƒ—
  • แƒแƒ แƒแƒกแƒฌแƒแƒ แƒแƒ“ แƒ’แƒแƒœแƒกแƒแƒ–แƒฆแƒ•แƒ แƒ”แƒ— แƒžแƒแƒกแƒฃแƒฎแƒ˜แƒกแƒ›แƒ’แƒ”แƒ‘แƒšแƒแƒ‘แƒ˜แƒก แƒกแƒแƒ–แƒฆแƒ•แƒ แƒ”แƒ‘แƒ˜

แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ•แƒแƒœแƒ˜แƒ แƒ’แƒ•แƒแƒฎแƒกแƒแƒ•แƒ“แƒ”แƒก แƒฌแƒ”แƒกแƒ˜: โ€žแƒฏแƒแƒ‘แƒ˜แƒ แƒ“แƒ˜แƒ“แƒ˜ แƒจแƒ”แƒชแƒ“แƒแƒ›แƒ แƒ“แƒแƒฃแƒจแƒ•แƒโ€œ แƒแƒœ โ€žแƒ—แƒฃ แƒ“แƒแƒ แƒฌแƒ›แƒฃแƒœแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒแƒ  แƒฎแƒแƒ , แƒแƒ  แƒ’แƒแƒงแƒ แƒ˜แƒ’แƒ˜โ€œ. แƒ—แƒฃ, แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒแƒ“, แƒ—แƒฅแƒ•แƒ”แƒœแƒ˜ แƒ™แƒšแƒแƒกแƒ˜ แƒจแƒ”แƒ˜แƒชแƒแƒ•แƒก แƒแƒ  แƒžแƒแƒกแƒฃแƒฎแƒ˜แƒกแƒ›แƒ’แƒ”แƒ‘แƒšแƒแƒ‘แƒแƒก, แƒ›แƒแƒจแƒ˜แƒœ แƒ˜แƒก แƒ›แƒแƒ˜แƒœแƒช แƒ’แƒแƒกแƒแƒ’แƒ”แƒ‘แƒ˜แƒ แƒ“แƒ แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ“แƒแƒ˜แƒงแƒแƒก แƒแƒ แƒแƒ“ แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ˜แƒก แƒ™แƒแƒ“แƒ˜แƒก แƒ›แƒ˜แƒœแƒ˜แƒ›แƒแƒšแƒฃแƒ แƒ˜ แƒชแƒ•แƒšแƒ˜แƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒ—. แƒจแƒฃแƒจแƒ˜แƒก แƒœแƒแƒขแƒ”แƒฎแƒ”แƒ‘แƒ˜แƒ“แƒแƒœ แƒจแƒฃแƒจแƒ˜แƒก แƒแƒฌแƒงแƒแƒ‘แƒ, แƒ แƒแƒ’แƒแƒ แƒช แƒฌแƒ”แƒกแƒ˜, แƒฃแƒคแƒ แƒ แƒ แƒ—แƒฃแƒšแƒ˜แƒ แƒ™แƒแƒœแƒขแƒ”แƒฅแƒกแƒขแƒ˜แƒก แƒ’แƒแƒ•แƒ แƒชแƒ”แƒšแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒ แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜แƒ›แƒ” แƒคแƒแƒ˜แƒšแƒ–แƒ” แƒ“แƒ แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ˜แƒก แƒ™แƒแƒ“แƒจแƒ˜ แƒกแƒแƒญแƒ˜แƒ แƒ แƒ“แƒแƒ›แƒแƒ™แƒ˜แƒ“แƒ”แƒ‘แƒฃแƒšแƒ”แƒ‘แƒ˜แƒก แƒแƒ แƒแƒ แƒกแƒ”แƒ‘แƒแƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒ.

แƒ“แƒ แƒแƒ แƒ›แƒแƒก แƒ“แƒฆแƒ” แƒ•แƒฃแƒฌแƒแƒ“แƒแƒ—

SRP-แƒ˜แƒก แƒกแƒคแƒ”แƒ แƒ แƒแƒ  แƒจแƒ”แƒ›แƒแƒ˜แƒคแƒแƒ แƒ’แƒšแƒ”แƒ‘แƒ OOP แƒ“แƒ SOLID-แƒ˜แƒ—. แƒ˜แƒก แƒ”แƒฎแƒ”แƒ‘แƒ แƒ›แƒ”แƒ—แƒแƒ“แƒ”แƒ‘แƒก, แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ”แƒ‘แƒก, แƒ™แƒšแƒแƒกแƒ”แƒ‘แƒก, แƒ›แƒแƒ“แƒฃแƒšแƒ”แƒ‘แƒก, แƒ›แƒ˜แƒ™แƒ แƒแƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ”แƒ‘แƒกแƒ แƒ“แƒ แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ”แƒ‘แƒก. แƒ”แƒก แƒ”แƒฎแƒ”แƒ‘แƒ แƒ แƒแƒ’แƒแƒ แƒช "figax-figax-and-prod" แƒ“แƒ "rocket-science" แƒ’แƒแƒœแƒ•แƒ˜แƒ—แƒแƒ แƒ”แƒ‘แƒแƒก, แƒ แƒแƒช แƒกแƒแƒ›แƒงแƒแƒ แƒแƒก แƒงแƒ•แƒ”แƒšแƒ’แƒแƒœ แƒฃแƒ™แƒ”แƒ—แƒ”แƒกแƒก แƒฎแƒ“แƒ˜แƒก. แƒ—แƒฃ แƒ“แƒแƒคแƒ˜แƒฅแƒ แƒ“แƒ”แƒ‘แƒ˜แƒ—, แƒ”แƒก แƒ—แƒ˜แƒ—แƒฅแƒ›แƒ˜แƒก แƒงแƒ•แƒ”แƒšแƒ แƒ˜แƒœแƒŸแƒ˜แƒœแƒ”แƒ แƒ˜แƒ˜แƒก แƒคแƒฃแƒœแƒ“แƒแƒ›แƒ”แƒœแƒขแƒฃแƒ แƒ˜ แƒžแƒ แƒ˜แƒœแƒชแƒ˜แƒžแƒ˜แƒ. แƒ›แƒ”แƒฅแƒแƒœแƒ˜แƒ™แƒฃแƒ แƒ˜ แƒ˜แƒœแƒŸแƒ˜แƒœแƒ”แƒ แƒ˜แƒ, แƒ™แƒแƒœแƒขแƒ แƒแƒšแƒ˜แƒก แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ”แƒ‘แƒ˜ แƒ“แƒ, แƒ›แƒแƒ แƒ—แƒšแƒแƒช, แƒงแƒ•แƒ”แƒšแƒ แƒ แƒ—แƒฃแƒšแƒ˜ แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ แƒแƒ’แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒ™แƒแƒ›แƒžแƒแƒœแƒ”แƒœแƒขแƒ”แƒ‘แƒ˜แƒกแƒ’แƒแƒœ, แƒ“แƒ "แƒฅแƒ•แƒ”แƒคแƒ แƒแƒ’แƒ›แƒ”แƒœแƒขแƒแƒชแƒ˜แƒ" แƒแƒ แƒ—แƒ›แƒ”แƒ•แƒก แƒ“แƒ˜แƒ–แƒแƒ˜แƒœแƒ”แƒ แƒ”แƒ‘แƒก แƒ›แƒแƒฅแƒœแƒ˜แƒšแƒแƒ‘แƒแƒก, "แƒ–แƒ”แƒ“แƒ›แƒ”แƒขแƒแƒ“ แƒคแƒ แƒแƒ’แƒ›แƒ”แƒœแƒขแƒแƒชแƒ˜แƒ" แƒแƒ แƒ—แƒ›แƒ”แƒ•แƒก แƒ“แƒ˜แƒ–แƒแƒ˜แƒœแƒ”แƒ แƒ”แƒ‘แƒก แƒ”แƒคแƒ”แƒฅแƒขแƒฃแƒ แƒแƒ‘แƒแƒก แƒ“แƒ แƒแƒ แƒแƒกแƒฌแƒแƒ แƒ˜ แƒกแƒแƒ–แƒฆแƒ•แƒ แƒ”แƒ‘แƒ˜ แƒแƒ แƒ—แƒ›แƒ”แƒ•แƒก แƒ›แƒแƒ— แƒ’แƒแƒœแƒ”แƒ‘แƒแƒก แƒ“แƒ แƒกแƒ˜แƒ›แƒจแƒ•แƒ˜แƒ“แƒ”แƒก.

แƒ”แƒ แƒ—แƒ˜แƒแƒœแƒ˜ แƒžแƒแƒกแƒฃแƒฎแƒ˜แƒกแƒ›แƒ’แƒ”แƒ‘แƒšแƒแƒ‘แƒ˜แƒก แƒžแƒ แƒ˜แƒœแƒชแƒ˜แƒžแƒ˜. แƒแƒ แƒช แƒ˜แƒกแƒ” แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜, แƒ แƒแƒ’แƒแƒ แƒช แƒฉแƒแƒœแƒก

SRP แƒแƒ  แƒแƒ แƒ˜แƒก แƒ’แƒแƒ›แƒแƒ’แƒแƒœแƒ˜แƒšแƒ˜ แƒ‘แƒฃแƒœแƒ”แƒ‘แƒ˜แƒ— แƒ“แƒ แƒแƒ  แƒแƒ แƒ˜แƒก แƒ–แƒฃแƒกแƒขแƒ˜ แƒ›แƒ”แƒชแƒœแƒ˜แƒ”แƒ แƒ”แƒ‘แƒ˜แƒก แƒœแƒแƒฌแƒ˜แƒšแƒ˜. แƒ˜แƒก แƒแƒ แƒฆแƒ•แƒ”แƒ•แƒก แƒฉแƒ•แƒ”แƒœแƒก แƒ‘แƒ˜แƒแƒšแƒแƒ’แƒ˜แƒฃแƒ  แƒ“แƒ แƒคแƒกแƒ˜แƒฅแƒแƒšแƒแƒ’แƒ˜แƒฃแƒ  แƒจแƒ”แƒ–แƒฆแƒฃแƒ“แƒ•แƒ”แƒ‘แƒก, แƒ”แƒก แƒแƒ แƒ˜แƒก แƒ›แƒฎแƒแƒšแƒแƒ“ แƒ’แƒ–แƒ แƒ›แƒแƒ˜แƒ›แƒฃแƒœแƒ˜แƒก แƒแƒ“แƒแƒ›แƒ˜แƒแƒœแƒ˜แƒก แƒขแƒ•แƒ˜แƒœแƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ— แƒ แƒ—แƒฃแƒšแƒ˜ แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒก แƒ™แƒแƒœแƒขแƒ แƒแƒšแƒ˜แƒกแƒ แƒ“แƒ แƒ’แƒแƒœแƒ•แƒ˜แƒ—แƒแƒ แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก. แƒ˜แƒก แƒ’แƒ•แƒ”แƒฃแƒ‘แƒœแƒ”แƒ‘แƒ, แƒ แƒแƒ’แƒแƒ  แƒ“แƒแƒ•แƒจแƒแƒšแƒแƒ— แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ. แƒ—แƒแƒ•แƒ“แƒแƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒ˜ แƒคแƒแƒ แƒ›แƒฃแƒšแƒ˜แƒ แƒ”แƒ‘แƒ แƒ›แƒแƒ˜แƒ—แƒฎแƒแƒ•แƒ“แƒ แƒขแƒ”แƒšแƒ”แƒžแƒแƒขแƒ˜แƒ˜แƒก แƒกแƒแƒ™แƒ›แƒแƒแƒ“ แƒ“แƒ˜แƒ“ แƒ แƒแƒแƒ“แƒ”แƒœแƒแƒ‘แƒแƒก, แƒ›แƒแƒ’แƒ แƒแƒ› แƒ˜แƒ›แƒ”แƒ“แƒ˜ แƒ›แƒแƒฅแƒ•แƒก, แƒ แƒแƒ› แƒ”แƒก แƒกแƒขแƒแƒขแƒ˜แƒ แƒแƒกแƒฃแƒคแƒ—แƒแƒ•แƒ”แƒ‘แƒก แƒ™แƒ•แƒแƒ›แƒšแƒ˜แƒก แƒคแƒแƒ แƒแƒก.

แƒฌแƒงแƒแƒ แƒ: www.habr.com

แƒแƒฎแƒแƒšแƒ˜ แƒ™แƒแƒ›แƒ”แƒœแƒขแƒแƒ แƒ˜แƒก แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ