рдПрдХрд▓ рдЙрддреНрддрд░рджрд╛рдпрд┐рддреНрд╡ рд╕рд┐рджреНрдзрд╛рдиреНрддред рдЬрд╕реНрддреЛ рджреЗрдЦрд┐рдиреНрдЫ рдЬрд╕реНрддреЛ рд╕рд░рд▓ рдЫреИрди

рдПрдХрд▓ рдЙрддреНрддрд░рджрд╛рдпрд┐рддреНрд╡ рд╕рд┐рджреНрдзрд╛рдиреНрддред рдЬрд╕реНрддреЛ рджреЗрдЦрд┐рдиреНрдЫ рдЬрд╕реНрддреЛ рд╕рд░рд▓ рдЫреИрди рдПрдХрд▓ рдЬрд┐рдореНрдореЗрд╡рд╛рд░реА рд╕рд┐рджреНрдзрд╛рдиреНрдд, рдЬрд╕рд▓рд╛рдИ рдПрдХрд▓ рдЬрд┐рдореНрдореЗрд╡рд╛рд░реАрдХреЛ рд╕рд┐рджреНрдзрд╛рдиреНрдд рдкрдирд┐ рднрдирд┐рдиреНрдЫ,
рдПрдХ рд╕рдорд╛рди рдкрд░рд┐рд╡рд░реНрддрдирд╢реАрд▓рддрд╛ рдХреЛ рд╕рд┐рджреНрдзрд╛рдиреНрдд рдЙрд░реНрдл тАЛтАЛ- рдмреБрдЭреНрди рдХреЛ рд▓рд╛рдЧреА рдПрдХ рдЕрддреНрдпрдиреНрдд рдЪрд┐рдкреНрд▓реЛ рдорд╛рдиреНрдЫреЗ рд░ рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдЕрдиреНрддрд░реНрд╡рд╛рд░реНрддрд╛ рдорд╛ рдпрд╕реНрддреЛ рдирд░реНрд╡рд╕ рдкреНрд░рд╢реНрдиред

рдпрд╕ рд╕рд┐рджреНрдзрд╛рдиреНрддрд╕рдБрдЧ рдореЗрд░реЛ рдкрд╣рд┐рд▓реЛ рдЧрдореНрднреАрд░ рдкрд░рд┐рдЪрдп рдкрд╣рд┐рд▓реЛ рд╡рд░реНрд╖рдХреЛ рд╕реБрд░реБрдорд╛ рднрдПрдХреЛ рдерд┐рдпреЛ, рдЬрдм рдЬрд╡рд╛рди рд░ рд╣рд░рд┐рдпреЛрд╣рд░реВрд▓рд╛рдИ рд▓рд╛рд░реНрднрд╛рдмрд╛рдЯ рд╡рд┐рджреНрдпрд╛рд░реНрдереАрд╣рд░реВ рдмрдирд╛рдЙрди рдЬрдВрдЧрд▓рдорд╛ рд▓рдЧрд┐рдпреЛ - рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╡рд┐рджреНрдпрд╛рд░реНрдереАрд╣рд░реВред

рдЬрдЩреНрдЧрд▓рдорд╛, рд╣рд╛рдореА 8-9 рдЬрдирд╛рдХреЛ рд╕рдореВрд╣рдорд╛ рд╡рд┐рднрд╛рдЬрд┐рдд рдерд┐рдпреМрдВ рд░ рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзрд╛ рдерд┐рдпреЛ - рдХреБрди рд╕рдореВрд╣рд▓реЗ рднреЛрдбреНрдХрд╛рдХреЛ рдмреЛрддрд▓ рд╕рдмреИрднрдиреНрджрд╛ рдЫрд┐рдЯреЛ рдкрд┐рдЙрдиреЗ рд╣реЛ, рдпрджрд┐ рд╕рдореВрд╣рдХреЛ рдкрд╣рд┐рд▓реЛ рд╡реНрдпрдХреНрддрд┐рд▓реЗ рдЧрд┐рд▓рд╛рд╕рдорд╛ рднреЛрдбреНрдХрд╛ рдЦрдиреНрдпрд╛рдпреЛ, рджреЛрд╕реНрд░реЛрд▓реЗ рдпрд╕рд▓рд╛рдИ рдкрд┐рдЙрдиреЗ, рд░ рддреЗрд╕реНрд░реЛрд▓реЗ рдЦрд╛рдЬрд╛ рдЦрд╛рдпреЛред рдЖрдлреНрдиреЛ рд╕рдЮреНрдЪрд╛рд▓рди рдкреВрд░рд╛ рдЧрд░реЗрдХреЛ рдПрдХрд╛рдЗ рд╕рдореВрд╣рдХреЛ рд▓рд╛рдордХреЛ рдЕрдиреНрддреНрдпрдорд╛ рд╕рд░реНрдЫред

рд▓рд╛рдордХреЛ рдЖрдХрд╛рд░ рддреАрди рдХреЛ рдЧреБрдгрди рднрдПрдХреЛ рдЕрд╡рд╕реНрдерд╛рдорд╛ SRP рдХреЛ рд░рд╛рдореНрд░реЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдерд┐рдпреЛред

рдкрд░рд┐рднрд╛рд╖рд╛ рез. рдПрдХрд▓ рдЬрд┐рдореНрдореЗрд╡рд╛рд░реАред

рдПрдХрд▓ рдЙрддреНрддрд░рджрд╛рдпрд┐рддреНрд╡ рд╕рд┐рджреНрдзрд╛рдиреНрдд (SRP) рдХреЛ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдкрд░рд┐рднрд╛рд╖рд╛рд▓реЗ рдмрддрд╛рдЙрдБрдЫ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рд╕рдВрд╕реНрдерд╛рдХреЛ рдЖрдлреНрдиреИ рдЬрд┐рдореНрдореЗрд╡рд╛рд░реА рд░ рдЕрд╕реНрддрд┐рддреНрд╡рдХреЛ рдХрд╛рд░рдг рдЫ, рд░ рдпрд╕рдХреЛ рдПрдХ рдорд╛рддреНрд░ рдЬрд┐рдореНрдореЗрд╡рд╛рд░реА рдЫред

"рдкрд┐рдЙрдиреЗ" рд╡рд╕реНрддреБрд▓рд╛рдИ рд╡рд┐рдЪрд╛рд░ рдЧрд░реНрдиреБрд╣реЛрд╕реН (рдЯрд┐рдкреНрд▓рд░).
SRP рд╕рд┐рджреНрдзрд╛рдиреНрдд рд▓рд╛рдЧреВ рдЧрд░реНрди, рд╣рд╛рдореА рдЬрд┐рдореНрдореЗрд╡рд╛рд░реАрд╣рд░реВрд▓рд╛рдИ рддреАрди рднрд╛рдЧрдорд╛ рд╡рд┐рднрд╛рдЬрди рдЧрд░реНрдиреЗрдЫреМрдВ:

  • рдПрдХ рдЦрдиреНрдпрд╛рдЙрдЫ (PourOperation)
  • рдПрдХ рдкреЗрдп (рдкреЗрдп рдЕрдкрд░реЗрд╢рди)
  • рдПрдЙрдЯрд╛ рдЦрд╛рдЬрд╛ рдЫ (TakeBiteOperation)

