เจธเจฟเฉฐเจ—เจฒ เจœเจผเจฟเฉฐเจฎเฉ‡เจตเจพเจฐเฉ€ เจธเจฟเจงเจพเจ‚เจคเฅค เจ‡เฉฐเจจเจพ เจธเจงเจพเจฐเจจ เจจเจนเฉ€เจ‚ เจœเจฟเฉฐเจจเจพ เจ‡เจน เจฒเฉฑเจ—เจฆเจพ เจนเฉˆ

เจธเจฟเฉฐเจ—เจฒ เจœเจผเจฟเฉฐเจฎเฉ‡เจตเจพเจฐเฉ€ เจธเจฟเจงเจพเจ‚เจคเฅค เจ‡เฉฐเจจเจพ เจธเจงเจพเจฐเจจ เจจเจนเฉ€เจ‚ เจœเจฟเฉฐเจจเจพ เจ‡เจน เจฒเฉฑเจ—เจฆเจพ เจนเฉˆ เจธเจฟเฉฐเจ—เจฒ เจœเจฟเฉฐเจฎเฉ‡เจตเจพเจฐเฉ€ เจธเจฟเจงเจพเจ‚เจค, เจœเจฟเจธเจจเฉ‚เฉฐ เจธเจฟเฉฐเจ—เจฒ เจœเจฟเฉฐเจฎเฉ‡เจตเจพเจฐเฉ€ เจฆเจพ เจธเจฟเจงเจพเจ‚เจค เจตเฉ€ เจ•เจฟเจนเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ,
เจ‡เจ•เจธเจพเจฐ เจชเจฐเจฟเจตเจฐเจคเจจเจธเจผเฉ€เจฒเจคเจพ เจฆเจพ เจธเจฟเจงเจพเจ‚เจค - เจธเจฎเจเจฃ เจฒเจˆ เจ‡เฉฑเจ• เจฌเจนเฉเจค เจนเฉ€ เจคเจฟเจฒเจ•เจฃ เจตเจพเจฒเจพ เจฎเฉเฉฐเจกเจพ เจ…เจคเฉ‡ เจ‡เฉฑเจ• เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎเจฐ เจ‡เฉฐเจŸเจฐเจตเจฟเจŠ เจตเจฟเฉฑเจš เจ…เจœเจฟเจนเจพ เจ˜เจฌเจฐเจพเจนเจŸ เจตเจพเจฒเจพ เจธเจตเจพเจฒเฅค

เจ‡เจธ เจธเจฟเจงเจพเจ‚เจค เจจเจพเจฒ เจฎเฉ‡เจฐเฉ€ เจชเจนเจฟเจฒเฉ€ เจ—เฉฐเจญเฉ€เจฐ เจœเจพเจฃ-เจชเจ›เจพเจฃ เจฎเฉ‡เจฐเฉ‡ เจชเจนเจฟเจฒเฉ‡ เจธเจพเจฒ เจฆเฉ‡ เจธเจผเฉเจฐเฉ‚ เจตเจฟเฉฑเจš เจนเฉ‹เจˆ, เจœเจฆเฉ‹เจ‚ เจœเจตเจพเจจ เจ…เจคเฉ‡ เจนเจฐเฉ‡ เจฌเฉฑเจšเจฟเจ†เจ‚ เจจเฉ‚เฉฐ เจฒเจพเจฐเจตเฉ‡ เจคเฉ‹เจ‚ เจ…เจธเจฒ เจตเจฟเจฆเจฟเจ†เจฐเจฅเฉ€ เจฌเจฃเจพเจ‰เจฃ เจฒเจˆ เจœเฉฐเจ—เจฒ เจตเจฟเฉฑเจš เจฒเจฟเจœเจพเจ‡เจ† เจ—เจฟเจ†เฅค

เจœเฉฐเจ—เจฒ เจตเจฟเฉฑเจš, เจธเจพเจจเฉ‚เฉฐ 8-9 เจตเจฟเจ…เจ•เจคเฉ€เจ†เจ‚ เจฆเฉ‡ เจธเจฎเฉ‚เจนเจพเจ‚ เจตเจฟเฉฑเจš เจตเฉฐเจกเจฟเจ† เจ—เจฟเจ† เจธเฉ€ เจ…เจคเฉ‡ เจ‡เฉฑเจ• เจฎเฉเจ•เจพเจฌเจฒเจพ เจธเฉ€ - เจ•เจฟเจนเฉœเจพ เจธเจฎเฉ‚เจน เจตเฉ‹เจกเจ•เจพ เจฆเฉ€ เจ‡เฉฑเจ• เจฌเฉ‹เจคเจฒ เจธเจญ เจคเฉ‹เจ‚ เจคเฉ‡เจœเจผ เจชเฉ€เจตเฉ‡เจ—เจพ, เจฌเจธเจผเจฐเจคเฉ‡ เจ•เจฟ เจธเจฎเฉ‚เจน เจตเจฟเฉฑเจšเฉ‹เจ‚ เจชเจนเจฟเจฒเจพ เจตเจฟเจ…เจ•เจคเฉ€ เจ‡เฉฑเจ• เจ—เจฒเจพเจธ เจตเจฟเฉฑเจš เจตเฉ‹เจกเจ•เจพ เจชเจพเจตเฉ‡, เจฆเฉ‚เจœเจพ เจ‡เจธเจจเฉ‚เฉฐ เจชเฉ€เจตเฉ‡, เจ…เจคเฉ‡ เจคเฉ€เจœเฉ‡ เจ•เฉ‹เจฒ เจธเจจเฉˆเจ• เจนเฉˆเฅค เจฏเฉ‚เจจเจฟเจŸ เจœเจฟเจธ เจจเฉ‡ เจ†เจชเจฃเจพ เจ•เฉฐเจฎ เจชเฉ‚เจฐเจพ เจ•เจฐ เจฒเจฟเจ† เจนเฉˆ, เจ‰เจน เจธเจฎเฉ‚เจน เจฆเฉ€ เจ•เจคเจพเจฐ เจฆเฉ‡ เจ…เฉฐเจค เจคเฉฑเจ• เจšเจฒเฉ€ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆเฅค

เจ•เฉ‡เจธ เจœเจฟเฉฑเจฅเฉ‡ เจ•เจคเจพเจฐ เจฆเจพ เจ†เจ•เจพเจฐ เจคเจฟเฉฐเจจ เจฆเจพ เจ—เฉเจฃเจœ เจธเฉ€, เจเจธเจ†เจฐเจชเฉ€ เจฆเจพ เจ‡เฉฑเจ• เจตเจงเฉ€เจ† เจฒเจพเจ—เฉ‚เจ•เจฐเจจ เจธเฉ€เฅค

