рдПрдХрд▓ рдЬрдмрд╛рдмрджрд╛рд░реА рддрддреНрддреНрд╡. рджрд┐рд╕рддреЗ рддрд┐рддрдХреЗ рд╕реЛрдкреЗ рдирд╛рд╣реА

рдПрдХрд▓ рдЬрдмрд╛рдмрджрд╛рд░реА рддрддреНрддреНрд╡. рджрд┐рд╕рддреЗ рддрд┐рддрдХреЗ рд╕реЛрдкреЗ рдирд╛рд╣реА рдПрдХрд▓ рдЬрдмрд╛рдмрджрд╛рд░реАрдЪреЗ рддрддреНрддреНрд╡, рдЬреНрдпрд╛рд▓рд╛ рдПрдХрд▓ рдЬрдмрд╛рдмрджрд╛рд░реАрдЪреЗ рддрддреНрддреНрд╡ рдЕрд╕реЗрд╣реА рдореНрд╣рдгрддрд╛рдд,
рдЙрд░реНрдл тАЛтАЛрдПрдХрд╕рдорд╛рди рдкрд░рд┐рд╡рд░реНрддрдирд╢реАрд▓рддреЗрдЪреЗ рддрддреНрддреНрд╡ - рд╕рдордЬреВрди рдШреЗрдгреНрдпрд╛рд╕рд╛рдареА рдЕрддреНрдпрдВрдд рдирд┐рд╕рд░рдбрд╛ рдорд╛рдгреВрд╕ рдЖрдгрд┐ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░рдЪреНрдпрд╛ рдореБрд▓рд╛рдЦрддреАрдд рдЕрд╕рд╛ рдЪрд┐рдВрддрд╛рдЧреНрд░рд╕реНрдд рдкреНрд░рд╢реНрди.

рдпрд╛ рддрддреНрддреНрд╡рд╛рд╢реА рдорд╛рдЭреА рдкрд╣рд┐рд▓реА рдЧрдВрднреАрд░ рдУрд│рдЦ рдкрд╣рд┐рд▓реНрдпрд╛ рд╡рд░реНрд╖рд╛рдЪреНрдпрд╛ рд╕реБрд░реБрд╡рд╛рддреАрд▓рд╛ рдШрдбрд▓реА, рдЬреЗрд╡реНрд╣рд╛ рддрд░реБрдг рдЖрдгрд┐ рд╣рд┐рд░рд╡реНрдпрд╛ рдореБрд▓рд╛рдВрдирд╛ рдЕрд│реНрдпрд╛рдВрдкрд╛рд╕реВрди рд╡рд┐рджреНрдпрд╛рд░реНрдереА рдмрдирд╡рдгреНрдпрд╛рд╕рд╛рдареА рдЬрдВрдЧрд▓рд╛рдд рдиреЗрдгреНрдпрд╛рдд рдЖрд▓реЗ - рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╡рд┐рджреНрдпрд╛рд░реНрдереА.

рдЬрдВрдЧрд▓рд╛рдд, рдЖрдореНрд╣рд╛рд▓рд╛ рдкреНрд░рддреНрдпреЗрдХреА 8-9 рд▓реЛрдХрд╛рдВрдЪреНрдпрд╛ рдЧрдЯрд╛рдВрдордзреНрдпреЗ рд╡рд┐рднрд╛рдЧрд▓реЗ рдЧреЗрд▓реЗ рд╣реЛрддреЗ рдЖрдгрд┐ рдПрдХ рд╕реНрдкрд░реНрдзрд╛ рд╣реЛрддреА - рдХреЛрдгрддрд╛ рдЧрдЯ рд╕рд░реНрд╡рд╛рдд рдЬрд▓рдж рд╡реНрд╣реЛрдбрдХрд╛рдЪреА рдмрд╛рдЯрд▓реА рдкрд┐рдИрд▓, рдмрд╢рд░реНрддреЗ рдХреА рдЧрдЯрд╛рддреАрд▓ рдкрд╣рд┐рд▓реНрдпрд╛ рд╡реНрдпрдХреНрддреАрдиреЗ рдПрдХрд╛ рдЧреНрд▓рд╛рд╕рдордзреНрдпреЗ рд╡реЛрдбрдХрд╛ рдУрддрд▓рд╛ рддрд░ рджреБрд╕рд░рд╛ рдкреНрдпрд╛рд▓рд╛, рдЖрдгрд┐ рддрд┐рд╕рд▒реНрдпрд╛рд▓рд╛ рдирд╛рд╢реНрддрд╛ рдЖрд╣реЗ. рдЬреНрдпрд╛ рдпреБрдирд┐рдЯрдиреЗ рддреНрдпрд╛рдЪреЗ рдСрдкрд░реЗрд╢рди рдкреВрд░реНрдг рдХреЗрд▓реЗ рдЖрд╣реЗ рддреЗ рдЧрдЯрд╛рдЪреНрдпрд╛ рд░рд╛рдВрдЧреЗрдЪреНрдпрд╛ рд╢реЗрд╡рдЯреА рдЬрд╛рддреЗ.

рдЬреЗрдереЗ рд░рд╛рдВрдЧреЗрдЪрд╛ рдЖрдХрд╛рд░ рддреАрдирдЪрд╛ рдЧреБрдгрд╛рдХрд╛рд░ рд╣реЛрддрд╛ рддреЛ SRP рдЪреА рдЪрд╛рдВрдЧрд▓реА рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА рд╣реЛрддреА.

рд╡реНрдпрд╛рдЦреНрдпрд╛ 1. рдПрдХрд▓ рдЬрдмрд╛рдмрджрд╛рд░реА.

рд╕рд┐рдВрдЧрд▓ рд░рд┐рд╕реНрдкреЙрдиреНрд╕рд┐рдмрд┐рд▓рд┐рдЯреА рдкреНрд░рд┐рдиреНрд╕рд┐рдкрд▓ (SRP) рдЪреА рдЕрдзрд┐рдХреГрдд рд╡реНрдпрд╛рдЦреНрдпрд╛ рд╕рд╛рдВрдЧрддреЗ рдХреА рдкреНрд░рддреНрдпреЗрдХ рдШрдЯрдХрд╛рдЪреА рд╕реНрд╡рддрдГрдЪреА рдЬрдмрд╛рдмрджрд╛рд░реА рдЖрдгрд┐ рдЕрд╕реНрддрд┐рддреНрд╡рд╛рдЪреЗ рдХрд╛рд░рдг рдЕрд╕рддреЗ рдЖрдгрд┐ рддрд┐рдЪреА рдлрдХреНрдд рдПрдХ рдЬрдмрд╛рдмрджрд╛рд░реА рдЕрд╕рддреЗ.

"рдбреНрд░рд┐рдВрдХрд░" рдпрд╛ рд╡рд╕реНрддреВрдЪрд╛ рд╡рд┐рдЪрд╛рд░ рдХрд░рд╛ (рдЯрд┐рдкреНрд▓рд░).
SRP рддрддреНрддреНрд╡рд╛рдЪреА рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рдЖрдореНрд╣реА рдЬрдмрд╛рдмрджрд╛рд▒реНрдпрд╛рдВрдЪреА рддреАрди рднрд╛рдЧрд╛рдд рд╡рд┐рднрд╛рдЧрдгреА рдХрд░реВ:

  • рдПрдХ рдУрддрддреЛ (рдкреЛрд░рдСрдкрд░реЗрд╢рди)
  • рдПрдХ рдкреЗрдп (рдбреНрд░рд┐рдВрдХрдЕрдк рдСрдкрд░реЗрд╢рди)
  • рдПрдХ рдирд╛рд╢реНрддрд╛ рдЖрд╣реЗ (TakeBiteOperation)

рдкреНрд░рдХреНрд░рд┐рдпреЗрддреАрд▓ рдкреНрд░рддреНрдпреЗрдХ рд╕рд╣рднрд╛рдЧреА рдкреНрд░рдХреНрд░рд┐рдпреЗрдЪреНрдпрд╛ рдПрдХрд╛ рдШрдЯрдХрд╛рд╕рд╛рдареА рдЬрдмрд╛рдмрджрд╛рд░ рдЖрд╣реЗ, рдореНрд╣рдгрдЬреЗ, рдПрдХ рдЕрдгреВ рдЬрдмрд╛рдмрджрд╛рд░реА рдЖрд╣реЗ - рдкрд┐рдгреЗ, рдУрддрдгреЗ рдХрд┐рдВрд╡рд╛ рдирд╛рд╢реНрддрд╛ рдХрд░рдгреЗ.