рдкреНрд░рдХреНрд░рд┐рдпрд╛рдорд╛ рдкреНрд░рддреНрдпреЗрдХ рд╕рд╣рднрд╛рдЧреА рдкреНрд░рдХреНрд░рд┐рдпрд╛рдХреЛ рдПрдХ рдШрдЯрдХрдХреЛ рд▓рд╛рдЧрд┐ рдЬрд┐рдореНрдореЗрд╡рд╛рд░ рдЫ, рддреНрдпреЛ рд╣реЛ, рдПрдХ рдкрд░рдорд╛рдгреБ рдЬрд┐рдореНрдореЗрд╡рд╛рд░реА рдЫ - рдкрд┐рдЙрди, рдЦрдиреНрдпрд╛рдЙрди рд╡рд╛ рдЦрд╛рдЬрд╛ред

рдкрд┐рдЙрдиреЗ рдкреНрд╡рд╛рд▓, рдмрд╛рд░реАрдорд╛, рдпреА рдХрд╛рд░реНрдпрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдореБрдЦреМрдЯрд╛ рд╣реЛ:

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

рдПрдХрд▓ рдЙрддреНрддрд░рджрд╛рдпрд┐рддреНрд╡ рд╕рд┐рджреНрдзрд╛рдиреНрддред рдЬрд╕реНрддреЛ рджреЗрдЦрд┐рдиреНрдЫ рдЬрд╕реНрддреЛ рд╕рд░рд▓ рдЫреИрди

рдХрд┐рди?

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

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

рддреНрдпрд╕рдХрд╛рд░рдг, рдорд╛рдирд╡ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░рд╣рд░реВрд▓реЗ рдЬрдЯрд┐рд▓ рд╕рдВрдпрдиреНрддреНрд░рд╣рд░реВрд▓рд╛рдИ рдХрдо рдЬрдЯрд┐рд▓ рд░ рдХрд╛рдо рдЧрд░реНрдиреЗ рддрддреНрд╡рд╣рд░реВрдХреЛ рд╕реЗрдЯрдорд╛ рд╡рд┐рдШрдЯрди рдЧрд░реНрдЫрдиреНред рдпрджреНрдпрдкрд┐, рдпрд╕рд▓рд╛рдИ рд╡рд┐рднрд┐рдиреНрди рддрд░рд┐рдХрд╛рдорд╛ рд╡рд┐рдШрдЯрди рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ: рдзреЗрд░реИ рдкреБрд░рд╛рдиреЛ рдХрд╛рд░рд╣рд░реВрдорд╛, рд╣рд╛рд╡рд╛ рдирд▓рд┐рдХрд╛ рдвреЛрдХрд╛рдорд╛ рдЬрд╛рдиреНрдЫ, рд░ рдЖрдзреБрдирд┐рдХ рдХрд╛рд░рд╣рд░реВрдорд╛, рд▓рдХ рдЗрд▓реЗрдХреНрдЯреНрд░реЛрдирд┐рдХреНрд╕рдорд╛ рд╡рд┐рдлрд▓рддрд╛рд▓реЗ рдЗрдиреНрдЬрд┐рдирд▓рд╛рдИ рд╕реБрд░реБ рдЧрд░реНрдирдмрд╛рдЯ рд░реЛрдХреНрдЫ, рдЬреБрди рдорд░реНрдорддрдХреЛ рд╕рдордпрдорд╛ рд╕рдорд╕реНрдпрд╛ рд╣реБрди рд╕рдХреНрдЫред

рдЕрд╣рд┐рд▓реЗ, SRP рдПрдЙрдЯрд╛ рд╕рд┐рджреНрдзрд╛рдиреНрдд рд╣реЛ рдЬрд╕рд▓реЗ рдХрд╕рд░реА рд╡рд┐рдШрдЯрди рдЧрд░реНрдиреЗ рднрдиреЗрд░ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдЧрд░реНрдЫ, рдЕрд░реНрдерд╛рддреН, рд╡рд┐рднрд╛рдЬрди рд░реЗрдЦрд╛ рдХрд╣рд╛рдБ рдХреЛрд░реНрдиреЗ.

рдЙрдиреА рднрдиреНрдЫрдиреН рдХрд┐ рдпреЛ "рдЬрд┐рдореНрдореЗрд╡рд╛рд░реА" рдХреЛ рд╡рд┐рднрд╛рдЬрди рдХреЛ рд╕рд┐рджреНрдзрд╛рдиреНрдд рдЕрдиреБрд╕рд╛рд░ рд╡рд┐рдШрдЯрди рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ, рдЕрд░реНрдерд╛рддреН, рдХреЗрд╣рд┐ рд╡рд╕реНрддреБрд╣рд░реБ рдХреЛ рдХрд╛рд░реНрдпрд╣рд░реБ рдХреЛ рдЕрдиреБрд╕рд╛рд░ред

рдПрдХрд▓ рдЙрддреНрддрд░рджрд╛рдпрд┐рддреНрд╡ рд╕рд┐рджреНрдзрд╛рдиреНрддред рдЬрд╕реНрддреЛ рджреЗрдЦрд┐рдиреНрдЫ рдЬрд╕реНрддреЛ рд╕рд░рд▓ рдЫреИрди

рд░рдХреНрд╕реА рдкрд┐рдЙрдиреЗ рд░ рд╡рд┐рдШрдЯрди рд╣реБрдБрджрд╛ рдмрд╛рдБрджрд░рд▓реЗ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрдиреЗ рдлрд╛рдЗрджрд╛рд╣рд░реВрдорд╛ рдлрд░реНрдХреМрдВ:

  • рдХреЛрдб рд╣рд░реЗрдХ рддрд╣рдорд╛ рдЕрддреНрдпрдиреНрдд рд╕реНрдкрд╖реНрдЯ рднрдПрдХреЛ рдЫ
  • рдХреЛрдб рдПрдХреИ рдкрдЯрдХ рдзреЗрд░реИ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░рд╣рд░реВ рджреНрд╡рд╛рд░рд╛ рд▓реЗрдЦреНрди рд╕рдХрд┐рдиреНрдЫ (рдкреНрд░рддреНрдпреЗрдХрд▓реЗ рдЫреБрдЯреНрдЯреИ рддрддреНрд╡ рд▓реЗрдЦреНрдЫ)
  • рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдкрд░реАрдХреНрд╖рдгрд▓рд╛рдИ рд╕рд░рд▓реАрдХреГрдд рдЧрд░рд┐рдПрдХреЛ рдЫ - рддрддреНрд╡ рдЬрддрд┐ рд╕рд░рд▓ рд╣реБрдиреНрдЫ, рдкрд░реАрдХреНрд╖рдг рдЧрд░реНрди рддреНрдпрддрд┐ рдиреИ рд╕рдЬрд┐рд▓реЛ рд╣реБрдиреНрдЫ
  • рдХреЛрдбрдХреЛ рд╕рдВрд░рдЪрдирд╛рддреНрдордХрддрд╛ рджреЗрдЦрд┐рдиреНрдЫ - рддрдкрд╛рдЗрдБ рдмрджрд▓реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ рдкреЗрдп рдЕрдкрд░реЗрд╢рди рдПрдХ рдЕрдкрд░реЗрд╕рдирдорд╛ рдЬрд╕рдорд╛ рдПрдХ рд░рдХреНрд╕реАрд▓реЗ рдЯреЗрдмрд▓ рдореБрдирд┐ рддрд░рд▓ рдЦрдиреНрдпрд╛рдЙрдЫред рд╡рд╛ рдкреЛрдЙрд░рд┐рдЩ рдЕрдкрд░реЗрд╢рдирд▓рд╛рдИ рдПрдЙрдЯрд╛ рдЕрдкрд░реЗрд╢рдирд▓реЗ рдмрджрд▓реНрдиреБрд╣реЛрд╕реН рдЬрд╕рдорд╛ рддрдкрд╛рдИрдВрд▓реЗ рд╡рд╛рдЗрди рд░ рдкрд╛рдиреА рд╡рд╛ рднреЛрдбреНрдХрд╛ рд░ рдмрд┐рдпрд░ рдорд┐рд╕рд╛рдЙрдиреБрд╣реБрдиреНрдЫред рд╡реНрдпрд╛рдкрд╛рд░ рдЖрд╡рд╢реНрдпрдХрддрд╛рд╣рд░реВрдорд╛ рдирд┐рд░реНрднрд░ рдЧрд░реНрджреИ, рддрдкрд╛рдЗрдБ рд╡рд┐рдзрд┐ рдХреЛрдб рдирдЫреЛрдЗрдХрди рд╕рдмреИ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ Tippler.Act.
  • рдпреА рдЕрдкрд░реЗрд╕рдирд╣рд░реВрдмрд╛рдЯ рддрдкрд╛рдИрдВрд▓реЗ рдЧреНрд▓реБрдЯрди рдлреЛрд▓реНрдб рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ (рдХреЗрд╡рд▓ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ TakeBitOperation), рд░рдХреНрд╕реА (рдХреЗрд╡рд▓ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдкреЗрдп рдЕрдкрд░реЗрд╢рди рд╕рд┐рдзрд╛ рдмреЛрддрд▓рдмрд╛рдЯ) рд░ рдЕрдиреНрдп рдзреЗрд░реИ рд╡реНрдпрд╡рд╕рд╛рдп рдЖрд╡рд╢реНрдпрдХрддрд╛рд╣рд░реВ рдкреВрд░рд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реНред