เจชเจฐเจฟเจญเจพเจธเจผเจพ 1. เจธเจฟเฉฐเจ—เจฒ เจœเจผเจฟเฉฐเจฎเฉ‡เจตเจพเจฐเฉ€เฅค

เจธเจฟเฉฐเจ—เจฒ เจœเจผเจฟเฉฐเจฎเฉ‡เจตเจพเจฐเฉ€ เจธเจฟเจงเจพเจ‚เจค (SRP) เจฆเฉ€ เจ…เจงเจฟเจ•เจพเจฐเจค เจชเจฐเจฟเจญเจพเจธเจผเจพ เจฆเฉฑเจธเจฆเฉ€ เจนเฉˆ เจ•เจฟ เจนเจฐเฉ‡เจ• เจ‡เจ•เจพเจˆ เจฆเฉ€ เจ†เจชเจฃเฉ€ เจœเจผเจฟเฉฐเจฎเฉ‡เจตเจพเจฐเฉ€ เจ…เจคเฉ‡ เจนเฉ‹เจ‚เจฆ เจฆเจพ เจ•เจพเจฐเจจ เจนเฉˆ, เจ…เจคเฉ‡ เจ‡เจธเจฆเฉ€ เจธเจฟเจฐเจซ เจ‡เฉฑเจ• เจœเจผเจฟเฉฐเจฎเฉ‡เจตเจพเจฐเฉ€ เจนเฉˆเฅค

เจ†เจฌเจœเฉˆเจ•เจŸ "เจกเจฐเจฟเฉฐเจ•เจฐ" เจคเฉ‡ เจตเจฟเจšเจพเจฐ เจ•เจฐเฉ‹ (เจŸเจฟเฉฑเจชเจฒเจฐ).
SRP เจธเจฟเจงเจพเจ‚เจค เจจเฉ‚เฉฐ เจฒเจพเจ—เฉ‚ เจ•เจฐเจจ เจฒเจˆ, เจ…เจธเฉ€เจ‚ เจœเจผเจฟเฉฐเจฎเฉ‡เจตเจพเจฐเฉ€เจ†เจ‚ เจจเฉ‚เฉฐ เจคเจฟเฉฐเจจ เจตเจฟเฉฑเจš เจตเฉฐเจกเจพเจ‚เจ—เฉ‡:

  • เจ‡เฉฑเจ• เจกเฉ‹เจฒเฉเจนเจฆเจพ เจนเฉˆ (เจชเฉ‹เจฐ เจ“เจชเจฐเฉ‡เจธเจผเจจ)
  • เจ‡เฉฑเจ• เจชเฉ€เจฃ (เจกเจฐเจฟเฉฐเจ•เจ…เฉฑเจช เจ“เจชเจฐเฉ‡เจธเจผเจจ)
  • เจ‡เฉฑเจ• เจ•เฉ‹เจฒ เจธเจจเฉˆเจ• เจนเฉˆ (เจŸเฉ‡เจ•เจฌเจพเจˆเจŸ เจ“เจชเจฐเฉ‡เจธเจผเจจ)

เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† เจตเจฟเฉฑเจš เจนเจฐเฉ‡เจ• เจญเจพเจ—เฉ€เจฆเจพเจฐ เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† เจฆเฉ‡ เจ‡เฉฑเจ• เจนเจฟเฉฑเจธเฉ‡ เจฒเจˆ เจœเจผเจฟเฉฐเจฎเฉ‡เจตเจพเจฐ เจนเฉˆ, เจ…เจฐเจฅเจพเจค, เจ‡เฉฑเจ• เจชเจฐเจฎเจพเจฃเฉ‚ เจœเจผเจฟเฉฐเจฎเฉ‡เจตเจพเจฐเฉ€ เจนเฉˆ - เจชเฉ€เจฃ, เจกเฉ‹เจฒเฉเจนเจฃเจพ เจœเจพเจ‚ เจธเจจเฉˆเจ• เจ•เจฐเจจเจพเฅค

เจชเฉ€เจฃ เจตเจพเจฒเฉ‡ เจฎเฉ‹เจฐเฉ€, เจฌเจฆเจฒเฉ‡ เจตเจฟเฉฑเจš, เจ‡เจนเจจเจพเจ‚ เจ“เจชเจฐเฉ‡เจธเจผเจจเจพเจ‚ เจฒเจˆ เจ‡เฉฑเจ• เจจเจ•เจพเจฌ เจนเฉˆ:

ั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}");
    }
}

เจ‡เจธ เจจเฉ‚เฉฐ เจ…เฉฐเจฆเจฐ เจธเจฎเฉ‡เจŸ เจ•เฉ‡ เจชเฉ‹เจฐ เจ“เจชเจฐเฉ‡เจธเจผเจจ, เจ…เจธเฉ€เจ‚ เจœเจผเจฟเฉฐเจฎเฉ‡เจตเจพเจฐเฉ€ เจ…เจคเฉ‡ เจ‡เจจเจ•เฉˆเจชเจธเฉ‚เจฒเฉ‡เจธเจผเจจ เจฆเฉ‡ เจฆเฉเจฐเจฟเจธเจผเจŸเฉ€เจ•เฉ‹เจฃ เจคเฉ‹เจ‚ เจธเจฎเจเจฆเจพเจฐเฉ€ เจจเจพเจฒ เจ•เฉฐเจฎ เจ•เฉ€เจคเจพ, เจชเจฐ เจนเฉเจฃ เจ…เจธเฉ€เจ‚ เจชเจฐเจฟเจตเจฐเจคเจจเจธเจผเฉ€เจฒเจคเจพ เจฆเฉ‡ เจธเจฟเจงเจพเจ‚เจค เจจเจพเจฒ เจ‰เจฒเจเจฃ เจตเจฟเฉฑเจš เจนเจพเจ‚เฅค เจ†เจชเจฐเฉ‡เจธเจผเจจ เจคเฉ‹เจ‚ เจ‡เจฒเจพเจตเจพ, เจœเฉ‹ เจฌเจฆเจฒ เจธเจ•เจฆเจพ เจนเฉˆ, เจฒเฉŒเจ—เจฟเฉฐเจ— เจ†เจชเจฃเฉ‡ เจ†เจช เจตเฉ€ เจฌเจฆเจฒเจฃเจฏเฉ‹เจ— เจฌเจฃ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆเฅค เจคเฉเจนเจพเจจเฉ‚เฉฐ เจชเฉ‹เจฐเจฟเฉฐเจ— เจ“เจชเจฐเฉ‡เจธเจผเจจ เจฒเจˆ เจตเฉฑเจ–เจฐเจพ เจ•เจฐเจจเจพ เจ…เจคเฉ‡ เจ‡เฉฑเจ• เจตเจฟเจธเจผเฉ‡เจธเจผ เจฒเฉŒเจ—เจฐ เจฌเจฃเจพเจ‰เจฃเจพ เจนเฉ‹เจตเฉ‡เจ—เจพ:

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 เจฆเฉ€ เจคเฉ€เจœเฉ€ เจชเจฐเจฟเจญเจพเจธเจผเจพ เจฆเฉ€ เจฎเฉŒเจœเฉ‚เจฆเจ—เฉ€ เจฌเจพเจฐเฉ‡ เจธเจฟเฉฑเจ–เฉ‡ เจฌเจฟเจจเจพเจ‚:

"เจ‡เจ•เจนเจฟเจฐเฉ€ เจœเจผเจฟเฉฐเจฎเฉ‡เจตเจพเจฐเฉ€ เจธเจฟเจงเจพเจ‚เจค เจฆเฉฑเจธเจฆเจพ เจนเฉˆ เจ•เจฟ เจคเจฌเจฆเฉ€เจฒเฉ€เจ†เจ‚ เจฆเฉ‡ เจธเจฎเจพเจจ เจšเฉ€เจœเจผเจพเจ‚ เจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจฅเจพเจ‚ เจคเฉ‡ เจธเจŸเฉ‹เจฐ เจ•เฉ€เจคเจพ เจœเจพเจฃเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆ". เจœเจพเจ‚ "เจ‡เจ•เฉฑเจ เฉ‡ เจ•เฉ€ เจฌเจฆเจฒเจพเจ… เจ‡เฉฑเจ• เจœเจ—เฉเจนเจพ 'เจคเฉ‡ เจฐเฉฑเจ–เจฟเจ† เจœเจพเจฃเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆ"

เจญเจพเจต, เจœเฉ‡เจ•เจฐ เจ…เจธเฉ€เจ‚ เจ•เจฟเจธเฉ‡ เจ“เจชเจฐเฉ‡เจธเจผเจจ เจฆเฉ€ เจฒเจพเจ—เจฟเฉฐเจ— เจจเฉ‚เฉฐ เจฌเจฆเจฒเจฆเฉ‡ เจนเจพเจ‚, เจคเจพเจ‚ เจธเจพเจจเฉ‚เฉฐ เจ‡เจธเจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจฅเจพเจ‚ 'เจคเฉ‡ เจฌเจฆเจฒเจฃเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆเฅค

เจ‡เจน เจ‡เฉฑเจ• เจฌเจนเฉเจค เจฎเจนเฉฑเจคเจตเจชเฉ‚เจฐเจจ เจจเฉเจ•เจคเจพ เจนเฉˆ - เจ•เจฟเจ‰เจ‚เจ•เจฟ SRP เจฆเฉ€เจ†เจ‚ เจธเจพเจฐเฉ€เจ†เจ‚ เจตเจฟเจ†เจ–เจฟเจ†เจตเจพเจ‚ เจœเฉ‹ เจ‰เฉฑเจชเจฐ เจฆเจฟเฉฑเจคเฉ€เจ†เจ‚ เจ—เจˆเจ†เจ‚ เจธเจจ เจ•เจฟ เจ‡เจน เจ•เจฟเจนเจพ เจ—เจฟเจ† เจนเฉˆ เจ•เจฟ เจ•เจฟเจธเจฎเจพเจ‚ เจจเฉ‚เฉฐ เจ•เฉเจšเจฒเจฃ เจตเฉ‡เจฒเฉ‡ เจ‰เจนเจจเจพเจ‚ เจจเฉ‚เฉฐ เจ•เฉเจšเจฒเจฃเจพ เจœเจผเจฐเฉ‚เจฐเฉ€ เจธเฉ€, เจฏเจพเจจเฉ€ เจ‰เจนเจจเจพเจ‚ เจจเฉ‡ เจตเจธเจคเฉ‚ เจฆเฉ‡ เจ†เจ•เจพเจฐ 'เจคเฉ‡ เจ‡เฉฑเจ• "เจ‰เฉฑเจชเจฐเฉ€ เจธเฉ€เจฎเจพ" เจฒเจ—เจพ เจฆเจฟเฉฑเจคเฉ€ เจธเฉ€, เจ…เจคเฉ‡ เจนเฉเจฃ เจ…เจธเฉ€เจ‚ เจชเจนเจฟเจฒเจพเจ‚ เจนเฉ€ "เจนเฉ‡เจ เจฒเฉ€ เจธเฉ€เจฎเจพ" เจฌเจพเจฐเฉ‡ เจ—เฉฑเจฒ เจ•เจฐ เจฐเจนเฉ‡ เจนเจพเจ‚เฅค เจนเฉ‹เจฐ เจธเจผเจฌเจฆเจพเจ‚ เจตเจฟเจš, เจเจธเจ†เจฐเจชเฉ€ เจจเฉ‚เฉฐ เจจเจพ เจธเจฟเจฐเจซเจผ "เจ•เฉเจšเจฒเจฃ เจตเฉ‡เจฒเฉ‡ เจ•เฉเจšเจฒเจฃ" เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆ, เจธเจ—เฉ‹เจ‚ เจ‡เจธ เจจเฉ‚เฉฐ เจœเจผเจฟเจ†เจฆเจพ เจจเจพ เจ•เจฐเจจ เจฆเฉ€ เจตเฉ€ เจฒเฉ‹เฉœ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆ - "เจ‡เฉฐเจŸเจฐเจฒเฉŒเจ•เจฟเฉฐเจ— เจšเฉ€เจœเจผเจพเจ‚ เจจเฉ‚เฉฐ เจจเจพ เจ•เฉเจšเจฒเฉ‹". เจ‡เจน เจ“เจ•เจพเจฎ เจฆเฉ‡ เจฐเฉ‡เจœเจผเจฐ เจ…เจคเฉ‡ เจฌเจพเจ‚เจฆเจฐ เจ†เจฆเจฎเฉ€ เจตเจฟเจšเจ•เจพเจฐ เจฎเจนเจพเจจ เจฒเฉœเจพเจˆ เจนเฉˆ!

เจธเจฟเฉฐเจ—เจฒ เจœเจผเจฟเฉฐเจฎเฉ‡เจตเจพเจฐเฉ€ เจธเจฟเจงเจพเจ‚เจคเฅค เจ‡เฉฐเจจเจพ เจธเจงเจพเจฐเจจ เจจเจนเฉ€เจ‚ เจœเจฟเฉฐเจจเจพ เจ‡เจน เจฒเฉฑเจ—เจฆเจพ เจนเฉˆ