рдбреНрд░рд┐рдВрдХрд┐рдВрдЧ рд╣реЛрд▓, рдпрд╛рдордзреВрди, рдпрд╛ рдСрдкрд░реЗрд╢рдиреНрд╕рд╕рд╛рдареА рдПрдХ рджрд░реНрд╢рдиреА рднрд╛рдЧ рдЖрд╣реЗ:

╤Бlass Tippler {
    //...
    void Act(){
        _pourOperation.Do() // ╨╜╨░╨╗╨╕╤В╤М
        _drinkUpOperation.Do() // ╨▓╤Л╨┐╨╕╤В╤М
        _takeBiteOperation.Do() // ╨╖╨░╨║╤Г╤Б╨╕╤В╤М
    }
}

рдПрдХрд▓ рдЬрдмрд╛рдмрджрд╛рд░реА рддрддреНрддреНрд╡. рджрд┐рд╕рддреЗ рддрд┐рддрдХреЗ рд╕реЛрдкреЗ рдирд╛рд╣реА

рдХрд╛?

рдорд╛рдирд╡реА рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рд╡рд╛рдирд░-рдордиреБрд╖реНрдпрд╛рд╕рд╛рдареА рдХреЛрдб рд▓рд┐рд╣рд┐рддреЛ, рдЖрдгрд┐ рд╡рд╛рдирд░-рдордиреБрд╖реНрдп рджреБрд░реНрд▓рдХреНрд╖рд┐рдд, рдореВрд░реНрдЦ рдЖрдгрд┐ рдиреЗрд╣рдореА рдШрд╛рдИрдд рдЕрд╕рддреЛ. рддреЛ рдПрдХрд╛ рд╡реЗрд│реА рд╕реБрдорд╛рд░реЗ 3 - 7 рд╕рдВрдЬреНрдЮрд╛ рдзрд╛рд░рдг рдХрд░реВ рд╢рдХрддреЛ рдЖрдгрд┐ рд╕рдордЬреВ рд╢рдХрддреЛ.
рдорджреНрдпрдкреАрдЪреНрдпрд╛ рдмрд╛рдмрддреАрдд, рдпрд╛рдкреИрдХреА рддреАрди рд╕рдВрдЬреНрдЮрд╛ рдЖрд╣реЗрдд. рддрдерд╛рдкрд┐, рдЬрд░ рдЖрдкрдг рдПрдХрд╛ рд╢реАрдЯрдиреЗ рд╕рдВрд╣рд┐рддрд╛ рд▓рд┐рд╣рд┐рд▓реА рддрд░ рддреНрдпрд╛рдд рд╣рд╛рдд, рдЪрд╖реНрдорд╛, рдорд╛рд░рд╛рдорд╛рд░реА рдЖрдгрд┐ рд░рд╛рдЬрдХрд╛рд░рдгрд╛рдмрджреНрджрд▓ рдЕрдВрддрд╣реАрди рд╡рд╛рдж рдЕрд╕рддреАрд▓. рдЖрдгрд┐ рд╣реЗ рд╕рд░реНрд╡ рдПрдХрд╛рдЪ рдкрджреНрдзрддреАрдЪреНрдпрд╛ рдореБрдЦреНрдп рднрд╛рдЧрд╛рдордзреНрдпреЗ рдЕрд╕реЗрд▓. рдорд▓рд╛ рдЦрд╛рддреНрд░реА рдЖрд╣реЗ рдХреА рддреБрдореНрд╣реА рддреБрдордЪреНрдпрд╛ рд╕рд░рд╛рд╡рд╛рдд рдЕрд╕рд╛ рдХреЛрдб рдкрд╛рд╣рд┐рд▓рд╛ рдЕрд╕реЗрд▓. рдорд╛рдирд╕рд╛рд╕рд╛рдареА рд╕рд░реНрд╡рд╛рдд рдорд╛рдирд╡реА рдЪрд╛рдЪрдгреА рдирд╛рд╣реА.

рджреБрд╕рд░реАрдХрдбреЗ, рд╡рд╛рдирд░ рдордиреБрд╖реНрдп рддреНрдпрд╛рдЪреНрдпрд╛ рдбреЛрдХреНрдпрд╛рдд рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЬрдЧрд╛рддреАрд▓ рд╡рд╕реНрддреВрдВрдЪреЗ рдЕрдиреБрдХрд░рдг рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдбрд┐рдЭрд╛рдЗрди рдХреЗрд▓реЗрд▓реЗ рдЖрд╣реЗ. рддреНрдпрд╛рдЪреНрдпрд╛ рдХрд▓реНрдкрдиреЗрдд, рддреЛ рддреНрдпрд╛рдВрдирд╛ рдПрдХрддреНрд░ рдврдХрд▓реВ рд╢рдХрддреЛ, рддреНрдпрд╛рдВрдЪреНрдпрд╛рдХрдбреВрди рдирд╡реАрди рд╡рд╕реНрддреВ рдПрдХрддреНрд░ рдХрд░реВ рд╢рдХрддреЛ рдЖрдгрд┐ рддреНрдпрд╛рдЪ рдкреНрд░рдХрд╛рд░реЗ рд╡реЗрдЧрд│реЗ рдХрд░реВ рд╢рдХрддреЛ. рдЬреБрдиреНрдпрд╛ рдореЙрдбреЗрд▓рдЪреНрдпрд╛ рдХрд╛рд░рдЪреА рдХрд▓реНрдкрдирд╛ рдХрд░рд╛. рддреБрдордЪреНрдпрд╛ рдХрд▓реНрдкрдиреЗрдд рддреБрдореНрд╣реА рджрд╛рд░ рдЙрдШрдбреВ рд╢рдХрддрд╛, рджрд╛рд░рд╛рдЪреА рдЯреНрд░рд┐рдо рдХрд╛рдвреВ рд╢рдХрддрд╛ рдЖрдгрд┐ рддреЗрдереЗ рдЦрд┐рдбрдХреА рдЙрдЪрд▓рдгреНрдпрд╛рдЪреА рдпрдВрддреНрд░рдгрд╛ рдкрд╛рд╣реВ рд╢рдХрддрд╛, рдЬреНрдпрд╛рдЪреНрдпрд╛ рдЖрдд рдЧреАрдЕрд░реНрд╕ рдЕрд╕рддреАрд▓. рдкрд░рдВрддреБ рдЖрдкрдг рдПрдХрд╛рдЪ рд╡реЗрд│реА рдорд╢реАрдирдЪреЗ рд╕рд░реНрд╡ рдШрдЯрдХ рдПрдХрд╛ "рд╕реВрдЪреА" рдордзреНрдпреЗ рдкрд╛рд╣реВ рд╢рдХрдд рдирд╛рд╣реА. рдХрд┐рдорд╛рди "рдорд╛рдХрдб рдорд╛рдгреВрд╕" рдХрд░реВ рд╢рдХрдд рдирд╛рд╣реА.