(рдУрд╣, рдпреЛ рдкрд╣рд┐рд▓реЗ рдиреИ OCP рд╕рд┐рджреНрдзрд╛рдиреНрдд рд╣реЛ рдЬрд╕реНрддреЛ рджреЗрдЦрд┐рдиреНрдЫ, рд░ рдореИрд▓реЗ рдпреЛ рдкреЛрд╕реНрдЯрдХреЛ рдЬрд┐рдореНрдореЗрд╡рд╛рд░реА рдЙрд▓реНрд▓рдЩреНрдШрди рдЧрд░реЗрдХреЛ рдЫреБ)

рд░, рдирд┐рд╕реНрд╕рдиреНрджреЗрд╣, рд╡рд┐рдкрдХреНрд╖:

  • рд╣рд╛рдореАрд▓реЗ рдердк рдкреНрд░рдХрд╛рд░рд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреБрдкрд░реНрдиреЗрдЫред
  • рдорд╛рджрдХ рдкрджрд╛рд░реНрде рдкрд┐рдЙрдиреЗ рд╡реНрдпрдХреНрддрд┐рд▓реЗ рдЕрдиреНрдпрдерд╛ рдкрд┐рдЙрдиреЗ рднрдиреНрджрд╛ рдХреЗрд╣реА рдШрдгреНрдЯрд╛ рдкрдЫрд┐ рдкрд╣рд┐рд▓реЛ рдкрдЯрдХ рдкрд┐рдЙрдЫред

рдкрд░рд┐рднрд╛рд╖рд╛ реи. рдПрдХреАрдХреГрдд рдкрд░рд┐рд╡рд░реНрддрдирд╢реАрд▓рддрд╛ред

рдорд▓рд╛рдИ рдЕрдиреБрдорддрд┐ рджрд┐рдиреБрд╣реЛрд╕реН, рд╕рдЬреНрдЬрдирд╣рд░реВ! рдкрд┐рдЙрдиреЗ рд╡рд░реНрдЧрдХреЛ рдкрдирд┐ рдПрдЙрдЯреИ рдЬрд┐рдореНрдореЗрд╡рд╛рд░реА рдЫ - рдпреЛ рдкрд┐рдЙрдЫ! рд░ рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛, рд╢рдмреНрдж "рдЙрддреНрддрд░рджрд╛рдпрд┐рддреНрд╡" рдПрдХ рдЕрддреНрдпрдиреНрдд рдЕрд╕реНрдкрд╖реНрдЯ рдЕрд╡рдзрд╛рд░рдгрд╛ рд╣реЛред рдХреЛрд╣реА рдорд╛рдирд╡рддрд╛рдХреЛ рднрд╛рдЧреНрдпрдХреЛ рд▓рд╛рдЧрд┐ рдЬрд┐рдореНрдореЗрд╡рд╛рд░ рдЫ, рд░ рдХреЛрд╣реА рдзреНрд░реБрд╡рдорд╛ рдкрд▓реНрдЯрд┐рдПрдХрд╛ рдкреЗрдВрдЧреБрдЗрдирд╣рд░реВ рдЙрдард╛рдЙрди рдЬрд┐рдореНрдореЗрд╡рд╛рд░ рдЫрдиреНред

рдкрд┐рдЙрдиреЗ рдХреЛ рджреБрдИ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╡рд┐рдЪрд╛рд░ рдЧрд░реМрдВред рдкрд╣рд┐рд▓реЛ, рдорд╛рдерд┐ рдЙрд▓реНрд▓реЗрдЦрд┐рдд, рддреАрди рд╡рд░реНрдЧрд╣рд░реВ рдЫрдиреН - рдЦрдиреНрдп, рдкреЗрдп рд░ рдЦрд╛рдЬрд╛ред

рджреЛрд╕реНрд░реЛ "рдлрд░реНрд╡рд╛рд░реНрдб рд░ рдУрдиреНрд▓реА рдлрд░реНрд╡рд╛рд░реНрдб" рдкрджреНрдзрддрд┐ рдорд╛рд░реНрдлрдд рд▓реЗрдЦрд┐рдПрдХреЛ рдЫ рд░ рд╡рд┐рдзрд┐рдорд╛ рд╕рдмреИ рддрд░реНрдХрд╣рд░реВ рд╕рдорд╛рд╡реЗрд╢ рдЫрдиреНред рдЕрдзрд┐рдирд┐рдпрдо:

//╨Э╨╡ ╤В╤А╨░╤В╤М╤В╨╡ ╨▓╤А╨╡╨╝╤П  ╨╜╨░ ╨╕╨╖╤Г╤З╨╡╨╜╨╕╨╡ ╤Н╤В╨╛╨│╨╛ ╨║╨╗╨░╤Б╤Б╨░. ╨Ы╤Г╤З╤И╨╡ ╤Б╤К╨╡╤И╤М╤В╨╡ ╨┐╨╡╤З╨╡╨╜╤М╨║╤Г
╤Б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 рд▓рд╛рдЗрдирд╣рд░реВрдХреЛ рднрдпрд╛рдирдХ рд╡рд┐рдзрд┐рд╣рд░реВрдорд╛ рд╕рдорд╛рдкреНрдд рд╣реБрдиреНрдЫ, рд░реВрд╕рд▓рд╛рдИ NATO рдорд╛ рд╕рд╛рдореЗрд▓ рд╣реБрди рдЖрд╡рд╢реНрдпрдХ рднрдиреНрджрд╛ рдмрдвреА рдпрджрд┐-рдХрдердирд╣рд░реВ рд╕рд╣рд┐рддред

рдкрд░рд┐рднрд╛рд╖рд╛ 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)
        }
    }
}