เจนเฉเจฃ เจชเฉ€เจฃ เจตเจพเจฒเฉ‡ เจจเฉ‚เฉฐ เจฌเจฟเจนเจคเจฐ เจฎเจนเจฟเจธเฉ‚เจธ เจ•เจฐเจจเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆ. เจ‡เจธ เจคเฉฑเจฅ เจคเฉ‹เจ‚ เจ‡เจฒเจพเจตเจพ เจ•เจฟ 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 เจฆเฉ€ เจชเจฐเจฟเจญเจพเจธเจผเจพ

  1. เจคเฉฑเจคเจพเจ‚ เจจเฉ‚เฉฐ เจตเฉฑเจ– เจ•เจฐเฉ‹ เจคเจพเจ‚ เจœเฉ‹ เจ‰เจนเจจเจพเจ‚ เจตเจฟเฉฑเจšเฉ‹เจ‚ เจนเจฐ เจ‡เฉฑเจ• เจšเฉ€เจœเจผ เจฒเจˆ เจœเจผเจฟเฉฐเจฎเฉ‡เจตเจพเจฐ เจนเฉ‹เจตเฉ‡เฅค
  2. เจœเจผเจฟเฉฐเจฎเฉ‡เจตเจพเจฐเฉ€ เจฆเจพ เจ…เจฐเจฅ เจนเฉˆ "เจฌเจฆเจฒเจฃ เจฆเจพ เจ•เจพเจฐเจจ"เฅค เจญเจพเจต, เจตเจชเจพเจฐเจ• เจคเจฐเจ• เจฆเฉ‡ เจฐเฉ‚เจช เจตเจฟเฉฑเจš, เจนเจฐเฉ‡เจ• เจคเฉฑเจค เจตเจฟเฉฑเจš เจคเจฌเจฆเฉ€เจฒเฉ€ เจฆเจพ เจ‡เฉฑเจ• เจนเฉ€ เจ•เจพเจฐเจจ เจนเฉเฉฐเจฆเจพ เจนเฉˆเฅค
  3. เจ•เจพเจฐเฉ‹เจฌเจพเจฐเฉ€ เจคเจฐเจ• เจตเจฟเฉฑเจš เจธเฉฐเจญเจพเจตเฉ€ เจคเจฌเจฆเฉ€เจฒเฉ€เจ†เจ‚เฅค เจธเจฅเจพเจจเจ• เจนเฉ‹เจฃเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆ. เจธเจฎเจ•เจพเจฒเฉ€ เจฐเฉ‚เจช เจตเจฟเฉฑเจš เจฌเจฆเจฒเจฃ เจตเจพเจฒเฉ‡ เจคเฉฑเจค เจจเฉ‡เฉœเฉ‡ เจนเฉ‹เจฃเฉ‡ เจšเจพเจนเฉ€เจฆเฉ‡ เจนเจจเฅค

เจฐเจธเจฎเฉ€เจตเจพเจฆ 2. เจœเจผเจฐเฉ‚เจฐเฉ€ เจธเจตเฉˆ-เจœเจพเจ‚เจš เจฎเจพเจชเจฆเฉฐเจกเฅค

เจฎเฉˆเจ‚ SRP เจจเฉ‚เฉฐ เจชเฉ‚เจฐเจพ เจ•เจฐเจจ เจฒเจˆ เจฒเฉ‹เฉœเฉ€เจ‚เจฆเฉ‡ เจฎเจพเจชเจฆเฉฐเจก เจจเจนเฉ€เจ‚ เจฆเฉ‡เจ–เฉ‡ เจนเจจเฅค เจชเจฐ เจœเจผเจฐเฉ‚เจฐเฉ€ เจธเจผเจฐเจคเจพเจ‚ เจนเจจ:

1) เจ†เจชเจฃเฉ‡ เจ†เจช เจจเฉ‚เฉฐ เจชเฉเฉฑเจ›เฉ‹ เจ•เจฟ เจ‡เจน เจ•เจฒเจพเจธ/เจตเจฟเจงเฉ€/เจฎเฉ‹เจกเจฟเจŠเจฒ/เจธเฉ‡เจตเจพ เจ•เฉ€ เจ•เจฐเจฆเฉ€ เจนเฉˆเฅค เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจธเจงเจพเจฐเจจ เจชเจฐเจฟเจญเจพเจธเจผเจพ เจฆเฉ‡ เจจเจพเจฒ เจ‡เจธเจฆเจพ เจœเจตเจพเจฌ เจฆเฉ‡เจฃเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆเฅค ( เจคเฉเจนเจพเจกเจพ เจงเฉฐเจจเจตเจพเจฆ เจฌเฉเจฐเจพเจ‡เจŸเฉ‹เจฐเฉ€ )

เจตเจฟเจ†เจ–เจฟเจ†

เจนเจพเจฒเจพเจ‚เจ•เจฟ, เจ•เจˆ เจตเจพเจฐ เจ‡เฉฑเจ• เจธเจงเจพเจฐเจจ เจชเจฐเจฟเจญเจพเจธเจผเจพ เจฒเฉฑเจญเจฃเจพ เจฌเจนเฉเจค เจฎเฉเจธเจผเจ•เจฒ เจนเฉเฉฐเจฆเจพ เจนเฉˆ

2) เจ‡เฉฑเจ• เจฌเฉฑเจ— เจจเฉ‚เฉฐ เจ เฉ€เจ• เจ•เจฐเจจเจพ เจœเจพเจ‚ เจ‡เฉฑเจ• เจจเจตเฉ€เจ‚ เจตเจฟเจธเจผเฉ‡เจธเจผเจคเจพ เจœเฉ‹เฉœเจจเจพ เจซเจพเจˆเจฒเจพเจ‚/เจ•เจฒเจพเจธเจพเจ‚ เจฆเฉ€ เจ˜เฉฑเจŸเฉ‹-เจ˜เฉฑเจŸ เจธเฉฐเจ–เจฟเจ† เจจเฉ‚เฉฐ เจชเฉเจฐเจญเจพเจตเจฟเจค เจ•เจฐเจฆเจพ เจนเฉˆเฅค เจ†เจฆเจฐเจธเจผเจ• เจคเฉŒเจฐ 'เจคเฉ‡ - เจ‡เฉฑเจ•.

เจตเจฟเจ†เจ–เจฟเจ†