рдореНрд╣рдгреВрди, рдорд╛рдирд╡реА рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдЬрдЯрд┐рд▓ рдпрдВрддреНрд░рдгрд╛ рдХрдореА рдЬрдЯрд┐рд▓ рдЖрдгрд┐ рдХрд╛рд░реНрдпрд░рдд рдШрдЯрдХрд╛рдВрдЪреНрдпрд╛ рд╕рдВрдЪрд╛рдордзреНрдпреЗ рд╡рд┐рдШрдЯрд┐рдд рдХрд░рддрд╛рдд. рддрдерд╛рдкрд┐, рддреЗ рд╡реЗрдЧрд╡реЗрдЧрд│реНрдпрд╛ рдкреНрд░рдХрд╛рд░реЗ рд╡рд┐рдШрдЯрд┐рдд рдХреЗрд▓реЗ рдЬрд╛рдК рд╢рдХрддреЗ: рдмрд░реНрдпрд╛рдЪ рдЬреБрдиреНрдпрд╛ рдХрд╛рд░рдордзреНрдпреЗ, рд╣рд╡рд╛ рдирд▓рд┐рдХрд╛ рджрд╛рд░рд╛рдд рдЬрд╛рддреЗ рдЖрдгрд┐ рдЖрдзреБрдирд┐рдХ рдХрд╛рд░рдордзреНрдпреЗ, рд▓реЙрдХ рдЗрд▓реЗрдХреНрдЯреНрд░реЙрдирд┐рдХреНрд╕рдордзреАрд▓ рдмрд┐рдШрд╛рдб рдЗрдВрдЬрд┐рдирд▓рд╛ рд╕реБрд░реВ рд╣реЛрдгреНрдпрд╛рдкрд╛рд╕реВрди рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдХрд░рддреЗ, рдЬреЗ рджреБрд░реБрд╕реНрддреАрджрд░рдореНрдпрд╛рди рд╕рдорд╕реНрдпрд╛ рдЕрд╕реВ рд╢рдХрддреЗ.

рдЖрддрд╛, SRP рд╣реЗ рдПрдХ рддрддреНрд╡ рдЖрд╣реЗ рдЬреЗ рд╡рд┐рдШрдЯрд┐рдд рдХрд╕реЗ рдХрд░рд╛рдпрдЪреЗ рд╣реЗ рд╕реНрдкрд╖реНрдЯ рдХрд░рддреЗ, рдореНрд╣рдгрдЬреЗрдЪ рд╡рд┐рднрд╛рдЬрдХ рд░реЗрд╖рд╛ рдХреБрдареЗ рдХрд╛рдврд╛рдпрдЪреА.

рддреЛ рдореНрд╣рдгрддреЛ рдХреА "рдЬрдмрд╛рдмрджрд╛рд░реА" рдЪреНрдпрд╛ рд╡рд┐рднрд╛рдЬрдирд╛рдЪреНрдпрд╛ рддрддреНрддреНрд╡рд╛рдиреБрд╕рд╛рд░ рд╡рд┐рдШрдЯрди рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ, рдореНрд╣рдгрдЬреЗрдЪ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд╕реНрддреВрдВрдЪреНрдпрд╛ рдХрд╛рд░реНрдпрд╛рдВрдиреБрд╕рд╛рд░.

рдПрдХрд▓ рдЬрдмрд╛рдмрджрд╛рд░реА рддрддреНрддреНрд╡. рджрд┐рд╕рддреЗ рддрд┐рддрдХреЗ рд╕реЛрдкреЗ рдирд╛рд╣реА

рдЪрд▓рд╛ рдорджреНрдпрдкрд╛рдирд╛рдХрдбреЗ рдкрд░рдд рдЬрд╛рдКрдпрд╛ рдЖрдгрд┐ рдХреБрдЬрдгреНрдпрд╛рдЪреНрдпрд╛ рд╡реЗрд│реА рдорд╛рдХрдб рдорд╛рдгрд╕рд╛рд▓рд╛ рдорд┐рд│рдгрд╛рд░реЗ рдлрд╛рдпрджреЗ:

  • рд╕рдВрд╣рд┐рддрд╛ рдкреНрд░рддреНрдпреЗрдХ рд╕реНрддрд░рд╛рд╡рд░ рдЕрддреНрдпрдВрдд рд╕реНрдкрд╖реНрдЯ рдЭрд╛рд▓реА рдЖрд╣реЗ
  • рдХреЛрдб рдПрдХрд╛рдЪ рд╡реЗрд│реА рдЕрдиреЗрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░рджреНрд╡рд╛рд░реЗ рд▓рд┐рд╣рд┐рд▓рд╛ рдЬрд╛рдК рд╢рдХрддреЛ (рдкреНрд░рддреНрдпреЗрдХ рд╕реНрд╡рддрдВрддреНрд░ рдШрдЯрдХ рд▓рд┐рд╣рд┐рддреЛ)
  • рд╕реНрд╡рдпрдВрдЪрд▓рд┐рдд рдЪрд╛рдЪрдгреА рд╕рд░рд▓реАрдХреГрдд рдЖрд╣реЗ - рдШрдЯрдХ рдЬрд┐рддрдХреЗ рд╕реЛрдкреЗ рддрд┐рддрдХреЗ рдЪрд╛рдЪрдгреА рдХрд░рдгреЗ рд╕реЛрдкреЗ рдЖрд╣реЗ
  • рдХреЛрдбрдЪреА рд░рдЪрдирд╛ рджрд┐рд╕рддреЗ - рдЖрдкрдг рдмрджрд▓реВ рд╢рдХрддрд╛ рдбреНрд░рд┐рдВрдХрдЕрдк рдСрдкрд░реЗрд╢рди рдЕрд╢рд╛ рдСрдкрд░реЗрд╢рдирд╕рд╛рдареА рдЬреНрдпрд╛рдордзреНрдпреЗ рдорджреНрдпрдкреА рдЯреЗрдмрд▓рд╛рдЦрд╛рд▓реА рджреНрд░рд╡ рдУрддрддреЛ. рдХрд┐рдВрд╡рд╛ рдУрддрдгреНрдпрд╛рдЪреЗ рдСрдкрд░реЗрд╢рди рдПрдХрд╛ рдСрдкрд░реЗрд╢рдирдиреЗ рдмрджрд▓рд╛ рдЬреНрдпрд╛рдордзреНрдпреЗ рддреБрдореНрд╣реА рд╡рд╛рдЗрди рдЖрдгрд┐ рдкрд╛рдгреА рдХрд┐рдВрд╡рд╛ рд╡реЛрдбрдХрд╛ рдЖрдгрд┐ рдмрд┐рдЕрд░ рдорд┐рд╕рд│рд╛. рд╡реНрдпрд╡рд╕рд╛рдпрд╛рдЪреНрдпрд╛ рдЖрд╡рд╢реНрдпрдХрддрд╛рдВрд╡рд░ рдЕрд╡рд▓рдВрдмреВрди, рдЖрдкрдг рдкрджреНрдзрдд рдХреЛрдбрд▓рд╛ рд╕реНрдкрд░реНрд╢ рди рдХрд░рддрд╛ рд╕рд░реНрд╡рдХрд╛рд╣реА рдХрд░реВ рд╢рдХрддрд╛ рдЯрд┐рдкрд▓рд░.рдХрд╛рдпрджрд╛.
  • рдпрд╛ рдСрдкрд░реЗрд╢рдиреНрд╕рдордзреВрди рддреБрдореНрд╣реА рдЦрд╛рджрд╛рдб рдлреЛрд▓реНрдб рдХрд░реВ рд╢рдХрддрд╛ (рдХреЗрд╡рд│ рд╡рд╛рдкрд░реВрди TakeBitOperation), рдорджреНрдпрдкреА (рдХреЗрд╡рд│ рд╡рд╛рдкрд░рдгреЗ рдбреНрд░рд┐рдВрдХрдЕрдк рдСрдкрд░реЗрд╢рди рдереЗрдЯ рдмрд╛рдЯрд▓реАрддреВрди) рдЖрдгрд┐ рдЗрддрд░ рдЕрдиреЗрдХ рд╡реНрдпрд╡рд╕рд╛рдп рдЖрд╡рд╢реНрдпрдХрддрд╛ рдкреВрд░реНрдг рдХрд░рд╛.

(рдЕрд░реЗ, рдЕрд╕реЗ рджрд┐рд╕рддреЗ рдХреА рд╣реЗ рдЖрдзреАрдЪ рдПрдХ рдУрд╕реАрдкреА рддрддреНрддреНрд╡ рдЖрд╣реЗ рдЖрдгрд┐ рдореА рдпрд╛ рдкреЛрд╕реНрдЯрдЪреНрдпрд╛ рдЬрдмрд╛рдмрджрд╛рд░реАрдЪреЗ рдЙрд▓реНрд▓рдВрдШрди рдХреЗрд▓реЗ рдЖрд╣реЗ)