рд╕рдЪреЗрдд рдкрд╛рдардХрд▓реЗ рдпреЛ рдпрд╛рдж рдЧрд░реНрдиреЗрдЫ рд▓рдЧ рдЕрдлреНрдЯрд░, рд▓рдЧрдмрдлрд░ ╨╕ рддреНрд░реБрдЯрд┐ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдкрдорд╛ рдкрдирд┐ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ, рд░, рдЕрдШрд┐рд▓реНрд▓реЛ рдЪрд░рдгрд╣рд░реВрд╕рдБрдЧ рд╕рдорд╛рдирддрд╛ рдЧрд░реЗрд░, рддреАрди рд╡рд░реНрдЧрд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреЗрдЫ: PourLoggerBefore, PourLoggerAfter ╨╕ PourErrorLogger.

рд░ рдкрд┐рдЙрдиреЗрдХреЛ рд▓рд╛рдЧрд┐ рддреНрдпрд╣рд╛рдБ рддреАрдирд╡рдЯрд╛ рдЕрдкрд░реЗрд╢рдирд╣рд░реВ рдЫрдиреН рднрдиреЗрд░ рд╕рдореНрдЭрдБрджрд╛, рд╣рд╛рдореАрд▓реЗ рдиреМрд╡рдЯрд╛ рд▓рдЧрд┐рдЩ рдХрдХреНрд╖рд╛рд╣рд░реВ рдкрд╛рдЙрдБрдЫреМрдВред рдирддрд┐рдЬрд╛рдХреЛ рд░реВрдкрдорд╛, рд╕рдореНрдкреВрд░реНрдг рдкреЗрдп рд╕рд░реНрдХрд▓рдорд╛ 14 (!!!) рдХрдХреНрд╖рд╛рд╣рд░реВ рд╣реБрдиреНрдЫрдиреНред

рд╣рд╛рдЗрдкрд░рдмреЛрд▓рд╛? рдореБрд╢реНрдХрд┐рд▓рд▓реЗ! рдбрд┐рдХрдореНрдкреЛрдЬрд┐рд╕рди рдЧреНрд░реЗрдиреЗрдб рднрдПрдХреЛ рдмрд╛рдБрджрд░рд▓реЗ рдбрд┐рдХреНрдпрд╛рдиреНрдЯрд░, рдЧрд┐рд▓рд╛рд╕, рдкреЛрдпрд░рд┐рдЩ рдЕрдкрд░реЗрдЯрд░рд╣рд░реВ, рдкрд╛рдиреА рдЖрдкреВрд░реНрддрд┐ рд╕реЗрд╡рд╛, рдЕрдгреБрд╣рд░реВрдХреЛ рдЯрдХреНрдХрд░рдХреЛ рднреМрддрд┐рдХ рдореЛрдбреЗрд▓рдорд╛ "рдкреЛрд░рд░" рд╡рд┐рднрд╛рдЬрд┐рдд рдЧрд░реНрдиреЗрдЫ, рд░ рдЕрд░реНрдХреЛ рдХреНрд╡рд╛рд░реНрдЯрд░рдХреЛ рд▓рд╛рдЧрд┐ рдЙрд╕рд▓реЗ рдмрд┐рдирд╛ рдирд┐рд░реНрднрд░рддрд╛рд╣рд░реВ рд╣рдЯрд╛рдЙрдиреЗ рдкреНрд░рдпрд╛рд╕ рдЧрд░реНрдиреЗрдЫред рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░ред рд░ рдорд▓рд╛рдИ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдЧрд░реНрдиреБрд╣реЛрд╕реН, рдК рд░реЛрдХрд┐рдиреЗрдЫреИрдиред

рдпрд╕ рдмрд┐рдиреНрджреБрдорд╛ рдзреЗрд░реИрд▓реЗ рдирд┐рд╖реНрдХрд░реНрд╖рдорд╛ рдкреБрдЧреНрдЫрдиреН рдХрд┐ SRP рдЧреБрд▓рд╛рдмреА рд░рд╛рдЬреНрдпрд╣рд░реВрдХрд╛ рдкрд░реА рдХрдерд╛рд╣рд░реВ рд╣реБрдиреН, рд░ рдЪрд╛рдЙрдЪрд╛рдЙ рдЦреЗрд▓реНрди рдЯрд╛рдврд╛ рдЬрд╛рдиреНрдЫрдиреН ...

... Srp рдХреЛ рддреЗрд╕реНрд░реЛ рдкрд░рд┐рднрд╛рд╖рд╛рдХреЛ рдЕрд╕реНрддрд┐рддреНрд╡рдХреЛ рдмрд╛рд░реЗрдорд╛ рдХрд╣рд┐рд▓реНрдпреИ рдирдЬрд╛рдиреЗрдХреЛ:

"рдПрдХрд▓ рдЙрддреНрддрд░рджрд╛рдпрд┐рддреНрд╡ рд╕рд┐рджреНрдзрд╛рдиреНрддрд▓реЗ рдмрддрд╛рдЙрдБрдЫ рдкрд░рд┐рд╡рд░реНрддрдирд╕рдБрдЧ рдорд┐рд▓реНрджреЛрдЬреБрд▓реНрджреЛ рдЪреАрдЬрд╣рд░реВ рдПрдХреИ рдард╛рдЙрдБрдорд╛ рднрдгреНрдбрд╛рд░ рдЧрд░реНрдиреБрдкрд░реНрдЫ"ред рд╡рд╛ "рдХреЗ рдкрд░рд┐рд╡рд░реНрддрдирд╣рд░реВ рдПрдХреИ рдард╛рдЙрдБрдорд╛ рд░рд╛рдЦреНрдиреБрдкрд░реНрдЫ"

рддреНрдпреЛ рд╣реЛ, рдпрджрд┐ рд╣рд╛рдореАрд▓реЗ рдЕрдкрд░реЗрд╢рдирдХреЛ рд▓рдЧрд┐рдЩ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрдЫреМрдВ рднрдиреЗ, рд╣рд╛рдореАрд▓реЗ рдпрд╕рд▓рд╛рдИ рдПрдХреИ рдард╛рдЙрдБрдорд╛ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрдиреБрдкрд░реНрдЫред

рдпреЛ рдПрдХ рдзреЗрд░реИ рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рдмрд┐рдиреНрджреБ рд╣реЛ - рдХрд┐рдирдХрд┐ рдорд╛рдерд┐рдХрд╛ SRP рдХреЛ рд╕рдмреИ рд╡реНрдпрд╛рдЦреНрдпрд╛рд╣рд░реВрд▓реЗ рднрдирд┐рдПрдХреЛ рдЫ рдХрд┐ рдкреНрд░рдХрд╛рд░рд╣рд░реВ рдХреБрдЪрд▓реНрджрд╛ рдХреБрдЪреНрдиреБ рдЖрд╡рд╢реНрдпрдХ рдЫ, рдЕрд░реНрдерд╛рддреН, рддрд┐рдиреАрд╣рд░реВрд▓реЗ рд╡рд╕реНрддреБрдХреЛ рдЖрдХрд╛рд░рдорд╛ "рдорд╛рдерд┐рд▓реНрд▓реЛ рд╕реАрдорд╛" рд▓рдЧрд╛рдП, рд░ рдЕрдмред рд╣рд╛рдореА рдкрд╣рд┐рд▓реЗ рдиреИ "рддрд▓реНрд▓реЛ рд╕реАрдорд╛" рдХреЛ рдмрд╛рд░реЗрдорд╛ рдХреБрд░рд╛ рдЧрд░реНрджреИрдЫреМрдВред рдЕрд░реНрдХреЛ рд╢рдмреНрджрдорд╛, SRP рд▓рд╛рдИ "рдХреНрд░рд╕рд┐рдВрдЧ рдЧрд░реНрджрд╛ рдХреНрд░рд╕рд┐рдЩ" рдорд╛рддреНрд░ рдЪрд╛рд╣рд┐рдиреНрдЫ, рддрд░ рдпрд╕рд▓рд╛рдИ рдЕрддрд┐ рдЧрд░реНрди рдкрдирд┐ рд╣реБрдБрджреИрди - "рдЗрдиреНрдЯрд░рд▓рдХрд┐рдЩ рдЪреАрдЬрд╣рд░реВ рдХреНрд░рд╢ рдирдЧрд░реНрдиреБрд╣реЛрд╕реН"ред рдпреЛ Occam рдХреЛ рд░реЗрдЬрд░ рд░ рдПрдк рдореНрдпрд╛рди рдмреАрдЪрдХреЛ рдареВрд▓реЛ рдпреБрджреНрдз рд╣реЛ!