เจ•เจฟเจ‰เจ‚เจ•เจฟ เจœเจผเจฟเฉฐเจฎเฉ‡เจตเจพเจฐเฉ€ (เจ•เจฟเจธเฉ‡ เจตเจฟเจธเจผเฉ‡เจธเจผเจคเจพ เจœเจพเจ‚ เจฌเฉฑเจ— เจฒเจˆ) เจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจซเจพเจˆเจฒ/เจ•เจฒเจพเจธ เจตเจฟเฉฑเจš เจธเจผเจพเจฎเจฒ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆ, เจคเฉเจธเฉ€เจ‚ เจฌเจฟเจฒเจ•เฉเจฒ เจœเจพเจฃเจฆเฉ‡ เจนเฉ‹ เจ•เจฟ เจ•เจฟเฉฑเจฅเฉ‡ เจฆเฉ‡เจ–เจฃเจพ เจนเฉˆ เจ…เจคเฉ‡ เจ•เฉ€ เจธเฉฐเจชเจพเจฆเจฟเจค เจ•เจฐเจจเจพ เจนเฉˆเฅค เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ: เจฒเฉŒเจ—เจฟเฉฐเจ— เจ“เจชเจฐเฉ‡เจธเจผเจจเจพเจ‚ เจฆเฉ‡ เจ†เจ‰เจŸเจชเฉเฉฑเจŸ เจจเฉ‚เฉฐ เจฌเจฆเจฒเจฃ เจฆเฉ€ เจตเจฟเจธเจผเฉ‡เจธเจผเจคเจพ เจฒเจˆ เจธเจฟเจฐเจซ เจฒเฉŒเจ—เจฐ เจจเฉ‚เฉฐ เจฌเจฆเจฒเจฃ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉ‹เจตเฉ‡เจ—เฉ€เฅค เจฌเจพเจ•เฉ€ เจ•เฉ‹เจก เจจเฉ‚เฉฐ เจšเจฒเจพเจ‰เจฃ เจฆเฉ€ เจ•เฉ‹เจˆ เจฒเฉ‹เฉœ เจจเจนเฉ€เจ‚ เจนเฉˆเฅค

เจ‡เฉฑเจ• เจนเฉ‹เจฐ เจ‰เจฆเจพเจนเจฐเจจ เจ‡เฉฑเจ• เจจเจตเจพเจ‚ UI เจจเจฟเจฏเฉฐเจคเจฐเจฃ เจœเฉ‹เฉœ เจฐเจฟเจนเจพ เจนเฉˆ, เจœเฉ‹ เจ•เจฟ เจชเจฟเจ›เจฒเฉ‡ เจฒเฉ‹เจ•เจพเจ‚ เจตเจพเจ‚เจ— เจนเฉˆเฅค เจœเฉ‡เจ•เจฐ เจ‡เจน เจคเฉเจนเจพเจจเฉ‚เฉฐ 10 เจตเฉฑเจ–-เจตเฉฑเจ– เจธเฉฐเจธเจฅเจพเจตเจพเจ‚ เจ…เจคเฉ‡ 15 เจตเฉฑเจ–-เจตเฉฑเจ– เจ•เจจเจตเจฐเจŸเจฐเจพเจ‚ เจจเฉ‚เฉฐ เจœเฉ‹เฉœเจจ เจฒเจˆ เจฎเจœเจผเจฌเฉ‚เจฐ เจ•เจฐเจฆเจพ เจนเฉˆ, เจคเจพเจ‚ เจ…เจœเจฟเจนเจพ เจฒเจ—เจฆเจพ เจนเฉˆ เจ•เจฟ เจคเฉเจธเฉ€เจ‚ เจ‡เจธ เจจเฉ‚เฉฐ เจœเจผเจฟเจ†เจฆเจพ เจ•เจฐ เจฐเจนเฉ‡ เจนเฉ‹เฅค

3) เจœเฉ‡เจ•เจฐ เจ•เจˆ เจกเจฟเจตเฉˆเจฒเจชเจฐ เจคเฉเจนเจพเจกเฉ‡ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจฆเฉ€เจ†เจ‚ เจตเฉฑเจ–-เจตเฉฑเจ– เจตเจฟเจธเจผเฉ‡เจธเจผเจคเจพเจตเจพเจ‚ 'เจคเฉ‡ เจ•เฉฐเจฎ เจ•เจฐ เจฐเจนเฉ‡ เจนเจจ, เจคเจพเจ‚ เจ…เจญเฉ‡เจฆ เจนเฉ‹เจฃ เจฆเฉ€ เจธเฉฐเจญเจพเจตเจจเจพ, เจฏเจพเจจเฉ€ เจ•เจฟ เจ‡เฉฑเจ•เฉ‹ เจธเจฎเฉ‡เจ‚ 'เจคเฉ‡ เจ•เจˆ เจกเจฟเจตเฉˆเจฒเจชเจฐเจพเจ‚ เจฆเฉเจ†เจฐเจพ เจ‡เฉฑเจ•เฉ‹ เจซเจพเจˆเจฒ/เจ•เจฒเจพเจธ เจจเฉ‚เฉฐ เจฌเจฆเจฒเจฃ เจฆเฉ€ เจธเฉฐเจญเจพเจตเจจเจพ เจฌเจนเฉเจค เจ˜เฉฑเจŸ เจนเฉˆเฅค

เจตเจฟเจ†เจ–เจฟเจ†

เจœเฉ‡, เจ‡เฉฑเจ• เจจเจตเจพเจ‚ เจ“เจชเจฐเฉ‡เจธเจผเจจ "เจŸเฉ‡เจฌเจฒ เจฆเฉ‡ เจนเฉ‡เจ เจพเจ‚ เจตเฉ‹เจกเจ•เจพ เจกเฉ‹เจฒเฉเจน เจฆเจฟเจ“" เจจเฉ‚เฉฐ เจœเฉ‹เฉœเจฆเฉ‡ เจธเจฎเฉ‡เจ‚, เจคเฉเจนเจพเจจเฉ‚เฉฐ เจฒเฉŒเจ—เจฐ, เจชเฉ€เจฃ เจ…เจคเฉ‡ เจกเฉ‹เจฒเฉเจนเจฃ เจฆเฉ‡ เจธเฉฐเจšเจพเจฒเจจ เจจเฉ‚เฉฐ เจชเฉเจฐเจญเจพเจตเจค เจ•เจฐเจจ เจฆเฉ€ เจœเจผเจฐเฉ‚เจฐเจค เจนเฉเฉฐเจฆเฉ€ เจนเฉˆ, เจคเจพเจ‚ เจ…เจœเจฟเจนเจพ เจฒเจ—เจฆเจพ เจนเฉˆ เจ•เจฟ เจœเจผเจฟเฉฐเจฎเฉ‡เจตเจพเจฐเฉ€เจ†เจ‚ เจŸเฉ‡เจขเฉ‡ เจขเฉฐเจ— เจจเจพเจฒ เจตเฉฐเจกเฉ€เจ†เจ‚ เจ—เจˆเจ†เจ‚ เจนเจจ. เจฌเฉ‡เจธเจผเฉฑเจ•, เจ‡เจน เจนเจฎเฉ‡เจธเจผเจพ เจธเฉฐเจญเจต เจจเจนเฉ€เจ‚ เจนเฉเฉฐเจฆเจพ, เจชเจฐ เจธเจพเจจเฉ‚เฉฐ เจ‡เจธ เจ…เฉฐเจ•เฉœเฉ‡ เจจเฉ‚เฉฐ เจ˜เจŸเจพเจ‰เจฃ เจฆเฉ€ เจ•เฉ‹เจธเจผเจฟเจธเจผ เจ•เจฐเจจเฉ€ เจšเจพเจนเฉ€เจฆเฉ€ เจนเฉˆ.