рдЖрдгрд┐, рдЕрд░реНрдерд╛рддрдЪ, рддреЛрдЯреЗ:

  • рдЖрдореНрд╣рд╛рд▓рд╛ рдЖрдгрдЦреА рдкреНрд░рдХрд╛рд░ рддрдпрд╛рд░ рдХрд░рд╛рд╡реЗ рд▓рд╛рдЧрддреАрд▓.
  • рдорджреНрдпрдкреА рдкреНрд░рдердордЪ рдорджреНрдпрдкрд╛рди рдХрд░рддреЛ рддреНрдпрд╛рдкреЗрдХреНрд╖рд╛ рдХрд╛рд╣реА рддрд╛рд╕рд╛рдВрдирдВрддрд░.

рд╡реНрдпрд╛рдЦреНрдпрд╛ 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 рдЪреА рджреБрд╕рд░реА рд╡реНрдпрд╛рдЦреНрдпрд╛ рд╢реЛрдзрддреЛ - рдПрдХрд▓ рдкрд░рд┐рд╡рд░реНрддрдирд╢реАрд▓рддрд╛ рддрддреНрддреНрд╡.

рдПрд╕рд╕реАрдкреА рдореНрд╣рдгрддреЗ рдХреА "рдореЙрдбреНрдпреВрд▓рдордзреНрдпреЗ рдмрджрд▓ рдХрд░рдгреНрдпрд╛рдЪреЗ рдПрдХрдЪ рдХрд╛рд░рдг рдЕрд╕рддреЗ" рдореНрд╣рдгрдЬреЗ, "рдЬрдмрд╛рдмрджрд╛рд░реА рд╣реЗ рдмрджрд▓рд╛рдЪреЗ рдХрд╛рд░рдг рдЖрд╣реЗ."

(рдЕрд╕реЗ рджрд┐рд╕рддреЗ рдХреА рдореВрд│ рд╡реНрдпрд╛рдЦреНрдпреЗрд╕рд╣ рдЖрд▓реЗрд▓реНрдпрд╛ рд▓реЛрдХрд╛рдВрдирд╛ рд╡рд╛рдирд░ рдорд╛рдгрд╕рд╛рдЪреНрдпрд╛ рдЯреЗрд▓рд┐рдкреЕрдерд┐рдХ рдХреНрд╖рдорддреЗрд╡рд░ рд╡рд┐рд╢реНрд╡рд╛рд╕ рд╣реЛрддрд╛)

рдЖрддрд╛ рд╕рд░реНрд╡рдХрд╛рд╣реА рдЬрд╛рдЧреЗрд╡рд░ рдпреЗрддреЗ. рд╕реНрд╡рддрдВрддреНрд░рдкрдгреЗ, рдЖрдореНрд╣реА рдУрддрдгреЗ, рдкрд┐рдгреЗ рдЖрдгрд┐ рд╕реНрдиреЕрдХрд┐рдВрдЧ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдмрджрд▓реВ рд╢рдХрддреЛ, рдкрд░рдВрддреБ рдорджреНрдпрдкрд╛рди рдХрд░рдгрд╛рд░реНтАНрдпрд╛рдордзреНрдпреЗ рдЖрдореНрд╣реА рдХреЗрд╡рд│ рдСрдкрд░реЗрд╢рдиреНрд╕рдЪрд╛ рдХреНрд░рдо рдЖрдгрд┐ рд░рдЪрдирд╛ рдмрджрд▓реВ рд╢рдХрддреЛ, рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдкрд┐рдгреНрдпрд╛рдкреВрд░реНрд╡реА рд╕реНрдиреЕрдХ рд╣рд▓рд╡реВрди рдХрд┐рдВрд╡рд╛ рдЯреЛрд╕реНрдЯрдЪреЗ рд╡рд╛рдЪрди рдЬреЛрдбреВрди.

"рдлреЙрд░рд╡рд░реНрдб рдЖрдгрд┐ рдУрдиреНрд▓реА рдлреЙрд░рд╡рд░реНрдб" рджреГрд╖реНрдЯрд┐рдХреЛрдирд╛рдордзреНрдпреЗ, рдЬреЗ рдХрд╛рд╣реА рдмрджрд▓рд▓реЗ рдЬрд╛рдК рд╢рдХрддреЗ рддреЗ рдХреЗрд╡рд│ рдкрджреНрдзрддреАрдордзреНрдпреЗ рдмрджрд▓рд▓реЗ рдЬрд╛рддреЗ рдХрд╛рдпрджрд╛. рд╣реЗ рд╡рд╛рдЪрдиреАрдп рдЖрдгрд┐ рдкреНрд░рднрд╛рд╡реА рдЕрд╕реВ рд╢рдХрддреЗ рдЬреЗрд╡реНрд╣рд╛ рдереЛрдбреЗ рддрд░реНрдХрд╢рд╛рд╕реНрддреНрд░ рдЕрд╕рддреЗ рдЖрдгрд┐ рддреЗ рдХреНрд╡рдЪрд┐рддрдЪ рдмрджрд▓рддреЗ, рдкрд░рдВрддреБ рдмрд░реНтАНрдпрд╛рдЪрджрд╛ рддреЗ рдкреНрд░рддреНрдпреЗрдХреА 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}");
    }
}

рдордзреНрдпреЗ encapsulating рдХрд░реВрди рдкреЛрд░рдСрдкрд░реЗрд╢рди, рдЖрдореНрд╣реА рдЬрдмрд╛рдмрджрд╛рд░реА рдЖрдгрд┐ encapsulation рдЪреНрдпрд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдирд╛рддреВрди рд╢рд╣рд╛рдгрдкрдгрд╛рдиреЗ рд╡рд╛рдЧрд▓реЛ, рдкрд░рдВрддреБ рдЖрддрд╛ рдЖрдореНрд╣реА рдкрд░рд┐рд╡рд░реНрддрдирд╢реАрд▓рддреЗрдЪреНрдпрд╛ рддрддреНрддреНрд╡рд╛рдордзреНрдпреЗ рдЧреЛрдВрдзрд│рд▓реЛ рдЖрд╣реЛрдд. рдСрдкрд░реЗрд╢рди рд╡реНрдпрддрд┐рд░рд┐рдХреНрдд, рдЬреЗ рдмрджрд▓реВ рд╢рдХрддреЗ, рд▓реЙрдЧрд┐рдВрдЧ рджреЗрдЦреАрд▓ рдмрджрд▓рдгреНрдпрд╛рдпреЛрдЧреНрдп рдмрдирддреЗ. рдУрддрдгреНрдпрд╛рдЪреНрдпрд╛ рдСрдкрд░реЗрд╢рдирд╕рд╛рдареА рддреБрдореНрд╣рд╛рд▓рд╛ рд╡реЗрдЧрд│реЗ рдХрд░рд╛рд╡реЗ рд▓рд╛рдЧреЗрд▓ рдЖрдгрд┐ рдПрдХ рд╡рд┐рд╢реЗрд╖ рд▓реЙрдЧрд░ рддрдпрд╛рд░ рдХрд░рд╛рд╡рд╛ рд▓рд╛рдЧреЗрд▓:

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)
        }
    }
}