рдПрдХрд▓ рдЙрддреНрддрд░рджрд╛рдпрд┐рддреНрд╡ рд╕рд┐рджреНрдзрд╛рдиреНрддред рдЬрд╕реНрддреЛ рджреЗрдЦрд┐рдиреНрдЫ рдЬрд╕реНрддреЛ рд╕рд░рд▓ рдЫреИрди

рдЕрдм рдкрд┐рдЙрдиреЗрд▓реЗ рд░рд╛рдореНрд░реЛ рдорд╣рд╕реБрд╕ рдЧрд░реНрдиреБрдкрд░реНрдЫред рдпрд╕ рддрдереНрдпрдХреЛ рдЕрддрд┐рд░рд┐рдХреНрдд рдХрд┐ рддреНрдпрд╣рд╛рдБ IPourLogger рд▓рдЧрд░рд▓рд╛рдИ рддреАрди рд╡рд░реНрдЧрд╣рд░реВрдорд╛ рд╡рд┐рднрд╛рдЬрди рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫреИрди, рд╣рд╛рдореА рд╕рдмреИ рд▓рдЧрд░рд╣рд░реВрд▓рд╛рдИ рдПрдХ рдкреНрд░рдХрд╛рд░рдорд╛ рдЬреЛрдбреНрди рд╕рдХреНрдЫреМрдВ:

class OperationLogger{
    public OperationLogger(string operationName){/*..*/}
    public void LogBefore(object[] args){/*...*/}       
    public void LogAfter(object[] args){/*..*/}
    public void LogError(object[] args, exception e){/*..*/}
}

рд░ рдпрджрд┐ рд╣рд╛рдореАрд▓реЗ рдЪреМрдереЛ рдкреНрд░рдХрд╛рд░рдХреЛ рдЕрдкрд░реЗрд╢рди рдердкреНрдпреМрдВ рднрдиреЗ, рдпрд╕рдХреЛ рд▓рд╛рдЧрд┐ рд▓рдЧрд┐рдЩ рдкрд╣рд┐рд▓реЗ рдиреИ рддрдпрд╛рд░ рдЫред рд░ рд╕рдЮреНрдЪрд╛рд▓рдирдХреЛ рдХреЛрдб рдЖрдлреИрдВ рд╕рдлрд╛ рд░ рдкреВрд░реНрд╡рд╛рдзрд╛рд░ рд╢реЛрд░ рдореБрдХреНрдд рдЫред

рдирддрд┐рдЬрд╛рдХреЛ рд░реВрдкрдорд╛, рд╣рд╛рдореАрд╕рдБрдЧ рдкреЗрдп рд╕рдорд╕реНрдпрд╛ рд╕рдорд╛рдзрд╛рди рдЧрд░реНрди 5 рдХрдХреНрд╖рд╛рд╣рд░реВ рдЫрдиреН:

  • рдЦрдиреНрдпрд╛рдЙрдиреЗ рдХрд╛рд░реНрдп
  • рдкрд┐рдЙрдиреЗ рдЕрдкрд░реЗрд╢рди
  • рдЬрд╛рдорд┐рдЩ рдЕрдкрд░реЗрд╢рди
  • рд▓рдЧрд░
  • рдкрд┐рдЙрдиреЗ рдореБрдЦреМрдЯрд╛

рддрд┐рдиреАрд╣рд░реВрдордзреНрдпреЗ рдкреНрд░рддреНрдпреЗрдХ рдПрдХ рдкреНрд░рдХрд╛рд░реНрдпрдХреЛ рд▓рд╛рдЧрд┐ рд╕рдЦреНрдд рд░реВрдкрдорд╛ рдЬрд┐рдореНрдореЗрд╡рд╛рд░ рдЫ рд░ рдкрд░рд┐рд╡рд░реНрддрдирдХреЛ рд▓рд╛рдЧрд┐ рдПрдХ рдХрд╛рд░рдг рдЫред рдкрд░рд┐рд╡рд░реНрддрди рдЬрд╕реНрддреИ рд╕рдмреИ рдирд┐рдпрдорд╣рд░реВ рдирдЬрд┐рдХреИ рдЕрд╡рд╕реНрдерд┐рдд рдЫрдиреНред

рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЬреАрд╡рди рдЙрджрд╛рд╣рд░рдг

рд╣рд╛рдореАрд▓реЗ рдПрдХ рдкрдЯрдХ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдкрдорд╛ b2b рдЧреНрд░рд╛рд╣рдХ рджрд░реНрддрд╛рдХреЛ рд▓рд╛рдЧрд┐ рд╕реЗрд╡рд╛ рд▓реЗрдЦреНрдпреМрдВред рд░ рд╕рдорд╛рди рд╕рд╛рдордЧреНрд░реАрдХреЛ 200 рд▓рд╛рдЗрдирд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рднрдЧрд╡рд╛рди рд╡рд┐рдзрд┐ рджреЗрдЦрд╛ рдкрд░реНтАНрдпреЛ:

  • 1C рдорд╛ рдЬрд╛рдиреБрд╣реЛрд╕реН рд░ рдПрдЙрдЯрд╛ рдЦрд╛рддрд╛ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реН
  • рдпрд╕ рдЦрд╛рддрд╛рдХреЛ рд╕рд╛рде, рднреБрдХреНрддрд╛рдиреА рдореЛрдбреНрдпреБрд▓рдорд╛ рдЬрд╛рдиреБрд╣реЛрд╕реН рд░ рддреНрдпрд╣рд╛рдБ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реН
  • рдЬрд╛рдБрдЪ рдЧрд░реНрдиреБрд╣реЛрд╕реН рдХрд┐ рдпрд╕реНрддреЛ рдЦрд╛рддрд╛ рднрдПрдХреЛ рдЦрд╛рддрд╛ рдореБрдЦреНрдп рд╕рд░реНрднрд░рдорд╛ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░рд┐рдПрдХреЛ рдЫреИрди
  • рдирдпрд╛рдБ рдЦрд╛рддрд╛ рдЦреЛрд▓реНрдиреБрд╣реЛрд╕реН
  • рджрд░реНрддрд╛ рдкрд░рд┐рдгрд╛рдорд╣рд░реВ рднреБрдХреНрддрд╛рдиреА рдореЛрдбреНрдпреБрд▓рдорд╛ рд░ 1c рдирдореНрдмрд░ рджрд░реНрддрд╛ рдкрд░рд┐рдгрд╛рдо рд╕реЗрд╡рд╛рдорд╛ рдердкреНрдиреБрд╣реЛрд╕реН
  • рдпрд╕ рддрд╛рд▓рд┐рдХрд╛рдорд╛ рдЦрд╛рддрд╛ рдЬрд╛рдирдХрд╛рд░реА рдердкреНрдиреБрд╣реЛрд╕реН
  • рдмрд┐рдиреНрджреБ рд╕реЗрд╡рд╛рдорд╛ рдпреЛ рдЧреНрд░рд╛рд╣рдХрдХреЛ рд▓рд╛рдЧрд┐ рдмрд┐рдиреНрджреБ рдирдореНрдмрд░ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реНред рдпрд╕ рд╕реЗрд╡рд╛рдорд╛ рдЖрдлреНрдиреЛ 1c рдЦрд╛рддрд╛ рдирдореНрдмрд░ рдкрд╛рд╕ рдЧрд░реНрдиреБрд╣реЛрд╕реНред