4) เจœเจฆเฉ‹เจ‚ เจ•เจพเจฐเฉ‹เจฌเจพเจฐเฉ€ เจคเจฐเจ• (เจ•เจฟเจธเฉ‡ เจกเจฟเจตเฉˆเจฒเจชเจฐ เจœเจพเจ‚ เจฎเฉˆเจจเฉ‡เจœเจฐ เจคเฉ‹เจ‚) เจฌเจพเจฐเฉ‡ เจธเจชเฉฑเจธเจผเจŸ เจธเจตเจพเจฒ เจชเฉเฉฑเจ›เจฟเจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆ, เจคเจพเจ‚ เจคเฉเจธเฉ€เจ‚ เจธเจ–เจคเฉ€ เจจเจพเจฒ เจ‡เฉฑเจ• เจ•เจฒเจพเจธ/เจซเจพเจˆเจฒ เจตเจฟเฉฑเจš เจœเจพเจ‚เจฆเฉ‡ เจนเฉ‹ เจ…เจคเฉ‡ เจ‰เฉฑเจฅเฉ‹เจ‚ เจนเฉ€ เจœเจพเจฃเจ•เจพเจฐเฉ€ เจชเฉเจฐเจพเจชเจค เจ•เจฐเจฆเฉ‡ เจนเฉ‹เฅค

เจตเจฟเจ†เจ–เจฟเจ†

เจตเจฟเจธเจผเฉ‡เจธเจผเจคเจพเจตเจพเจ‚, เจจเจฟเจฏเจฎ เจœเจพเจ‚ เจเจฒเจ—เฉ‹เจฐเจฟเจฆเจฎ เจธเฉฐเจ–เฉ‡เจช เจฐเฉ‚เจช เจตเจฟเฉฑเจš เจฒเจฟเจ–เฉ‡ เจ—เจ เจนเจจ, เจนเจฐเฉ‡เจ• เจ‡เฉฑเจ• เจฅเจพเจ‚ เจคเฉ‡, เจ…เจคเฉ‡ เจ•เฉ‹เจก เจธเจชเฉ‡เจธ เจตเจฟเฉฑเจš เจซเจฒเฉˆเจ—เจพเจ‚ เจจเจพเจฒ เจ–เจฟเฉฐเจกเฉ‡ เจนเฉ‹เจ เจจเจนเฉ€เจ‚ เจนเจจเฅค

5) เจจเจพเจฎเจ•เจฐเจจ เจธเจชเจธเจผเจŸ เจนเฉˆเฅค

เจตเจฟเจ†เจ–เจฟเจ†

เจธเจพเจกเฉ€ เจœเจฎเจพเจค เจœเจพเจ‚ เจตเจฟเจงเฉ€ เจ‡เฉฑเจ• เจšเฉ€เจœเจผ เจฒเจˆ เจœเจผเจฟเฉฐเจฎเฉ‡เจตเจพเจฐ เจนเฉˆ, เจ…เจคเฉ‡ เจœเจผเจฟเฉฐเจฎเฉ‡เจตเจพเจฐเฉ€ เจ‰เจธ เจฆเฉ‡ เจจเจพเจฎ เจคเฉ‹เจ‚ เจเจฒเจ•เจฆเฉ€ เจนเฉˆ

AllManagersManagerService - เจธเฉฐเจญเจพเจตเจค เจคเฉŒเจฐ 'เจคเฉ‡ เจ‡เฉฑเจ• เจฐเฉฑเจฌ เจตเจฐเจ—
เจธเจฅเจพเจจเจ• เจญเฉเจ—เจคเจพเจจ - เจธเจผเจพเจ‡เจฆ เจจเจนเฉ€เจ‚

เจฐเจธเจฎเฉ€เจตเจพเจฆ 3. เจ“เจ•เจพเจฎ-เจชเจนเจฟเจฒเฉ€ เจตเจฟเจ•เจพเจธ เจตเจฟเจงเฉ€เฅค

เจกเจฟเจœเจผเจพเจ‡เจจ เจฆเฉ€ เจธเจผเฉเจฐเฉ‚เจ†เจค 'เจคเฉ‡, เจฌเจพเจ‚เจฆเจฐ เจ†เจฆเจฎเฉ€ เจจเจนเฉ€เจ‚ เจœเจพเจฃเจฆเจพ เจนเฉˆ เจ…เจคเฉ‡ เจธเจฎเฉฑเจธเจฟเจ† เจฆเฉ‡ เจนเฉฑเจฒ เจนเฉ‹เจฃ เจฆเฉ€เจ†เจ‚ เจธเจพเจฐเฉ€เจ†เจ‚ เจธเฉ‚เจ–เจฎเจคเจพเจตเจพเจ‚ เจจเฉ‚เฉฐ เจฎเจนเจฟเจธเฉ‚เจธ เจจเจนเฉ€เจ‚ เจ•เจฐเจฆเจพ เจนเฉˆ เจ…เจคเฉ‡ เจ—เจฒเจคเฉ€ เจ•เจฐ เจธเจ•เจฆเจพ เจนเฉˆ. เจคเฉเจธเฉ€เจ‚ เจตเฉฑเจ–-เจตเฉฑเจ– เจคเจฐเฉ€เจ•เจฟเจ†เจ‚ เจจเจพเจฒ เจ—เจฒเจคเฉ€เจ†เจ‚ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹:

  • เจตเฉฑเจ–-เจตเฉฑเจ– เจœเจผเจฟเฉฐเจฎเฉ‡เจตเจพเจฐเฉ€เจ†เจ‚ เจจเฉ‚เฉฐ เจฎเจฟเจฒเจพ เจ•เฉ‡ เจตเจธเจคเฉ‚เจ†เจ‚ เจจเฉ‚เฉฐ เจฌเจนเฉเจค เจตเฉฑเจกเจพ เจฌเจฃเจพเจ“
  • เจ‡เฉฑเจ• เจนเฉ€ เจœเจผเจฟเฉฐเจฎเฉ‡เจตเจพเจฐเฉ€ เจจเฉ‚เฉฐ เจ•เจˆ เจตเฉฑเจ–-เจตเฉฑเจ– เจ•เจฟเจธเจฎเจพเจ‚ เจตเจฟเฉฑเจš เจตเฉฐเจก เจ•เฉ‡ เจฎเฉเฉœ-เจฎเฉเฉœ เจ•เจฐเจจเจพ
  • เจœเจผเจฟเฉฐเจฎเฉ‡เจตเจพเจฐเฉ€ เจฆเฉ€เจ†เจ‚ เจธเฉ€เจฎเจพเจตเจพเจ‚ เจจเฉ‚เฉฐ เจ—เจฒเจค เจขเฉฐเจ— เจจเจพเจฒ เจชเจฐเจฟเจญเจพเจธเจผเจฟเจค เจ•เจฐเฉ‹

เจ‡เจน เจจเจฟเจฏเจฎ เจฏเจพเจฆ เจฐเฉฑเจ–เจฃเจพ เจฎเจนเฉฑเจคเจตเจชเฉ‚เจฐเจจ เจนเฉˆ: "เจ‡เฉฑเจ• เจตเฉฑเจกเฉ€ เจ—เจฒเจคเฉ€ เจ•เจฐเจจเจพ เจฌเจฟเจนเจคเจฐ เจนเฉˆ," เจœเจพเจ‚ "เจœเฉ‡เจ•เจฐ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจฏเจ•เฉ€เจจ เจจเจนเฉ€เจ‚ เจนเฉˆ, เจคเจพเจ‚ เจ‡เจธเจจเฉ‚เฉฐ เจตเฉฐเจกเฉ‹ เจจเจพเฅค" เจœเฉ‡เจ•เจฐ, เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, เจคเฉเจนเจพเจกเฉ€ เจ•เจฒเจพเจธ เจตเจฟเฉฑเจš เจฆเฉ‹ เจœเจฟเฉฐเจฎเฉ‡เจตเจพเจฐเฉ€เจ†เจ‚ เจนเจจ, เจคเจพเจ‚ เจ‡เจน เจ…เจœเฉ‡ เจตเฉ€ เจธเจฎเจเจฃ เจฏเฉ‹เจ— เจนเฉˆ เจ…เจคเฉ‡ เจ•เจฒเจพเจ‡เฉฐเจŸ เจ•เฉ‹เจก เจตเจฟเฉฑเจš เจ˜เฉฑเจŸเฉ‹-เจ˜เฉฑเจŸ เจฌเจฆเจฒเจพเจ… เจฆเฉ‡ เจจเจพเจฒ เจฆเฉ‹ เจตเจฟเฉฑเจš เจตเฉฐเจกเจฟเจ† เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆเฅค เจ•เจˆ เจซเจพเจˆเจฒเจพเจ‚ เจตเจฟเฉฑเจš เจชเฉเจฐเจธเฉฐเจ— เจฆเฉ‡ เจซเฉˆเจฒเจฃ เจ…เจคเฉ‡ เจ•เจฒเจพเจ‡เฉฐเจŸ เจ•เฉ‹เจก เจตเจฟเฉฑเจš เจฒเฉ‹เฉœเฉ€เจ‚เจฆเฉ€ เจจเจฟเจฐเจญเจฐเจคเจพ เจฆเฉ€ เจ˜เจพเจŸ เจ•เจพเจฐเจจ เจ•เฉฑเจš เจฆเฉ‡ เจŸเฉเจ•เฉœเจฟเจ†เจ‚ เจคเฉ‹เจ‚ เจ—เจฒเจพเจธ เจจเฉ‚เฉฐ เจ‡เจ•เฉฑเจ เจพ เจ•เจฐเจจเจพ เจ†เจฎ เจคเฉŒเจฐ 'เจคเฉ‡ เจตเจงเฉ‡เจฐเฉ‡ เจฎเฉเจธเจผเจ•เจฒ เจนเฉเฉฐเจฆเจพ เจนเฉˆเฅค

เจ‡เจธ เจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจฆเจฟเจจ เจ•เจพเจฒ เจ•เจฐเจจ เจฆเจพ เจธเจฎเจพเจ‚ เจนเฉˆ