рд╕рдЬрдЧ рд╡рд╛рдЪрдХрд╛рдЪреНрдпрд╛ рддреЗ рд▓рдХреНрд╖рд╛рдд рдпреЗрдИрд▓ рд▓реЙрдЧрдЖрдлреНрдЯрд░, рд▓реЙрдЧрдЖрдзреА ╨╕ рдСрди рдПрд░рд░ рд╡реИрдпрдХреНрддрд┐рдХрд░рд┐рддреНрдпрд╛ рджреЗрдЦреАрд▓ рдмрджрд▓рд▓реЗ рдЬрд╛рдК рд╢рдХрддреЗ, рдЖрдгрд┐, рдорд╛рдЧреАрд▓ рдЪрд░рдгрд╛рдВрд╢реА рд╕рд╛рдзрд░реНрдореНрдп рдХрд░реВрди, рддреАрди рд╡рд░реНрдЧ рддрдпрд╛рд░ рдХрд░рддреАрд▓: 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 рдУрд│реАрдВрд╕рд╛рдареА рдПрдХ GOD рдкрджреНрдзрдд рджрд┐рд╕реВрди рдЖрд▓реА:

  • 1C рд╡рд░ рдЬрд╛ рдЖрдгрд┐ рдЦрд╛рддреЗ рддрдпрд╛рд░ рдХрд░рд╛
  • рдпрд╛ рдЦрд╛рддреНрдпрд╛рд╕рд╣, рдкреЗрдореЗрдВрдЯ рдореЙрдбреНрдпреВрд▓рд╡рд░ рдЬрд╛ рдЖрдгрд┐ рддреЗ рддреЗрдереЗ рддрдпрд╛рд░ рдХрд░рд╛
  • рдЕрд╕реЗ рдЦрд╛рддреЗ рдЕрд╕рд▓реЗрд▓реЗ рдЦрд╛рддреЗ рдореБрдЦреНрдп рд╕рд░реНрд╡реНрд╣рд░рд╡рд░ рддрдпрд╛рд░ рдЭрд╛рд▓реЗ рдирд╕рд▓реНрдпрд╛рдЪреЗ рддрдкрд╛рд╕рд╛
  • рдирд╡реАрди рдЦрд╛рддреЗ рддрдпрд╛рд░ рдХрд░рд╛
  • рдиреЛрдВрджрдгреА рдкрд░рд┐рдгрд╛рдо рдкреЗрдореЗрдВрдЯ рдореЙрдбреНрдпреВрд▓рдордзреНрдпреЗ рдЖрдгрд┐ 1c рдХреНрд░рдорд╛рдВрдХ рдиреЛрдВрджрдгреА рдкрд░рд┐рдгрд╛рдо рд╕реЗрд╡реЗрдордзреНрдпреЗ рдЬреЛрдбрд╛
  • рдпрд╛ рдЯреЗрдмрд▓рдордзреНрдпреЗ рдЦрд╛рддреЗ рдорд╛рд╣рд┐рддреА рдЬреЛрдбрд╛
  • рдкреЙрдЗрдВрдЯ рд╕реЗрд╡реЗрдордзреНрдпреЗ рдпрд╛ рдХреНрд▓рд╛рдпрдВрдЯрд╕рд╛рдареА рдкреЙрдЗрдВрдЯ рдирдВрдмрд░ рддрдпрд╛рд░ рдХрд░рд╛. рддреБрдордЪрд╛ 1c рдЦрд╛рддреЗ рдХреНрд░рдорд╛рдВрдХ рдпрд╛ рд╕реЗрд╡реЗрд▓рд╛ рджреНрдпрд╛.

рдЖрдгрд┐ рдпрд╛ рдпрд╛рджреАрдд рднрдпрд╛рдирдХ рдХрдиреЗрдХреНрдЯрд┐рд╡реНрд╣рд┐рдЯреАрд╕рд╣ рд╕реБрдорд╛рд░реЗ 10 рдЕрдзрд┐рдХ рд╡реНрдпрд╡рд╕рд╛рдп рдСрдкрд░реЗрд╢рди рд╣реЛрддреЗ. рдЬрд╡рд│рдЬрд╡рд│ рдкреНрд░рддреНрдпреЗрдХрд╛рд▓рд╛ рдЦрд╛рддреЗ рдСрдмреНрдЬреЗрдХреНрдЯрдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА. рдЕрд░реНрдзреНрдпрд╛ рдХреЙрд▓рдордзреНрдпреЗ рдкреЙрдЗрдВрдЯ рдЖрдпрдбреА рдЖрдгрд┐ рдХреНрд▓рд╛рдпрдВрдЯрдЪреЗ рдирд╛рд╡ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрддреЗ.

рдПрдХрд╛ рддрд╛рд╕рд╛рдЪреНрдпрд╛ рд░рд┐рдлреЕрдХреНрдЯрд░рд┐рдВрдЧрдирдВрддрд░, рдЖрдореНрд╣реА рдЗрдиреНрдлреНрд░рд╛рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдХреЛрдб рдЖрдгрд┐ рдЦрд╛рддреНрдпрд╛рд╕рд╣ рдХрд╛рдо рдХрд░рдгреНрдпрд╛рдЪреНрдпрд╛ рдХрд╛рд╣реА рдмрд╛рд░рдХрд╛рд╡реЗ рд╡реЗрдЧрд│реНрдпрд╛ рдкрджреНрдзрддреА/рд╡рд░реНрдЧрд╛рдВрдордзреНрдпреЗ рд╡реЗрдЧрд│реЗ рдХрд░реВ рд╢рдХрд▓реЛ. рджреЗрд╡ рдкрджреНрдзрддреАрдиреЗ рддреЗ рд╕реЛрдкреЗ рдХреЗрд▓реЗ, рдкрд░рдВрддреБ рдХреЛрдбрдЪреНрдпрд╛ 100 рдУрд│реА рдЙрд░рд▓реНрдпрд╛ рд╣реЛрддреНрдпрд╛ рдЬреНрдпрд╛ рдлрдХреНрдд рдЙрд▓рдЧрдбреВ рдЗрдЪреНрдЫрд┐рдд рдирд╛рд╣реАрдд.

рдХрд╛рд╣реА рджрд┐рд╡рд╕рд╛рдВрдирдВрддрд░рдЪ рд╣реЗ рд╕реНрдкрд╖реНрдЯ рдЭрд╛рд▓реЗ рдХреА рдпрд╛ "рд╣рд▓рдХреЗ" рдкрджреНрдзрддреАрдЪреЗ рд╕рд╛рд░ рдПрдХ рд╡реНрдпрд╡рд╕рд╛рдп рдЕрд▓реНрдЧреЛрд░рд┐рджрдо рдЖрд╣реЗ. рдЖрдгрд┐ рддрд╛рдВрддреНрд░рд┐рдХ рд╡реИрд╢рд┐рд╖реНрдЯреНрдпрд╛рдВрдЪреЗ рдореВрд│ рд╡рд░реНрдгрди рдЦреВрдкрдЪ рдЧреБрдВрддрд╛рдЧреБрдВрддреАрдЪреЗ рд╣реЛрддреЗ. рдЖрдгрд┐ рдпрд╛ рдкрджреНрдзрддреАрдЪреЗ рддреБрдХрдбреЗ рдХрд░рдгреНрдпрд╛рдЪрд╛ рдкреНрд░рдпрддреНрди рдЖрд╣реЗ рдЬреНрдпрд╛рдореБрд│реЗ SRP рдЪреЗ рдЙрд▓реНрд▓рдВрдШрди рд╣реЛрдИрд▓, рдЙрд▓рдЯ рдирд╛рд╣реА.

рдФрдкрдЪрд╛рд░рд┐рдХрддрд╛.

рдЖрдордЪреНрдпрд╛ рдирд╢реЗрдд рдПрдХрдЯреЗ рд╕реЛрдбрдгреНрдпрд╛рдЪреА рд╡реЗрд│ рдЖрд▓реА рдЖрд╣реЗ. рдЖрдкрд▓реЗ рдЕрд╢реНрд░реВ рдХреЛрд░рдбреЗ рдХрд░рд╛ - рдЖрдореНрд╣реА рдирдХреНрдХреАрдЪ рддреНрдпрд╛рдХрдбреЗ рдкрд░рдд рдпреЗрдК. рдЖрддрд╛ рдпрд╛ рд▓реЗрдЦрд╛рддреАрд▓ рдЬреНрдЮрд╛рдирд╛рдЪреА рдФрдкрдЪрд╛рд░рд┐рдХрддрд╛ рдХрд░реВрдпрд╛.