рд░ рдпрд╕ рд╕реВрдЪреАрдорд╛ рдбрд░рд▓рд╛рдЧреНрджреЛ рдЬрдбрд╛рдирдХреЛ рд╕рд╛рде рд▓рдЧрднрдЧ 10 рдердк рд╡реНрдпрд╡рд╕рд╛рдп рд╕рдЮреНрдЪрд╛рд▓рдирд╣рд░реВ рдерд┐рдПред рд▓рдЧрднрдЧ рд╕рдмреИрд▓рд╛рдИ рдЦрд╛рддрд╛ рд╡рд╕реНрддреБ рдЪрд╛рд╣рд┐рдиреНрдЫред рдЖрдзрд╛ рдХрд▓рд╣рд░реВрдорд╛ рдмрд┐рдиреНрджреБ ID рд░ рдЧреНрд░рд╛рд╣рдХрдХреЛ рдирд╛рдо рдЖрд╡рд╢реНрдпрдХ рдерд┐рдпреЛред

рд░рд┐рдлреНрдпрд╛рдХреНрдЯрд░рд┐рдЩрдХреЛ рдПрдХ рдШрдгреНрдЯрд╛ рдкрдЫрд┐, рд╣рд╛рдореАрд▓реЗ рдкреВрд░реНрд╡рд╛рдзрд╛рд░ рдХреЛрдб рд░ рдЦрд╛рддрд╛рд╕рдБрдЧ рдХрд╛рдо рдЧрд░реНрдиреЗ рдХреЗрд╣реА рдмрд╛рд░реАрдХрддрд╛рд╣рд░реВрд▓рд╛рдИ рдЫреБрдЯреНрдЯрд╛рдЫреБрдЯреНрдЯреИ рд╡рд┐рдзрд┐/рд╡рд░реНрдЧрд╣рд░реВрдорд╛ рдЕрд▓рдЧ рдЧрд░реНрди рд╕рдХреНрд╖рдо рднрдпреМрдВред рднрдЧрд╡рд╛рди рд╡рд┐рдзрд┐рд▓реЗ рдпрд╕рд▓рд╛рдИ рд╕рдЬрд┐рд▓реЛ рдмрдирд╛рдпреЛ, рддрд░ рддреНрдпрд╣рд╛рдБ рдХреЛрдбрдХрд╛ 100 рд▓рд╛рдЗрдирд╣рд░реВ рдмрд╛рдБрдХреА рдерд┐рдП рдЬрд╕рд▓рд╛рдИ рдмреЗрд╡рд╛рд╕реНрддрд╛ рдЧрд░реНрди рдЪрд╛рд╣рдБрджреИрдирдиреНред

рдХреЗрд╣рд┐ рджрд┐рди рдкрдЫрд┐ рдпреЛ рд╕реНрдкрд╖реНрдЯ рднрдпреЛ рдХрд┐ рдпреЛ "рд╣рд▓реНрдХрд╛" рд╡рд┐рдзрд┐ рдХреЛ рд╕рд╛рд░ рдПрдХ рд╡реНрдпрд╛рдкрд╛рд░ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рд╣реЛред рд░ рдкреНрд░рд╛рд╡рд┐рдзрд┐рдХ рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛рд╣рд░реВрдХреЛ рдореВрд▓ рд╡рд┐рд╡рд░рдг рдПрдХрджрдо рдЬрдЯрд┐рд▓ рдерд┐рдпреЛред рд░ рдпреЛ рдпрд╕ рд╡рд┐рдзрд┐рд▓рд╛рдИ рдЯреБрдХреНрд░рд╛рдорд╛ рдЯреБрдХреНрд░рд╛ рдкрд╛рд░реНрдиреЗ рдкреНрд░рдпрд╛рд╕ рд╣реЛ рдЬрд╕рд▓реЗ SRP рдЙрд▓реНрд▓рдЩреНрдШрди рдЧрд░реНрдиреЗрдЫ, рди рдХрд┐ рдЙрд▓реНрдЯреЛред

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

рдпреЛ рд╣рд╛рдореНрд░реЛ рдорд╛рджрдХ рдкрджрд╛рд░реНрде рдПрдХреНрд▓реИ рдЫреЛрдбреНрдиреЗ рд╕рдордп рд╣реЛред рдЖрдлреНрдиреЛ рдЖрдБрд╕реБ рд╕реБрдХрд╛рдЙрдиреБрд╣реЛрд╕реН - рд╣рд╛рдореА рдкрдХреНрдХреИ рдПрдХ рджрд┐рди рдпрд╕рдорд╛ рдлрд░реНрдХрдиреЗрдЫреМрдВред рдЕрдм рдпрд╕ рд▓реЗрдЦрдмрд╛рдЯ рдЬреНрдЮрд╛рдирд▓рд╛рдИ рдФрдкрдЪрд╛рд░рд┐рдХ рдЧрд░реМрдВред

рдФрдкрдЪрд╛рд░рд┐рдХрддрд╛ 1. SRP рдХреЛ рдкрд░рд┐рднрд╛рд╖рд╛

  1. рддрддреНрд╡рд╣рд░реВ рдЕрд▓рдЧ рдЧрд░реНрдиреБрд╣реЛрд╕реН рддрд╛рдХрд┐ рддрд┐рдиреАрд╣рд░реВ рдкреНрд░рддреНрдпреЗрдХ рдПрдХ рдЪреАрдЬрдХреЛ рд▓рд╛рдЧрд┐ рдЬрд┐рдореНрдореЗрд╡рд╛рд░ рдЫрдиреНред
  2. рдЬрд┐рдореНрдореЗрд╡рд╛рд░реА рднрдиреЗрдХреЛ "рдкрд░рд┐рд╡рд░реНрддрдирдХреЛ рдХрд╛рд░рдг" рд╣реЛред рддреНрдпреЛ рд╣реЛ, рдкреНрд░рддреНрдпреЗрдХ рддрддреНрд╡рд╕рдБрдЧ рд╡реНрдпрд╛рдкрд╛рд░ рддрд░реНрдХрдХреЛ рд╕рдиреНрджрд░реНрднрдорд╛ рдкрд░рд┐рд╡рд░реНрддрдирдХреЛ рд▓рд╛рдЧрд┐ рдорд╛рддреНрд░ рдПрдХ рдХрд╛рд░рдг рдЫред
  3. рд╡реНрдпрд╛рдкрд╛рд░ рддрд░реНрдХрдорд╛ рд╕рдореНрднрд╛рд╡рд┐рдд рдкрд░рд┐рд╡рд░реНрддрдирд╣рд░реВред рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рд╣реБрдиреБрдкрд░реНрдЫред рд╕рд┐рдВрдХреНрд░реЛрдирд╕ рд░реВрдкрдорд╛ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрдиреЗ рддрддреНрд╡рд╣рд░реВ рдирдЬрд┐рдХреИ рд╣реБрдиреБрдкрд░реНрдЫред

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