SRP เจฆเจพ เจฆเจพเจ‡เจฐเจพ OOP เจ…เจคเฉ‡ SOLID เจคเฉฑเจ• เจธเฉ€เจฎเจฟเจค เจจเจนเฉ€เจ‚ เจนเฉˆเฅค เจ‡เจน เจตเจฟเจงเฉ€เจ†เจ‚, เจซเฉฐเจ•เจธเจผเจจเจพเจ‚, เจ•เจฒเจพเจธเจพเจ‚, เจฎเฉ‹เจกเจฟเจŠเจฒเจพเจ‚, เจฎเจพเจˆเจ•เฉเจฐเฉ‹ เจธเจฐเจตเจฟเจธเจฟเจœเจผ เจ…เจคเฉ‡ เจธเฉ‡เจตเจพเจตเจพเจ‚ 'เจคเฉ‡ เจฒเจพเจ—เฉ‚ เจนเฉเฉฐเจฆเจพ เจนเฉˆเฅค เจ‡เจน "figax-figax-and-prod" เจ…เจคเฉ‡ "เจฐเจพเจ•เฉ‡เจŸ-เจธเจพเจ‡เฉฐเจธ" เจตเจฟเจ•เจพเจธ เจฆเฉ‹เจตเจพเจ‚ 'เจคเฉ‡ เจฒเจพเจ—เฉ‚ เจนเฉเฉฐเจฆเจพ เจนเฉˆ, เจœเจฟเจธ เจจเจพเจฒ เจฆเฉเจจเฉ€เจ† เจจเฉ‚เฉฐ เจนเจฐ เจฅเจพเจ‚ เจฅเฉ‹เฉœเฉเจนเจพ เจฌเจฟเจนเจคเจฐ เจฌเจฃเจพเจ‡เจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆเฅค เจœเฉ‡ เจคเฉเจธเฉ€เจ‚ เจ‡เจธ เจฌเจพเจฐเฉ‡ เจธเฉ‹เจšเจฆเฉ‡ เจนเฉ‹, เจคเจพเจ‚ เจ‡เจน เจฒเจ—เจญเจ— เจธเจพเจฐเฉ‡ เจ‡เฉฐเจœเฉ€เจจเฉ€เจ…เจฐเจฟเฉฐเจ— เจฆเจพ เจฌเฉเจจเจฟเจ†เจฆเฉ€ เจธเจฟเจงเจพเจ‚เจค เจนเฉˆ. เจฎเจ•เฉˆเจจเฉ€เจ•เจฒ เจ‡เฉฐเจœเฉ€เจจเฉ€เจ…เจฐเจฟเฉฐเจ—, เจจเจฟเจฏเฉฐเจคเจฐเจฃ เจชเฉเจฐเจฃเจพเจฒเฉ€เจ†เจ‚, เจ…เจคเฉ‡ เจ…เจธเจฒ เจตเจฟเฉฑเจš เจธเจพเจฐเฉ€เจ†เจ‚ เจ—เฉเฉฐเจเจฒเจฆเจพเจฐ เจชเฉเจฐเจฃเจพเจฒเฉ€เจ†เจ‚ เจญเจพเจ—เจพเจ‚ เจคเฉ‹เจ‚ เจฌเจฃเจพเจˆเจ†เจ‚ เจ—เจˆเจ†เจ‚ เจนเจจ, เจ…เจคเฉ‡ "เจ…เฉฐเจกเจฐเจซเฉเจฐเฉˆเจ—เจฎเฉˆเจ‚เจŸเฉ‡เจธเจผเจจ" เจกเจฟเจœเจผเจพเจˆเจจเจฐเจพเจ‚ เจจเฉ‚เฉฐ เจฒเจšเจ•เจคเจพ เจคเฉ‹เจ‚ เจตเจพเจ‚เจเจพ เจฐเฉฑเจ–เจฆเฉ€ เจนเฉˆ, "เจ“เจตเจฐเจซเฉเจฐเฉˆเจ—เจฎเฉˆเจ‚เจŸเฉ‡เจธเจผเจจ" เจกเจฟเจœเจผเจพเจˆเจจเจฐเจพเจ‚ เจจเฉ‚เฉฐ เจ•เฉเจธเจผเจฒเจคเจพ เจคเฉ‹เจ‚ เจตเจพเจ‚เจเฉ‡ เจฐเฉฑเจ–เจฆเฉ€ เจนเฉˆ, เจ…เจคเฉ‡ เจ—เจฒเจค เจธเฉ€เจฎเจพเจตเจพเจ‚ เจ‰เจนเจจเจพเจ‚ เจจเฉ‚เฉฐ เจคเจฐเจ• เจ…เจคเฉ‡ เจฎเจจ เจฆเฉ€ เจธเจผเจพเจ‚เจคเฉ€ เจคเฉ‹เจ‚ เจตเจพเจ‚เจเฉ€เจ†เจ‚ เจฐเฉฑเจ–เจฆเฉ€เจ†เจ‚ เจนเจจเฅค

เจธเจฟเฉฐเจ—เจฒ เจœเจผเจฟเฉฐเจฎเฉ‡เจตเจพเจฐเฉ€ เจธเจฟเจงเจพเจ‚เจคเฅค เจ‡เฉฐเจจเจพ เจธเจงเจพเจฐเจจ เจจเจนเฉ€เจ‚ เจœเจฟเฉฐเจจเจพ เจ‡เจน เจฒเฉฑเจ—เจฆเจพ เจนเฉˆ

SRP เจ•เฉเจฆเจฐเจค เจฆเฉเจ†เจฐเจพ เจ•เจพเจข เจจเจนเฉ€เจ‚ เจ•เฉ€เจคเฉ€ เจ—เจˆ เจนเฉˆ เจ…เจคเฉ‡ เจ‡เจน เจธเจนเฉ€ เจตเจฟเจ—เจฟเจ†เจจ เจฆเจพ เจนเจฟเฉฑเจธเจพ เจจเจนเฉ€เจ‚ เจนเฉˆเฅค เจ‡เจน เจธเจพเจกเฉ€เจ†เจ‚ เจœเฉ€เจต-เจตเจฟเจ—เจฟเจ†เจจเจ• เจ…เจคเฉ‡ เจฎเจจเฉ‹เจตเจฟเจ—เจฟเจ†เจจเจ• เจธเฉ€เจฎเจพเจตเจพเจ‚ เจคเฉ‹เจ‚ เจฌเจพเจนเจฐ เจจเจฟเจ•เจฒเจฆเจพ เจนเฉˆเฅค เจ‡เจน เจธเจฟเจฐเจซ เจเจช-เจฎเฉˆเจจ เจฆเจฟเจฎเจพเจ— เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจ—เฉเฉฐเจเจฒเจฆเจพเจฐ เจชเฉเจฐเจฃเจพเจฒเฉ€เจ†เจ‚ เจจเฉ‚เฉฐ เจจเจฟเจฏเฉฐเจคเจฐเจฟเจค เจ•เจฐเจจ เจ…เจคเฉ‡ เจตเจฟเจ•เจธเจฟเจค เจ•เจฐเจจ เจฆเจพ เจ‡เฉฑเจ• เจคเจฐเฉ€เจ•เจพ เจนเฉˆเฅค เจ‰เจน เจธเจพเจจเฉ‚เฉฐ เจฆเฉฑเจธเจฆเจพ เจนเฉˆ เจ•เจฟ เจธเจฟเจธเจŸเจฎ เจจเฉ‚เฉฐ เจ•เจฟเจตเฉ‡เจ‚ เจตเจฟเจ—เจพเฉœเจจเจพ เจนเฉˆเฅค เจ…เจธเจฒ เจซเจพเจฐเจฎเฉ‚เจฒเฉ‡เจธเจผเจจ เจฒเจˆ เจ•เจพเจซเจผเฉ€ เจฎเจพเจคเจฐเจพ เจตเจฟเฉฑเจš เจŸเฉˆเจฒเฉ€เจชเฉˆเจฅเฉ€ เจฆเฉ€ เจฒเฉ‹เฉœ เจธเฉ€, เจชเจฐ เจฎเฉˆเจจเฉ‚เฉฐ เจ‰เจฎเฉ€เจฆ เจนเฉˆ เจ•เจฟ เจ‡เจน เจฒเฉ‡เจ– เจ•เฉเจ เจธเจฎเฉ‹เจ• เจธเจ•เฉเจฐเฉ€เจจ เจจเฉ‚เฉฐ เจธเจพเจซเจผ เจ•เจฐเฉ‡เจ—เจพเฅค

เจธเจฐเฉ‹เจค: www.habr.com

เจ‡เฉฑเจ• เจŸเจฟเฉฑเจชเจฃเฉ€ เจœเฉ‹เฉœเฉ‹