рдФрдкрдЪрд╛рд░рд┐рдХрддрд╛ 1. SRP рдЪреА рд╡реНрдпрд╛рдЦреНрдпрд╛

  1. рдШрдЯрдХ рд╡реЗрдЧрд│реЗ рдХрд░рд╛ рдЬреЗрдгреЗрдХрд░реВрди рддреНрдпрд╛рддреАрд▓ рдкреНрд░рддреНрдпреЗрдХ рдПрдХрд╛ рдЧреЛрд╖реНрдЯреАрд╕рд╛рдареА рдЬрдмрд╛рдмрджрд╛рд░ рдЕрд╕реЗрд▓.
  2. рдЬрдмрд╛рдмрджрд╛рд░реА рдореНрд╣рдгрдЬреЗ тАЬрдмрджрд▓рдгреНрдпрд╛рдЪреЗ рдХрд╛рд░рдгтАЭ. рдореНрд╣рдгрдЬреЗрдЪ, рдкреНрд░рддреНрдпреЗрдХ рдШрдЯрдХрд╛рдХрдбреЗ рдмрджрд▓рд╛рдЪреЗ рдПрдХрдЪ рдХрд╛рд░рдг рдЖрд╣реЗ, рд╡реНрдпрд╡рд╕рд╛рдпрд╛рдЪреНрдпрд╛ рддрд░реНрдХрд╢рд╛рд╕реНрддреНрд░рд╛рдЪреНрдпрд╛ рджреГрд╖реНрдЯреАрдиреЗ.
  3. рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рддрд░реНрдХрд╛рдордзреНрдпреЗ рд╕рдВрднрд╛рд╡реНрдп рдмрджрд▓. рд╕реНрдерд╛рдирд┐рдХреАрдХрд░рдг рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рд╕рдордХрд╛рд▓рд┐рдХрдкрдгреЗ рдмрджрд▓рдгрд╛рд░реЗ рдШрдЯрдХ рдЬрд╡рд│рдкрд╛рд╕ рдЕрд╕рд▓реЗ рдкрд╛рд╣рд┐рдЬреЗрдд.

рдФрдкрдЪрд╛рд░рд┐рдХрддрд╛ 2. рдЖрд╡рд╢реНрдпрдХ рд╕реНрд╡-рдЪрд╛рдЪрдгреА рдирд┐рдХрд╖.

SRP рдЪреА рдкреВрд░реНрддрддрд╛ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдорд▓рд╛ рдкреБрд░реЗрд╕реЗ рдирд┐рдХрд╖ рджрд┐рд╕рд▓реЗ рдирд╛рд╣реАрдд. рдкрд░рдВрддреБ рдЖрд╡рд╢реНрдпрдХ рдЕрдЯреА рдЖрд╣реЗрдд:

1) рд╣рд╛ рд╡рд░реНрдЧ/рдкрджреНрдзрдд/рдореЙрдбреНрдпреБрд▓/рд╕реЗрд╡рд╛ рдХрд╛рдп рдХрд░рддреЗ рд╣реЗ рд╕реНрд╡рддрдГрд▓рд╛ рд╡рд┐рдЪрд╛рд░рд╛. рддреБрдореНрд╣реА рдпрд╛рдЪреЗ рдЙрддреНрддрд░ рд╕реЛрдкреНрдпрд╛ рд╡реНрдпрд╛рдЦреНрдпреЗрд╕рд╣ рджрд┐рд▓реЗ рдкрд╛рд╣рд┐рдЬреЗ. ( рдзрдиреНрдпрд╡рд╛рдж рдмреНрд░рд╛рдЗрдЯреЛрд░реА )

рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг

рддрдерд╛рдкрд┐, рдХрдзреАрдХрдзреА рдПрдХ рд╕рд╛рдзреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рд╢реЛрдзрдгреЗ рдлрд╛рд░ рдХрдареАрдг рдЕрд╕рддреЗ

2) рдмрдЧрдЪреЗ рдирд┐рд░рд╛рдХрд░рдг рдХрд░рдгреЗ рдХрд┐рдВрд╡рд╛ рдирд╡реАрди рд╡реИрд╢рд┐рд╖реНрдЯреНрдп рдЬреЛрдбрдгреЗ рдлрд╛рдпрд▓реА/рд╡рд░реНрдЧрд╛рдВрдЪреНрдпрд╛ рдХрд┐рдорд╛рди рд╕рдВрдЦреНрдпреЗрд╡рд░ рдкрд░рд┐рдгрд╛рдо рдХрд░рддреЗ. рдЖрджрд░реНрд╢рдкрдгреЗ - рдПрдХ.

рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг

рдЬрдмрд╛рдмрджрд╛рд░реА (рдПрдЦрд╛рджреНрдпрд╛ рд╡реИрд╢рд┐рд╖реНрдЯреНрдпрд╛рд╕рд╛рдареА рдХрд┐рдВрд╡рд╛ рдмрдЧрд╕рд╛рдареА) рдПрдХрд╛ рдлрд╛рдИрд▓/рд╡рд░реНрдЧрд╛рдордзреНрдпреЗ рдЕрдВрддрд░реНрднреВрдд рдЕрд╕рд▓реНрдпрд╛рдиреЗ, рддреБрдореНрд╣рд╛рд▓рд╛ рдирдХреНрдХреА рдорд╛рд╣рд┐рдд рдЖрд╣реЗ рдХреА рдХреБрдареЗ рдкрд╛рд╣рд╛рдпрдЪреЗ рдЖрдгрд┐ рдХрд╛рдп рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рд╛рдпрдЪреЗ. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде: рд▓реЙрдЧрд┐рдВрдЧ рдСрдкрд░реЗрд╢рдиреНрд╕рдЪреЗ рдЖрдЙрдЯрдкреБрдЯ рдмрджрд▓рдгреНрдпрд╛рдЪреНрдпрд╛ рд╡реИрд╢рд┐рд╖реНрдЯреНрдпрд╛рд╕рд╛рдареА рдлрдХреНрдд рд▓реЙрдЧрд░ рдмрджрд▓рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рдмрд╛рдХреА рдХреЛрдб рдЪрд╛рд▓рд╡рд╛рдпрдЪреА рдЧрд░рдЬ рдирд╛рд╣реА.

рджреБрд╕рд░реЗ рдЙрджрд╛рд╣рд░рдг рдореНрд╣рдгрдЬреЗ рдорд╛рдЧреАрд▓ рдкреНрд░рдорд╛рдгреЗрдЪ рдирд╡реАрди UI рдирд┐рдпрдВрддреНрд░рдг рдЬреЛрдбрдгреЗ. рд╣реЗ рддреБрдореНрд╣рд╛рд▓рд╛ 10 рднрд┐рдиреНрди рд╕рдВрд╕реНрдерд╛ рдЖрдгрд┐ 15 рднрд┐рдиреНрди рдХрдиреНрд╡реНрд╣рд░реНрдЯрд░ рдЬреЛрдбрдгреНрдпрд╛рд╕ рднрд╛рдЧ рдкрд╛рдбрдд рдЕрд╕рд▓реНрдпрд╛рд╕, рдЕрд╕реЗ рджрд┐рд╕рддреЗ рдХреА рддреБрдореНрд╣реА рддреЗ рдЬрд╛рд╕реНрдд рдХрд░рдд рдЖрд╣рд╛рдд.

3) рдЬрд░ рдЕрдиреЗрдХ рд╡рд┐рдХрд╛рд╕рдХ рддреБрдордЪреНрдпрд╛ рдкреНрд░рдХрд▓реНрдкрд╛рдЪреНрдпрд╛ рд╡рд┐рд╡рд┐рдз рд╡реИрд╢рд┐рд╖реНрдЯреНрдпрд╛рдВрд╡рд░ рдХрд╛рдо рдХрд░рдд рдЕрд╕рддреАрд▓, рддрд░ рд╡рд┐рд▓реАрдиреАрдХрд░рдгрд╛рдЪреНрдпрд╛ рд╕рдВрдШрд░реНрд╖рд╛рдЪреА рд╢рдХреНрдпрддрд╛, рдореНрд╣рдгрдЬреЗрдЪ рдПрдХрд╛рдЪ рд╡реЗрд│реА рдЕрдиреЗрдХ рд╡рд┐рдХрд╛рд╕рдХрд╛рдВрдХрдбреВрди рд╕рдорд╛рди рдлрд╛рдЗрд▓/рд╡рд░реНрдЧ рдмрджрд▓рдгреНрдпрд╛рдЪреА рд╢рдХреНрдпрддрд╛ рдХрдореА рдЖрд╣реЗ.

рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг

рдЬрд░, рдирд╡реАрди рдСрдкрд░реЗрд╢рди "рдЯреЗрдмрд▓рдЦрд╛рд▓реА рд╡реНрд╣реЛрдбрдХрд╛ рдШрд╛рд▓рд╛" рдЬреЛрдбрддрд╛рдирд╛, рдЖрдкрд▓реНрдпрд╛рд▓рд╛ рд▓реЙрдЧрд░рд╡рд░, рдкрд┐рдгреНрдпрд╛рдЪреНрдпрд╛ рдЖрдгрд┐ рдУрддрдгреНрдпрд╛рдЪреНрдпрд╛ рдСрдкрд░реЗрд╢рдирд╡рд░ рдкрд░рд┐рдгрд╛рдо рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ, рддрд░ рдЕрд╕реЗ рджрд┐рд╕рддреЗ рдХреА рдЬрдмрд╛рдмрджрд╛рд▒реНрдпрд╛ рдХреБрдЯрд┐рд▓рдкрдгреЗ рд╡рд┐рднрд╛рдЧрд▓реНрдпрд╛ рдЧреЗрд▓реНрдпрд╛ рдЖрд╣реЗрдд. рдЕрд░реНрдерд╛рдд, рд╣реЗ рдиреЗрд╣рдореАрдЪ рд╢рдХреНрдп рдирд╕рддреЗ, рдкрд░рдВрддреБ рдЖрдкрдг рд╣рд╛ рдЖрдХрдбрд╛ рдХрдореА рдХрд░рдгреНрдпрд╛рдЪрд╛ рдкреНрд░рдпрддреНрди рдХреЗрд▓рд╛ рдкрд╛рд╣рд┐рдЬреЗ.

4) рд╡реНрдпрд╡рд╕рд╛рдпрд╛рдЪреНрдпрд╛ рддрд░реНрдХрд╛рдмрджреНрджрд▓ (рд╡рд┐рдХрд╛рд╕рдХ рдХрд┐рдВрд╡рд╛ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХрд╛рдХрдбреВрди) рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рджреЗрдгрд╛рд░рд╛ рдкреНрд░рд╢реНрди рд╡рд┐рдЪрд╛рд░рд▓рд╛ рдЕрд╕рддрд╛, рддреБрдореНрд╣реА рдПрдХрд╛ рд╡рд░реНрдЧ/рдлрд╛рдЗрд▓рдордзреНрдпреЗ рдХрд╛рдЯреЗрдХреЛрд░рдкрдгреЗ рдЬрд╛ рдЖрдгрд┐ рддрд┐рдереВрдирдЪ рдорд╛рд╣рд┐рддреА рдорд┐рд│рд╡рддрд╛.

рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг

рд╡реИрд╢рд┐рд╖реНрдЯреНрдпреЗ, рдирд┐рдпрдо рдХрд┐рдВрд╡рд╛ рдЕрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЙрдореНрдкреЕрдХреНрдЯрдкрдгреЗ рд▓рд┐рд╣рд┐рд▓реЗрд▓реЗ рдЖрд╣реЗрдд, рдкреНрд░рддреНрдпреЗрдХ рдПрдХрд╛рдЪ рдард┐рдХрд╛рдгреА, рдЖрдгрд┐ рд╕рдВрдкреВрд░реНрдг рдХреЛрдб рд╕реНрдкреЗрд╕рдордзреНрдпреЗ рдзреНрд╡рдЬрд╛рдВрд╕рд╣ рд╡рд┐рдЦреБрд░рд▓реЗрд▓реЗ рдирд╛рд╣реАрдд.

5) рдирд╛рдордХрд░рдг рд╕реНрдкрд╖реНрдЯ рдЖрд╣реЗ.

рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг

рдЖрдордЪрд╛ рд╡рд░реНрдЧ рдХрд┐рдВрд╡рд╛ рдкрджреНрдзрдд рдПрдХрд╛ рдЧреЛрд╖реНрдЯреАрд╕рд╛рдареА рдЬрдмрд╛рдмрджрд╛рд░ рдЖрд╣реЗ рдЖрдгрд┐ рдЬрдмрд╛рдмрджрд╛рд░реА рддрд┐рдЪреНрдпрд╛ рдирд╛рд╡рд╛рд╡рд░ рджрд┐рд╕реВрди рдпреЗрддреЗ

AllManagersManagerService - рдмрд╣реБрдзрд╛ рджреЗрд╡ рд╡рд░реНрдЧ
рд╕реНрдерд╛рдирд┐рдХ рдкреЗрдореЗрдВрдЯ - рдХрджрд╛рдЪрд┐рдд рдирд╛рд╣реА

рдФрдкрдЪрд╛рд░рд┐рдХрддрд╛ 3. рдСрдХреЕрдо-рдкреНрд░рдердо рд╡рд┐рдХрд╛рд╕ рдкрджреНрдзрдд.

рдбрд┐рдЭрд╛рдИрдирдЪреНрдпрд╛ рд╕реБрд░реВрд╡рд╛рддреАрд╕, рдорд╛рдХрдб рдорд╛рдгрд╕рд╛рд▓рд╛ рд╕рдорд╕реНрдпреЗрдЪреЗ рдирд┐рд░рд╛рдХрд░рдг рдХрд░рдгреНрдпрд╛рдЪреНрдпрд╛ рд╕рд░реНрд╡ рд╕реВрдХреНрд╖реНрдорддрд╛ рдорд╛рд╣рд┐рдд рдирд╛рд╣реАрдд рдЖрдгрд┐ рд╡рд╛рдЯрдд рдирд╛рд╣реАрдд рдЖрдгрд┐ рддреЛ рдЪреВрдХ рдХрд░реВ рд╢рдХрддреЛ. рдЖрдкрдг рд╡реЗрдЧрд╡реЗрдЧрд│реНрдпрд╛ рдкреНрд░рдХрд╛рд░реЗ рдЪреБрдХрд╛ рдХрд░реВ рд╢рдХрддрд╛:

  • рд╡реЗрдЧрд╡реЗрдЧрд│реНрдпрд╛ рдЬрдмрд╛рдмрджрд╛рд▒реНрдпрд╛ рд╡рд┐рд▓реАрди рдХрд░реВрди рд╡рд╕реНрддреВ рдЦреВрдк рдореЛрдареНрдпрд╛ рдХрд░рд╛
  • рдПрдХрд╛рдЪ рдЬрдмрд╛рдмрджрд╛рд░реАрд▓рд╛ рдЕрдиреЗрдХ рдкреНрд░рдХрд╛рд░рд╛рдВрдордзреНрдпреЗ рд╡рд┐рднрд╛рдЧреВрди рд░рд┐рдлреНрд░реЗрдорд┐рдВрдЧ
  • рдЬрдмрд╛рдмрджрд╛рд░реАрдЪреНрдпрд╛ рд╕реАрдорд╛ рдЪреБрдХреАрдЪреНрдпрд╛ рдкрджреНрдзрддреАрдиреЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рд╛

рдирд┐рдпрдо рд▓рдХреНрд╖рд╛рдд рдареЗрд╡рдгреЗ рдорд╣рддреНрддреНрд╡рд╛рдЪреЗ рдЖрд╣реЗ: "рдПрдХ рдореЛрдареА рдЪреВрдХ рдХрд░рдгреЗ рдЪрд╛рдВрдЧрд▓реЗ рдЖрд╣реЗ," рдХрд┐рдВрд╡рд╛ "рддреБрдореНрд╣рд╛рд▓рд╛ рдЦрд╛рддреНрд░реА рдирд╕рд▓реНрдпрд╛рд╕, рддреЗ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░реВ рдирдХрд╛." рдЬрд░, рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рддреБрдордЪреНрдпрд╛ рд╡рд░реНрдЧрд╛рдд рджреЛрди рдЬрдмрд╛рдмрджрд╛рд▒реНрдпрд╛ рдЕрд╕рддреАрд▓, рддрд░ рддреЗ рдЕрдЬреВрдирд╣реА рд╕рдордЬрдгреНрдпрд╛рд╕рд╛рд░рдЦреЗ рдЖрд╣реЗ рдЖрдгрд┐ рдХреНрд▓рд╛рдпрдВрдЯ рдХреЛрдбрдордзреНрдпреЗ рдХрдореАрддрдХрдореА рдмрджрд▓ рдХрд░реВрди рджреЛрди рднрд╛рдЧрд╛рдВрдордзреНрдпреЗ рд╡рд┐рднрд╛рдЧрд▓реЗ рдЬрд╛рдК рд╢рдХрддреЗ. рдХрд╛рдЪреЗрдЪреНрдпрд╛ рддреБрдХрдбреНрдпрд╛рдВрдордзреВрди рдЧреНрд▓рд╛рд╕ рдПрдХрддреНрд░ рдХрд░рдгреЗ рд╕рд╣рд╕рд╛ рдЕрдзрд┐рдХ рдХрдареАрдг рдЕрд╕рддреЗ рдХрд╛рд░рдг рд╕рдВрджрд░реНрдн рдЕрдиреЗрдХ рдлрд╛рдИрд▓реНрд╕рдордзреНрдпреЗ рдкрд╕рд░рд▓реЗрд▓рд╛ рдЕрд╕рддреЛ рдЖрдгрд┐ рдХреНрд▓рд╛рдпрдВрдЯ рдХреЛрдбрдордзреНрдпреЗ рдЖрд╡рд╢реНрдпрдХ рдЕрд╡рд▓рдВрдмрди рдирд╕рд▓реНрдпрд╛рдореБрд│реЗ.

рддреНрдпрд╛рд▓рд╛ рдПрдХ рджрд┐рд╡рд╕ рдореНрд╣рдгрдгреНрдпрд╛рдЪреА рд╡реЗрд│ рдЖрд▓реА рдЖрд╣реЗ

SRP рдЪреА рд╡реНрдпрд╛рдкреНрддреА OOP рдЖрдгрд┐ SOLID рдкреБрд░рддреА рдорд░реНрдпрд╛рджрд┐рдд рдирд╛рд╣реА. рд╣реЗ рдкрджреНрдзрддреА, рдХрд╛рд░реНрдпреЗ, рд╡рд░реНрдЧ, рдореЙрдбреНрдпреВрд▓, рдорд╛рдпрдХреНрд░реЛрд╕реЗрд╡рд╛ рдЖрдгрд┐ рд╕реЗрд╡рд╛рдВрдирд╛ рд▓рд╛рдЧреВ рд╣реЛрддреЗ. рд╣реЗ "рдлрд┐рдЧреЕрдХреНрд╕-рдлрд┐рдЧреЕрдХреНрд╕-рдЖрдгрд┐-рдкреНрд░реЙрдб" рдЖрдгрд┐ "рд░реЙрдХреЗрдЯ-рд╡рд┐рдЬреНрдЮрд╛рди" рд╡рд┐рдХрд╛рд╕ рджреЛрдиреНрд╣реАрд╡рд░ рд▓рд╛рдЧреВ рд╣реЛрддреЗ, рдЬреНрдпрд╛рдореБрд│реЗ рдЬрдЧ рд╕рд░реНрд╡рддреНрд░ рдереЛрдбреЗ рдЪрд╛рдВрдЧрд▓реЗ рдмрдирддреЗ. рдЖрдкрдг рдпрд╛рдмрджреНрджрд▓ рд╡рд┐рдЪрд╛рд░ рдХреЗрд▓реНрдпрд╛рд╕, рд╣реЗ рдЬрд╡рд│рдЬрд╡рд│ рд╕рд░реНрд╡ рдЕрднрд┐рдпрд╛рдВрддреНрд░рд┐рдХреАрдЪреЗ рдореВрд▓рднреВрдд рддрддреНрддреНрд╡ рдЖрд╣реЗ. рдпрд╛рдВрддреНрд░рд┐рдХ рдЕрднрд┐рдпрд╛рдВрддреНрд░рд┐рдХреА, рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рдгрд╛рд▓реА рдЖрдгрд┐ рдЦрд░рдВрдЪ рд╕рд░реНрд╡ рдЬрдЯрд┐рд▓ рдкреНрд░рдгрд╛рд▓реА рдШрдЯрдХрд╛рдВрдкрд╛рд╕реВрди рдмрдирд╡рд┐рд▓реНрдпрд╛ рдЬрд╛рддрд╛рдд рдЖрдгрд┐ "рдЕрдВрдбрд░рдлреНрд░реЕрдЧрдореЗрдВрдЯреЗрд╢рди" рдбрд┐рдЭрд╛рдЗрдирд░рд▓рд╛ рд▓рд╡рдЪрд┐рдХрддреЗрдкрд╛рд╕реВрди рд╡рдВрдЪрд┐рдд рдареЗрд╡рддреЗ, "рдУрд╡реНрд╣рд░рдлреНрд░реЕрдЧрдореЗрдВрдЯреЗрд╢рди" рдбрд┐рдЭрд╛рдЗрдирд░реНрд╕рдЪреНрдпрд╛ рдХрд╛рд░реНрдпрдХреНрд╖рдорддреЗрдкрд╛рд╕реВрди рд╡рдВрдЪрд┐рдд рдареЗрд╡рддреЗ рдЖрдгрд┐ рдЪреБрдХреАрдЪреНрдпрд╛ рд╕реАрдорд╛ рддреНрдпрд╛рдВрдирд╛ рдХрд╛рд░рдг рдЖрдгрд┐ рдордирдГрд╢рд╛рдВрддреАрдкрд╛рд╕реВрди рд╡рдВрдЪрд┐рдд рдареЗрд╡рддрд╛рдд.

рдПрдХрд▓ рдЬрдмрд╛рдмрджрд╛рд░реА рддрддреНрддреНрд╡. рджрд┐рд╕рддреЗ рддрд┐рддрдХреЗ рд╕реЛрдкреЗ рдирд╛рд╣реА

SRP рдирд┐рд╕рд░реНрдЧрд╛рдиреЗ рд╢реЛрдзрд▓реЗрд▓рд╛ рдирд╛рд╣реА рдЖрдгрд┐ рдЕрдЪреВрдХ рд╡рд┐рдЬреНрдЮрд╛рдирд╛рдЪрд╛ рднрд╛рдЧ рдирд╛рд╣реА. рд╣реЗ рдЖрдкрд▓реНрдпрд╛ рдЬреИрд╡рд┐рдХ рдЖрдгрд┐ рдорд╛рдирд╕рд┐рдХ рдорд░реНрдпрд╛рджрд╛рдВрдордзреВрди рдмрд╛рд╣реЗрд░ рдкрдбрддреЗ. рд╡рд╛рдирд░-рдордиреБрд╖реНрдпрд╛рдЪреНрдпрд╛ рдореЗрдВрджреВрдЪрд╛ рд╡рд╛рдкрд░ рдХрд░реВрди рдЬрдЯрд┐рд▓ рдкреНрд░рдгрд╛рд▓реА рдирд┐рдпрдВрддреНрд░рд┐рдд рдЖрдгрд┐ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдгреНрдпрд╛рдЪрд╛ рд╣рд╛ рдПрдХ рдорд╛рд░реНрдЧ рдЖрд╣реЗ. рдкреНрд░рдгрд╛рд▓реАрдЪреЗ рд╡рд┐рдШрдЯрди рдХрд╕реЗ рдХрд░рд╛рдпрдЪреЗ рддреЗ рддреЛ рд╕рд╛рдВрдЧрддреЛ. рдореВрд│ рдлреЙрд░реНрдореНрдпреБрд▓реЗрд╢рдирд╕рд╛рдареА рдореЛрдареНрдпрд╛ рдкреНрд░рдорд╛рдгрд╛рдд рдЯреЗрд▓рд┐рдкреЕрдереА рдЖрд╡рд╢реНрдпрдХ рд╣реЛрддреА, рдкрд░рдВрддреБ рдорд▓рд╛ рдЖрд╢рд╛ рдЖрд╣реЗ рдХреА рд╣рд╛ рд▓реЗрдЦ рдХрд╛рд╣реА рд╕реНрдореЛрдХреНрд╕рд╕реНрдХреНрд░реАрди рд╕рд╛рдл тАЛтАЛрдХрд░реЗрд▓.

рд╕реНрддреНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