рдореИрд▓реЗ рдПрд╕рдЖрд░рдкреА рдкреВрд░рд╛ рдЧрд░реНрдирдХрд╛ рд▓рд╛рдЧрд┐ рдкрд░реНрдпрд╛рдкреНрдд рдорд╛рдкрджрдгреНрдб рджреЗрдЦреЗрдХреЛ рдЫреИрдиред рддрд░ рддреНрдпрд╣рд╛рдБ рдЖрд╡рд╢реНрдпрдХ рд╕рд░реНрддрд╣рд░реВ рдЫрдиреН:

рез) рдЖрдлреИрд▓рд╛рдИ рд╕реЛрдзреНрдиреБрд╣реЛрд╕реН рдХрд┐ рдпреЛ рдХрдХреНрд╖рд╛/рд╡рд┐рдзрд┐/рдореЛрдбреНрдпреБрд▓/рд╕реЗрд╡рд╛рд▓реЗ рдХреЗ рдЧрд░реНрдЫред рддрдкрд╛рдИрдВрд▓реЗ рдпрд╕рд▓рд╛рдИ рд╕рд░рд▓ рдкрд░рд┐рднрд╛рд╖рд╛рдХреЛ рд╕рд╛рде рдЬрд╡рд╛рдл рджрд┐рдиреБрдкрд░реНрдЫред ( рдзрдиреНрдпрд╡рд╛рдж рдмреНрд░рд╛рдЗрдЯреЛрд░реА )

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

рдпрджреНрдпрдкрд┐, рдХрд╣рд┐рд▓реЗрдХрд╛рд╣реАрдБ рдпреЛ рдПрдХ рд╕рд░рд▓ рдкрд░рд┐рднрд╛рд╖рд╛ рдлреЗрд▓рд╛ рдкрд╛рд░реНрди рдзреЗрд░реИ рдЧрд╛рд╣реНрд░реЛ рдЫ

2) рдмрдЧ рдлрд┐рдХреНрд╕ рдЧрд░реНрди рд╡рд╛ рдирдпрд╛рдБ рд╕реБрд╡рд┐рдзрд╛ рдердкреНрджрд╛ рдлрд╛рдЗрд▓/рд╡рд░реНрдЧрд╣рд░реВрдХреЛ рдиреНрдпреВрдирддрдо рд╕рдВрдЦреНрдпрд╛рд▓рд╛рдИ рдЕрд╕рд░ рдЧрд░реНрдЫред рдЖрджрд░реНрд╢ - рдПрдХред

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

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

рдЕрд░реНрдХреЛ рдЙрджрд╛рд╣рд░рдг рдЕрдШрд┐рд▓реНрд▓реЛ рдЬрд╕реНрддреИ рдирдпрд╛рдБ UI рдирд┐рдпрдиреНрддреНрд░рдг рдердкреНрджреИ рдЫред рдпрджрд┐ рдпрд╕рд▓реЗ рддрдкрд╛рдЗрдБрд▓рд╛рдИ 10 рдлрд░рдХ рд╕рдВрд╕реНрдерд╛рд╣рд░реВ рд░ 15 рдлрд░рдХ рдХрдиреНрднрд░реНрдЯрд░рд╣рд░реВ рдердкреНрди рдмрд╛рдзреНрдп рдкрд╛рд░реНрдЫ рднрдиреЗ, рддрдкрд╛рдЗрдБ рдпрд╕рд▓рд╛рдИ рдзреЗрд░реИ рдЧрд░рд┐рд░рд╣рдиреБрднрдПрдХреЛ рдЬрд╕реНрддреЛ рджреЗрдЦрд┐рдиреНрдЫред

3) рдпрджрд┐ рдзреЗрд░реИ рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛рд╣рд░реВрд▓реЗ рддрдкрд╛рдИрдВрдХреЛ рдкрд░рд┐рдпреЛрдЬрдирд╛рдХрд╛ рд╡рд┐рднрд┐рдиреНрди рд╕реБрд╡рд┐рдзрд╛рд╣рд░реВрдорд╛ рдХрд╛рдо рдЧрд░рд┐рд░рд╣реЗрдХрд╛ рдЫрдиреН рднрдиреЗ, рдорд░реНрдЬ рджреНрд╡рдиреНрджреНрд╡рдХреЛ рд╕рдореНрднрд╛рд╡рдирд╛, рдЕрд░реНрдерд╛рддреН, рдПрдЙрдЯреИ рдлрд╛рдЗрд▓/рд╡рд░реНрдЧ рдПрдХреИ рд╕рдордпрдорд╛ рдзреЗрд░реИ рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛рд╣рд░реВрд▓реЗ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрдиреЗ рд╕рдореНрднрд╛рд╡рдирд╛ рдиреНрдпреВрди рдЫред

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

рдпрджрд┐, рдирдпрд╛рдБ рдЕрдкрд░реЗрд╢рди "рдЯреЗрдмрд▓ рдореБрдирд┐ рднреЛрдбрдХрд╛ рдЦрдиреНрдпрд╛рдЙ" рдердкреНрджрд╛, рддрдкрд╛рдИрдВрд▓реЗ рд▓рдЧрд░, рдкрд┐рдЙрдиреЗ рд░ рдЦрдиреНрдпрд╛рдЙрдиреЗ рдХрд╛рд░реНрдпрд▓рд╛рдИ рдЕрд╕рд░ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ, рддреНрдпрд╕рдкрдЫрд┐ рдЬрд┐рдореНрдореЗрд╡рд╛рд░реАрд╣рд░реВ рдмрд╛рдЩреНрдЧреЛ рд░реВрдкрдорд╛ рд╡рд┐рднрд╛рдЬрд┐рдд рдЧрд░рд┐рдПрдХреЛ рдЬрд╕реНрддреЛ рджреЗрдЦрд┐рдиреНрдЫред рдирд┐рд╕реНрд╕рдиреНрджреЗрд╣, рдпреЛ рд╕рдзреИрдВ рд╕рдореНрднрд╡ рдЫреИрди, рддрд░ рд╣рд╛рдореАрд▓реЗ рдпреЛ рд╕рдВрдЦреНрдпрд╛ рдШрдЯрд╛рдЙрдиреЗ рдкреНрд░рдпрд╛рд╕ рдЧрд░реНрдиреБрдкрд░реНрдЫред

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

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

рд╡рд┐рд╢реЗрд╖рддрд╛рд╣рд░реВ, рдирд┐рдпрдорд╣рд░реВ рд╡рд╛ рдПрд▓реНрдЧреЛрд░рд┐рджрдорд╣рд░реВ рдХрдореНрдкреНрдпрд╛рдХреНрдЯ рд░реВрдкрдорд╛ рд▓реЗрдЦрд┐рдПрдХрд╛ рдЫрдиреН, рдкреНрд░рддреНрдпреЗрдХ рдПрдХ рдард╛рдЙрдБрдорд╛, рд░ рдХреЛрдб рд╕реНрдкреЗрд╕рдорд╛ рдЭрдгреНрдбрд╛рд╣рд░реВрд╕рдБрдЧ рдЫрд░рд┐рдПрдХрд╛ рдЫреИрдирдиреНред

5) рдирд╛рдордХрд░рдг рд╕реНрдкрд╖реНрдЯ рдЫред

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

рд╣рд╛рдореНрд░реЛ рд╡рд░реНрдЧ рд╡рд╛ рд╡рд┐рдзрд┐ рдПрдЙрдЯрд╛ рдХреБрд░рд╛рдХреЛ рд▓рд╛рдЧрд┐ рдЬрд┐рдореНрдореЗрд╡рд╛рд░ рдЫ, рд░ рдЬрд┐рдореНрдореЗрд╡рд╛рд░реА рдпрд╕рдХреЛ рдирд╛рдордорд╛ рдкреНрд░рддрд┐рдмрд┐рдореНрдмрд┐рдд рд╣реБрдиреНрдЫ

AllManagersManagerService - рд╕рдореНрднрд╡рддрдГ рднрдЧрд╡рд╛рди рд╡рд░реНрдЧ
рд╕реНрдерд╛рдиреАрдп рднреБрдХреНрддрд╛рдиреА - рд╕рд╛рдпрдж рдЫреИрди

рдФрдкрдЪрд╛рд░рд┐рдХрддрд╛ 3. Occam-рдкрд╣рд┐рд▓реЛ рд╡рд┐рдХрд╛рд╕ рдкрджреНрдзрддрд┐ред

рдбрд┐рдЬрд╛рдЗрдирдХреЛ рд╕реБрд░реБрдорд╛, рдмрд╛рдБрджрд░ рдорд╛рдирд┐рд╕рд▓рд╛рдИ рдерд╛рд╣рд╛ рдЫреИрди рд░ рд╕рдорд╕реНрдпрд╛ рд╕рдорд╛рдзрд╛рди рд╣реБрдиреЗ рд╕рдмреИ рд╕реВрдХреНрд╖реНрдорддрд╛рд╣рд░реВ рдорд╣рд╕реБрд╕ рдЧрд░реНрджреИрди рд░ рдЧрд▓реНрддреА рдЧрд░реНрди рд╕рдХреНрдЫред рддрдкрд╛рдИрдВ рд╡рд┐рднрд┐рдиреНрди рддрд░рд┐рдХрд╛рдорд╛ рдЧрд▓реНрддреА рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ:

  • рд╡рд┐рднрд┐рдиреНрди рдЬрд┐рдореНрдореЗрд╡рд╛рд░реАрд╣рд░реВ рдорд░реНрдЬ рдЧрд░реЗрд░ рд╡рд╕реНрддреБрд╣рд░реВрд▓рд╛рдИ рдзреЗрд░реИ рдареВрд▓реЛ рдмрдирд╛рдЙрдиреБрд╣реЛрд╕реН
  • рдПрдЙрдЯреИ рдЬрд┐рдореНрдореЗрд╡рд╛рд░реАрд▓рд╛рдИ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░рдорд╛ рд╡рд┐рднрд╛рдЬрди рдЧрд░реЗрд░ рд░рд┐рдлреНрд░реЗрдорд┐рдЩ
  • рдЧрд▓рдд рд░реВрдкрдорд╛ рдЬрд┐рдореНрдореЗрд╡рд╛рд░реАрдХреЛ рд╕реАрдорд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЧрд░реНрдиреБрд╣реЛрд╕реН

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

рдпреЛ рдПрдХ рджрд┐рди рдХрд▓ рдЧрд░реНрдиреЗ рд╕рдордп рд╣реЛ

SRP рдХреЛ рджрд╛рдпрд░рд╛ OOP рд░ SOLID рдорд╛ рд╕реАрдорд┐рдд рдЫреИрдиред рдпреЛ рд╡рд┐рдзрд┐рд╣рд░реВ, рдХрд╛рд░реНрдпрд╣рд░реВ, рдХрдХреНрд╖рд╛рд╣рд░реВ, рдореЛрдбреНрдпреБрд▓рд╣рд░реВ, рдорд╛рдЗрдХреНрд░реЛрд╕реЗрд╡рд╛рд╣рд░реВ рд░ рд╕реЗрд╡рд╛рд╣рд░реВрдорд╛ рд▓рд╛рдЧреВ рд╣реБрдиреНрдЫред рдпреЛ "figax-figax-and-prod" рд░ "рд░рдХреЗрдЯ-рд╡рд┐рдЬреНрдЮрд╛рди" рд╡рд┐рдХрд╛рд╕ рджреБрд╡реИрдорд╛ рд▓рд╛рдЧреВ рд╣реБрдиреНрдЫ, рдЬрд╕рд▓реЗ рд╕рдВрд╕рд╛рд░рд▓рд╛рдИ рдЬрддрд╛рддрддреИ рд░рд╛рдореНрд░реЛ рдмрдирд╛рдЙрдБрдЫред рдпрджрд┐ рддрдкрд╛рдЗрдБ рдпрд╕рдХреЛ рдмрд╛рд░реЗрдорд╛ рд╕реЛрдЪреНрдиреБрд╣реБрдиреНрдЫ рднрдиреЗ, рдпреЛ рд▓рдЧрднрдЧ рд╕рдмреИ рдЗрдиреНрдЬрд┐рдирд┐рдпрд░рд┐рдЩрдХреЛ рдЖрдзрд╛рд░рднреВрдд рд╕рд┐рджреНрдзрд╛рдиреНрдд рд╣реЛред рдореЗрдХрд╛рдирд┐рдХрд▓ рдИрдиреНрдЬрд┐рдирд┐рдпрд░рд┐рдЩреН, рдирд┐рдпрдиреНрддреНрд░рдг рдкреНрд░рдгрд╛рд▓реАрд╣рд░реВ, рд░ рд╡рд╛рд╕реНрддрд╡рдорд╛ рд╕рдмреИ рдЬрдЯрд┐рд▓ рдкреНрд░рдгрд╛рд▓реАрд╣рд░реВ рдХрдореНрдкреЛрдиреЗрдиреНрдЯрд╣рд░реВрдмрд╛рдЯ рдмрдиреЗрдХрд╛ рд╣реБрдиреНрдЫрдиреН, рд░ "рдЕрдиреНрдбрд░рдлреНрд░реЗрдЧреНрдореЗрдиреНрдЯреЗрд╕рди" рд▓реЗ рдбрд┐рдЬрд╛рдЗрдирд░рд╣рд░реВрд▓рд╛рдИ рд▓рдЪрд┐рд▓реЛрдкрдирдмрд╛рдЯ рд╡рдЮреНрдЪрд┐рдд рдЧрд░реНрджрдЫ, "рдУрднрд░рдлреНрд░реЗрдЧреНрдореЗрдиреНрдЯреЗрд╕рди" рд▓реЗ рдбрд┐рдЬрд╛рдЗрдирд░рд╣рд░реВрд▓рд╛рдИ рджрдХреНрд╖рддрд╛рдмрд╛рдЯ рд╡рдЮреНрдЪрд┐рдд рдЧрд░реНрджрдЫ, рд░ рдЧрд▓рдд рд╕реАрдорд╛рд╣рд░реВрд▓реЗ рдЙрдиреАрд╣рд░реВрд▓рд╛рдИ рдХрд╛рд░рдг рд░ рдорд╛рдирд╕рд┐рдХ рд╢рд╛рдиреНрддрд┐рдмрд╛рдЯ рд╡рдЮреНрдЪрд┐рдд рдЧрд░реНрджрдЫред

рдПрдХрд▓ рдЙрддреНрддрд░рджрд╛рдпрд┐рддреНрд╡ рд╕рд┐рджреНрдзрд╛рдиреНрддред рдЬрд╕реНрддреЛ рджреЗрдЦрд┐рдиреНрдЫ рдЬрд╕реНрддреЛ рд╕рд░рд▓ рдЫреИрди

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

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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдердкреНрди