рдкрд╛рдпрдерди рдбреЗрд╡рд▓рдкрд░ рдХреА рдЖрдВрдЦреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рд╛рдл рд╡рд╛рд╕реНрддреБрдХрд▓рд╛

рдирдорд╕реНрдХрд╛рд░! рдореЗрд░рд╛ рдирд╛рдо рдпреВрдЬреАрди рд╣реИ, рдореИрдВ рдкрд╛рдпрдерди рдбреЗрд╡рд▓рдкрд░ рд╣реВрдВред рдкрд┐рдЫрд▓реЗ рдбреЗрдврд╝ рд╕рд╛рд▓ рдореЗрдВ, рд╣рдорд╛рд░реА рдЯреАрдо рдиреЗ рдХреНрд▓рд╛рд╕рд┐рдХ рдПрдорд╡реАрд╕реА рдореЙрдбрд▓ рд╕реЗ рджреВрд░ рдЬрд╛рдХрд░, рдХреНрд▓реАрди рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдХреЛ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛ред рдФрд░ рдЖрдЬ рдореИрдВ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реВрдВрдЧрд╛ рдХрд┐ рд╣рдо рдЗрд╕ рдкрд░ рдХреИрд╕реЗ рдЖрдП, рдпрд╣ рд╣рдореЗрдВ рдХреНрдпрд╛ рджреЗрддрд╛ рд╣реИ, рдФрд░ рдЕрдиреНрдп рдкреАрдПрд▓ рд╕реЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рд╕реАрдзрд╛ рд╣рд╕реНрддрд╛рдВрддрд░рдг рд╣рдореЗрд╢рд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди рдХреНрдпреЛрдВ рдирд╣реАрдВ рд╣реИред



рдкрд╛рдпрдерди рдЕрдм рд╕рд╛рдд рд╡рд░реНрд╖реЛрдВ рд╕реЗ рдореЗрд░рд╛ рдкреНрд░рд╛рдердорд┐рдХ рд╡рд┐рдХрд╛рд╕ рдЙрдкрдХрд░рдг рд╣реИред рдЬрдм рд╡реЗ рдореБрдЭрд╕реЗ рдкреВрдЫрддреЗ рд╣реИрдВ рдХрд┐ рдореБрдЭреЗ рдЙрдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛ рдкрд╕рдВрдж рд╣реИ, рддреЛ рдореИрдВ рдЬрд╡рд╛рдм рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдЙрдирдХреА рдЙрддреНрдХреГрд╖реНрдЯ рдкрдардиреАрдпрддрд╛ рд╣реИ ред рдкрд╣рд▓реЗ рдкрд░рд┐рдЪрд┐рдд рдиреЗ "рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдП рдХрд▓реЗрдХреНрдЯрд┐рд╡ рдорд╛рдЗрдВрдб" рдкреБрд╕реНрддрдХ рдХреЛ рдкрдврд╝рдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛ ред рдореБрдЭреЗ рдЗрд╕рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдореЗрдВ рджрд┐рд▓рдЪрд╕реНрдкреА рдереА, рд▓реЗрдХрд┐рди рд╕рднреА рдЙрджрд╛рд╣рд░рдг рдПрдХ рдРрд╕реА рднрд╛рд╖рд╛ рдореЗрдВ рдереЗ рдЬреЛ рдЕрднреА рддрдХ рдореЗрд░реЗ рд▓рд┐рдП рдкрд░рд┐рдЪрд┐рдд рдирд╣реАрдВ рдереЗред рдпрд╣ рд╕рд╛рдорд╛рдиреНрдп рдирд╣реАрдВ рдерд╛ (рдорд╢реАрди рд╕реАрдЦрдиреЗ рдореЗрдВ рдкрд╛рдпрдерди рдЕрднреА рддрдХ рдореБрдЦреНрдпрдзрд╛рд░рд╛ рдореЗрдВ рдирд╣реАрдВ рдерд╛), рд▓рд┐рд╕реНрдЯрд┐рдВрдЧ рдЕрдХреНрд╕рд░ рдЫрджреНрдо рдХреЛрдб рдпрд╛ рдЖрд░реЗрдЦреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓рд┐рдЦреА рдЬрд╛рддреА рдереАред рд▓реЗрдХрд┐рди рднрд╛рд╖рд╛ рдХреЗ рддреНрд╡рд░рд┐рдд рдкрд░рд┐рдЪрдп рдХреЗ рдмрд╛рдж, рдореИрдВрдиреЗ рдЗрд╕рдХреА рд╕реБрдЧрдорддрд╛ рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХреА: рд╕рдм рдХреБрдЫ рдЖрд╕рд╛рди рдФрд░ рд╕реНрдкрд╖реНрдЯ рдерд╛, рдХреБрдЫ рднреА рдЕрддрд┐ рд╕реБрдВрджрд░ рдФрд░ рд╡рд┐рдЪрд▓рд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдирд╣реАрдВ, рдХреЗрд╡рд▓ рд╡рд░реНрдгрд┐рдд рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдмрд╣реБрдд рд╕рд╛рд░редред рдЗрд╕рдХрд╛ рдореБрдЦреНрдп рдЧреБрдг рднрд╛рд╖рд╛ рдХрд╛ рдЕрджреНрднреБрдд рдбрд┐рдЬрд╛рдЗрди рд╣реИ, рдмрд╣реБрдд рд╕рд╣рдЬ рдЬреНрдЮрд╛рди рдпреБрдХреНрдд рдЪреАрдиреАред рд╕рдореБрджрд╛рдп рдореЗрдВ рдЗрд╕ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЛ рд╣рдореЗрд╢рд╛ рд╕рд░рд╛рд╣рд╛ рдЧрдпрд╛ рд╣реИред " рдЖрдпрд╛рдд рдХрд░реЗрдВ " рдХреНрдпрд╛ рд╣реИ , рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд░реВрдк рд╕реЗ рдХрд┐рд╕реА рднреА рдкрд╛рдареНрдпрдкреБрд╕реНрддрдХ рдХреЗ рдкрд╣рд▓реЗ рдкрдиреНрдиреЛрдВ рдкрд░ рдореМрдЬреВрдж рд╣реИ: рдпрд╣ рдПрдХ рдЕрджреГрд╢реНрдп рдУрд╡рд░рд╕рд┐рдпрд░ рдХреА рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ, рд▓рдЧрд╛рддрд╛рд░ рдЕрдкрдиреЗ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рддрд╛ рд╣реИред рдордВрдЪреЛрдВ рдкрд░, рд▓рд┐рд╕реНрдЯрд┐рдВрдЧ рдореЗрдВ рд╡реЗрд░рд┐рдПрдмрд▓ рдирд╛рдо рдореЗрдВ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ CamelCase рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдПрдХ рд╢реБрд░реБрдЖрдд рдХреЗ рд▓рд╛рдпрдХ рдерд╛ , рдЗрд╕рд▓рд┐рдП рддреБрд░рдВрдд рдЪрд░реНрдЪрд╛ рдХреЛрдг PEP8 рдХреЗ рд╕рдВрджрд░реНрдн рдХреЗ рд╕рд╛рде рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХреЛрдб рдХреЗ рдореБрд╣рд╛рд╡рд░реЗ рдХреА рдУрд░ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рд╣реЛ рдЧрдпрд╛ред
рд▓рд╛рд▓рд┐рддреНрдп рдХреА рдЦреЛрдЬ рдФрд░ рднрд╛рд╖рд╛ рдХреА рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдЧрддрд┐рд╢реАрд▓рддрд╛ рдиреЗ рдХрдИ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд░рдордгреАрдп рдПрдкреАрдЖрдИ рдмрдирд╛рдпрд╛ рд╣реИред 

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

рдмреБрд░рд╛ рдХреЛрдб


рдЦрд░рд╛рдм рдХреЛрдб рд╡рд╣ рдирд╣реАрдВ рд╣реИ рдЬреЛ PEP8 рдХрд╛ рдкрд╛рд▓рди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдпрд╛ рд╕рд╛рдЗрдХреНрд▓реЛрдореИрдЯрд┐рдХ рдЬрдЯрд┐рд▓рддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рдкреВрд░рд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдЦрд░рд╛рдм рдХреЛрдб, рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЕрдирд┐рдпрдВрддреНрд░рд┐рдд рдирд┐рд░реНрднрд░рддрд╛рдПрдВ рд╣реИрдВ , рдЬреЛ рдЗрд╕ рддрдереНрдп рдХреА рдУрд░ рд▓реЗ рдЬрд╛рддреА рд╣реИрдВ рдХрд┐ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рдПрдХ рд╕реНрдерд╛рди рдкрд░ рдмрджрд▓рд╛рд╡ рд╕реЗ рдЕрдиреНрдп рднрд╛рдЧреЛрдВ рдореЗрдВ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рдкрд░рд┐рд╡рд░реНрддрди рд╣реЛрддреЗ рд╣реИрдВред рд╣рдо рдХреЛрдб рдкрд░ рдирд┐рдпрдВрддреНрд░рдг рдЦреЛ рд░рд╣реЗ рд╣реИрдВ, рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд╡рд┐рд╕реНрддреГрдд рдЕрдзреНрдпрдпрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдРрд╕рд╛ рдХреЛрдб рдЕрдкрдирд╛ рд▓рдЪреАрд▓рд╛рдкрди рдЦреЛ рджреЗрддрд╛ рд╣реИ рдФрд░, рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рдерд╛, рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИ, рдЬрдмрдХрд┐ рдХрд╛рд░реНрдпрдХреНрд░рдо рд╕реНрд╡рдпрдВ "рдирд╛рдЬреБрдХ" рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред 

рд╕рд╛рдл рд╡рд╛рд╕реНрддреБрдХрд▓рд╛


рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдЪреБрдиреЗ рд╣реБрдП рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреЛ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рд╕реЗ рдмрдЪрдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рд╣рдо рдЗрд╕ рдореБрдарднреЗрдбрд╝ рдореЗрдВ рдкрд╣рд▓реЗ рдирд╣реАрдВ рд╣реИрдВ: рдЬрд╛рд╡рд╛ рд╕рдореБрджрд╛рдп рдореЗрдВ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдПрдХ рдЗрд╖реНрдЯрддрдо рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдбрд┐рдЬрд╝рд╛рдЗрди рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд░реНрдЪрд╛ рд╣реБрдИ рд╣реИред

2000 рдореЗрдВ рд╡рд╛рдкрд╕, рд░реЙрдмрд░реНрдЯ рдорд╛рд░реНрдЯрд┐рди (рдЬрд┐рд╕реЗ рдЕрдВрдХрд▓ рдмреЙрдм рдХреЗ рдирд╛рдо рд╕реЗ рднреА рдЬрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ) рдиреЗ рдЕрдкрдиреЗ рд▓реЗрдЦ " рдбрд┐рдЬрд╝рд╛рдЗрди рдПрдВрдб рдбрд┐рдЬрд╝рд╛рдЗрди рдкреНрд░рд┐рдВрд╕рд┐рдкрд▓реНрд╕ " рдореЗрдВ рдПрдХ рд╕рд╛рде рдкрд╛рдВрдЪ рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдХреЛ рдпрд╛рджрдЧрд╛рд░ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╡рд┐рд╡рд░рдг SOLID рдХреЗ рддрд╣рдд рдбрд┐рдЬрд╛рдЗрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рд╛рдпрд╛редред рдпреЗ рд╕рд┐рджреНрдзрд╛рдВрдд рд╕рдореБрджрд╛рдп рджреНрд╡рд╛рд░рд╛ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдП рдЧрдП рд╣реИрдВ рдФрд░ рдЬрд╛рд╡рд╛ рдкрд╛рд░рд┐рд╕реНрдерд┐рддрд┐рдХреА рддрдВрддреНрд░ рд╕реЗ рдмрд╣реБрдд рдЖрдЧреЗ рдирд┐рдХрд▓ рдЧрдП рд╣реИрдВред рдлрд┐рд░ рднреА, рд╡реЗ рдкреНрд░рдХреГрддрд┐ рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░ рд╣реИрдВред рдмрд╛рдж рдореЗрдВ SOLID рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдбрд┐рдЬрд╝рд╛рдЗрди рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреЗ рдХрдИ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдП рдЧрдПред рдЗрдирдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ: "рд╣реЗрдХреНрд╕рд╛рдЧреЛрдирд▓ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░", "рдкреЛрд░реНрдЯреНрд╕ рдФрд░ рдПрдбреЗрдкреНрдЯрд░", "рдмрд▓реНрдмрд╕ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░" рдФрд░ рдЗрди рд╕рднреА рдореЗрдВ рдмрд╣реБрдд рдХреБрдЫ рд╣реИ, рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╡рд┐рд╡рд░рдгред рдФрд░ 2012 рдореЗрдВ, рдЙрд╕реА рд░реЙрдмрд░реНрдЯ рдорд╛рд░реНрдЯрд┐рди рджреНрд╡рд╛рд░рд╛ рдПрдХ рд▓реЗрдЦ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬрд╣рд╛рдВ рдЙрдиреНрд╣реЛрдВрдиреЗ " рдХреНрд▓реАрди рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ " рдирд╛рдордХ рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рд╕рдВрд╕реНрдХрд░рдг рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХрд┐рдпрд╛ рдерд╛ ред



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

  • рдЖрдВрддрд░рд┐рдХ рдкрд░рдд рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдирд┐рдпрдо - рдпрд╣ рдЖрдВрддрд░рд┐рдХ рдкрд░рдд рд╣реИ рдЬреЛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдпрд╣ рдмрд╛рд╣рд░реА рджреБрдирд┐рдпрд╛ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░реЗрдЧрд╛;
  • рдирд┐рд░реНрднрд░рддрд╛ рдирд┐рдпрдо - рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдЖрдВрддрд░рд┐рдХ рдкрд░рдд рд╕реЗ рдмрд╛рд╣рд░реА рддрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЕрдВрддрд┐рдо рдирд┐рдпрдо рдкрд╛рдпрдерди рджреБрдирд┐рдпрд╛ рдореЗрдВ рдХрд╛рдлреА atypical рд╣реИред рдХрд┐рд╕реА рднреА рдЬрдЯрд┐рд▓ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рддрд░реНрдХ рдкрд░рд┐рджреГрд╢реНрдп рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд╣рдореЗрд╢рд╛ рдмрд╛рд╣рд░реА рд╕реЗрд╡рд╛рдУрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдбреЗрдЯрд╛рдмреЗрд╕) рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕ рдирд┐рд░реНрднрд░рддрд╛ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рд╡реНрдпрд╛рдкрд╛рд░ рддрд░реНрдХ рдкрд░рдд рдХреЛ рд╕реНрд╡рдпрдВ рдЙрд╕ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП рдЬрд┐рд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рд╡рд╣ рдмрд╛рд╣рд░реА рджреБрдирд┐рдпрд╛ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░реЗрдЧрд╛ред рдЗрд╕ рддрдХрдиреАрдХ рдХреЛ " рдирд┐рд░реНрднрд░рддрд╛ рд╡реНрдпреБрддреНрдХреНрд░рдо " (SOLID рдореЗрдВ рдЕрдХреНрд╖рд░ D) рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рд╕реНрдереИрддрд┐рдХ рдЯрд╛рдЗрдкрд┐рдВрдЧ рд╡рд╛рд▓реА рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд░реЙрдмрд░реНрдЯ рдорд╛рд░реНрдЯрд┐рди рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдпрд╣ рдореБрдЦреНрдп рд▓рд╛рдн рд╣реИ рдЬреЛ рдУрдУрдкреА рдХреЗ рд╕рд╛рде рдЖрдпрд╛ рдерд╛ ред

рдпреЗ рддреАрди рдирд┐рдпрдо рд╕реНрд╡рдЪреНрдЫ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХрд╛ рд╕рд╛рд░ рд╣реИрдВ:

  • рд╕реАрдорд╛ рдкрд╛рд░ рдХрд░рдиреЗ рдХрд╛ рдирд┐рдпрдо;
  • рдирд┐рд░реНрднрд░рддрд╛ рдХрд╛ рдирд┐рдпрдо;
  • рдЖрдВрддрд░рд┐рдХ рдкрд░рдд рдХрд╛ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдирд┐рдпрдоред

рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд▓рд╛рднреЛрдВ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:

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

, . . , . ┬л Clean Architecture┬╗.

Python


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

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

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

рдЕрдзрд┐рдХ рдЧрдВрднреАрд░ рд╕рдорд╕реНрдпрд╛ рд╣реИ, рдпрджрд┐ рдЖрдк рд▓реЗрдЦ рдирд╣реАрдВ рдкрдврд╝рддреЗ рд╣реИрдВ рдФрд░ рддреБрд░рдВрдд рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рд╕рдордЭрдирд╛ рдХрд╛рдлреА рдореБрд╢реНрдХрд┐рд▓ рд╣реИред рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рддрд░реНрдХ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:

from rentomatic.response_objects import response_objects as res

class RoomListUseCase(object):
   def __init__(self, repo):
       self.repo = repo
   def execute(self, request_object):
       if not request_object:
           return res.ResponseFailure.build_from_invalid_request_object(
               request_object)
       try:
           rooms = self.repo.list(filters=request_object.filters)
           return res.ResponseSuccess(rooms)
       except Exception as exc:
           return res.ResponseFailure.build_system_error(
               "{}: {}".format(exc.__class__.__name__, "{}".format(exc)))

RoomListUseCase рд╡рд░реНрдЧ рдЬреЛ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рддрд░реНрдХ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ (рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рддрд░реНрдХ рдХреЗ рд╕рдорд╛рди рдирд╣реАрдВ, рд╕рд╣реА?) рд░реЗрдкреЛ рдСрдмреНрдЬреЗрдХреНрдЯ рджреНрд╡рд╛рд░рд╛ рдЖрд░рдореНрдн рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ ред рд▓реЗрдХрд┐рди рд░реЗрдкреЛ рдХреНрдпрд╛ рд╣реИ ? рдмреЗрд╢рдХ, рд╕рдВрджрд░реНрдн рд╕реЗ, рд╣рдо рд╕рдордЭ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд░реЗрдкреЛ рдбреЗрдЯрд╛ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ, рдЕрдЧрд░ рд╣рдо рд░реВрдорд▓рд┐рд╕реНрдЯрдпреВрд╕реАрдХреЗрдЬрд╝ рдХреЗ рд╢рд░реАрд░ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рд╕рдордЭрддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕рдХреА рдПрдХ рд╕реВрдЪреА рд╡рд┐рдзрд┐ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП, рдЬрд┐рд╕рдХрд╛ рдЗрдирдкреБрдЯ рдлрд╝рд┐рд▓реНрдЯрд░ рдХреА рдПрдХ рд╕реВрдЪреА рд╣реИ, рдЬреЛ рдЖрдЙрдЯрдкреБрдЯ рдкрд░ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ, рдЖрдкрдХреЛ рджреЗрдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ ResponseSuccess рдореЗрдВред рдФрд░ рдпрджрд┐ рдкрд░рд┐рджреГрд╢реНрдп рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реИ, рддреЛ рдбреЗрдЯрд╛ рд╕реНрд░реЛрдд рддрдХ рдХрдИ рдкрд╣реБрдВрдЪ рдХреЗ рд╕рд╛рде? рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд░реЗрдкреЛ рдХреНрдпрд╛ рд╣реИ, рдЖрдк рдХреЗрд╡рд▓ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рд╡рд╣ рдХрд╣рд╛рдБ рд╕реНрдерд┐рдд рд╣реИ? рдпрд╣ рдПрдХ рдЕрд▓рдЧ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рд╕реНрдерд┐рдд рд╣реИ, рдЬреЛ рдХрд┐ рд░реВрдорд▓рд┐рд╕реНрдЯрдпреВрд╕реЗрдХреИрд╕реЗ рд╕реЗ рдЬреБрдбрд╝рд╛ рдирд╣реАрдВ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ, рдЖрдкрдХреЛ рдКрдкрд░реА рд╕реНрддрд░ (рдврд╛рдВрдЪреЗ рдХреЗ рд╕реНрддрд░) рддрдХ рдЬрд╛рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ рдФрд░ рджреЗрдЦреЗрдВ рдХрд┐ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рддреЗ рд╕рдордп рдХрдХреНрд╖рд╛ рдХреЗ рдЗрдирдкреБрдЯ рдХреЛ рдХреНрдпрд╛ рдЦрд┐рд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

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

repo RoomListUseCase, execute тАФ . - , , . - . , , , repo .

рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдЙрд╕ рд╕рдордп рдореИрдВрдиреЗ рдПрдХ рдирдП рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдХреНрд▓реАрди рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреЛ рдЫреЛрдбрд╝ рджрд┐рдпрд╛, рдлрд┐рд░ рд╕реЗ рдХреНрд▓рд╛рд╕рд┐рдХ рдПрдорд╡реАрд╕реА рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ред рд▓реЗрдХрд┐рди, рд╢рдВрдХреБ рдХреЗ рдЕрдЧрд▓реЗ рдмреИрдЪ рдХреЛ рднрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╡рд╣ рдПрдХ рд╕рд╛рд▓ рдмрд╛рдж рдЗрд╕ рд╡рд┐рдЪрд╛рд░ рдкрд░ рд▓реМрдЯ рдЖрдпрд╛, рдЬрдм, рдЖрдЦрд┐рд░рдХрд╛рд░, рд╣рдордиреЗ рдкрд╛рдпрдерди 3.5+ рдореЗрдВ рд╕реЗрд╡рд╛рдПрдВ рд╢реБрд░реВ рдХреАрдВред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ, рд╡рд╣ рдкреНрд░рдХрд╛рд░ рдПрдиреЛрдЯреЗрд╢рди рдФрд░ рдбреЗрдЯрд╛ рдХрдХреНрд╖рд╛рдПрдВ рд▓рд╛рдпрд╛: рджреЛ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╡рд┐рд╡рд░рдг рдЙрдкрдХрд░рдгред рдЙрдирдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдореИрдВрдиреЗ рд╕реЗрд╡рд╛ рдХреЗ рдПрдХ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХреЛ рдЫреЛрдбрд╝ рджрд┐рдпрд╛, рдФрд░ рдкрд░рд┐рдгрд╛рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдмреЗрд╣рддрд░ рдерд╛: рдкрд░рддреЗрдВ рдмрд┐рдЦрд░рдирд╛ рдмрдВрдж рд╣реЛ рдЧрдИрдВ, рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рдЕрднреА рднреА рдмрд╣реБрдд рд╕рд╛рд░реЗ рдХреЛрдб рдереЗ, рдЦрд╛рд╕рдХрд░ рдЬрдм рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рд╕рд╛рде рдПрдХреАрдХреГрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рд▓реЗрдХрд┐рди рдпрд╣ рдЫреЛрдЯреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдерд╛ред рдзреАрд░реЗ-рдзреАрд░реЗ, рд░реВрдкрд░реЗрдЦрд╛рдПрдВ рджрд┐рдЦрд╛рдИ рджреЗрдиреЗ рд▓рдЧреАрдВ рдХрд┐ рдЯрд╛рдЗрдк рдПрдиреЛрдЯреЗрд╢рди рдХреЗ рдЕрдзрд┐рдХрддрдо рдЙрдкрдпреЛрдЧ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛: рдПрдкрд┐рд╕реНрдЯрд╛рд░ (рдЕрдм рд╕реНрдЯрд╛рд░реНрд▓реЗрдЯ), рдореЛрд▓реЗрдиреНрдЯрдлреНрд░реИрдорд╡рд░реНрдХред рдкрд╛рдЗрдбреЗрдЯрд┐рдХ / рдлрд╛рд╕реНрдЯрдПрдкреАрдЖрдИ рдмрдВрдбрд▓ рдЕрдм рдЖрдо рд╣реИ, рдФрд░ рдЗрд╕ рддрд░рд╣ рдХреЗ рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рд╕рд╛рде рдПрдХреАрдХрд░рдг рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реЛ рдЧрдпрд╛ рд╣реИред рдпрд╣ рд╡рд╣реА рд╣реИ рдЬреЛ restomatic / services.py рдХреЗ рдЙрдкрд░реЛрдХреНрдд рдЙрджрд╛рд╣рд░рдг рдХреА рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛:

from typing import Optional, List
from pydantic import BaseModel

class Room(BaseModel):
   code: str
   size: int
   price: int
   latitude: float
   longitude: float

class RoomFilter(BaseModel):
   code: Optional[str] = None
   price_min: Optional[int] = None
   price_max: Optional[int] = None

class RoomStorage:
   def get_rooms(self, filters: RoomFilter) -> List[Room]: ...

class RoomListUseCase:
   def __init__(self, repo: RoomStorage):
       self.repo = repo
   def show_rooms(self, filters: RoomFilter) -> List[Room]:
       rooms = self.repo.get_rooms(filters=filters)
       return rooms

RoomListUseCase - рдПрдХ рд╡рд░реНрдЧ рдЬреЛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд╡реНрдпрд╛рдкрд╛рд░ рддрд░реНрдХ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред рдЖрдкрдХреЛ рдЗрд╕ рддрдереНрдп рдкрд░ рдзреНрдпрд╛рди рдирд╣реАрдВ рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рд╢реЛ-рд░реВрдо рд╡рд┐рдзрд┐ рдЬреЛ рд╕рдм рдХрд░рддреА рд╣реИ рд╡рд╣ рд░реВрдорд╕реНрдЯреЛрд░реАрдЬ рдХреЗ рд▓рд┐рдП рд╣реИ (рдореИрдВ рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде рдирд╣реАрдВ рдЖрдпрд╛ рдерд╛)ред рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЬреАрд╡рди рдореЗрдВ, рд╡рд┐рдЬреНрдЮрд╛рдкрди рдЖрджрд┐ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╕реВрдЪреА рдХреА рд░реИрдВрдХрд┐рдВрдЧ, рдЫреВрдЯ рдХреА рдЧрдгрдирд╛ рднреА рд╣реЛ рд╕рдХрддреА рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореЙрдбреНрдпреВрд▓ рдЖрддреНрдордирд┐рд░реНрднрд░ рд╣реИред рдпрджрд┐ рд╣рдо рдХрд┐рд╕реА рдЕрдиреНрдп рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдЗрд╕ рдкрд░рд┐рджреГрд╢реНрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ RoomStorage рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЬреЛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рд╡рд╣ рдореЙрдбреНрдпреВрд▓ рд╕реЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИред рдкрд┐рдЫрд▓реЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╡рд┐рдкрд░реАрдд, рдРрд╕реА рдкрд░рдд рдЖрддреНрдордирд┐рд░реНрднрд░ рд╣реИ , рдФрд░ рдЗрд╕реЗ рдмрджрд▓рддреЗ рд╕рдордп рдкреВрд░реЗ рд╕рдВрджрд░реНрдн рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрдирд╛ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИред рдЧреИрд░-рдкреНрд░рдгрд╛рд▓реАрдЧрдд рдирд┐рд░реНрднрд░рддрд╛ рд╕реЗ рдХреЗрд╡рд▓ рдкрд╛рдЗрдбреЗрдЯрд┐рдХ, рдХреНрдпреЛрдВ, рдпрд╣ рдврд╛рдВрдЪреЗ рдХреЗ рдкреНрд▓рдЧ-рдЗрди рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рдХреЛрдИ рдирд┐рд░реНрднрд░рддрд╛ рдирд╣реАрдВ, рдХреЛрдб рдкрдардиреАрдпрддрд╛ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдФрд░ рддрд░реАрдХрд╛, рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рдВрджрд░реНрдн рдирд╣реАрдВ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдПрдХ рдиреМрд╕рд┐рдЦрд┐рдпрд╛ рдбреЗрд╡рд▓рдкрд░ рднреА рд╕рдордЭ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдореЙрдбреНрдпреВрд▓ рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реИред

рдПрдХ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рддрд░реНрдХ рдкрд░рд┐рджреГрд╢реНрдп рдХреЛ рдПрдХ рд╡рд░реНрдЧ рд╣реЛрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдиреАрдЪреЗ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдорд╛рди рдкрд░рд┐рджреГрд╢реНрдп рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ:

def rool_list_use_case(filters: RoomFilter, repo: RoomStorage) -> List[Room]:
   rooms = repo.get_rooms(filters=filters)
   return rooms


рдФрд░ рдпрд╣рд╛рдБ рдврд╛рдВрдЪреЗ рдХреЗ рд▓рд┐рдП рдХрдиреЗрдХреНрд╢рди рд╣реИ:

from typing import List
from fastapi import FastAPI, Depends
from rentomatic import services, adapters
app = FastAPI()

def get_use_case() -> services.RoomListUseCase:
   return services.RoomListUseCase(adapters.MemoryStorage())

@app.post("/rooms", response_model=List[services.Room])
def rooms(filters: services.RoomFilter, use_case=Depends(get_use_case)):
   return use_case.show_rooms(filters)

Get_use_case рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, FastAPI рдирд┐рд░реНрднрд░рддрд╛ рдЗрдВрдЬреЗрдХреНрд╢рди рдкреИрдЯрд░реНрди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ ред рд╣рдореЗрдВ рдбреЗрдЯрд╛ рдХреНрд░рдорд╛рдВрдХрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рд╕рднреА рдХрд╛рдо рдлрд╛рд╕реНрдЯреИрдкреА рджреНрд╡рд╛рд░рд╛ рдкрд╛рдЗрдбреЗрдЯрд┐рдХ рдХреЗ рд╕рд╛рде рдорд┐рд▓рдХрд░ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдбреЗрдЯрд╛ рд╣рдореЗрд╢рд╛ рд░реЗрд╕реНрддрд░рд╛рдВ рдореЗрдВ рд▓рд╛рдЗрд╡ рдкреНрд░рд╕рд╛рд░рдг рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рддрд░реНрдХ рдкреНрд░рд╛рд░реВрдк рдирд╣реАрдВ рд╣реИрдВ <рдФрд░, рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, рд╡реНрдпрд╛рдкрд╛рд░ рддрд░реНрдХ рдХреЛ рдирд╣реАрдВ рдкрддрд╛ рд╣реИ рдХрд┐ рдбреЗрдЯрд╛ рдХрд╣рд╛рдВ рдЖрдпрд╛ рдерд╛ - рд╕реНрд▓реИрд╢, рдЕрдиреБрд░реЛрдз рд╢рд░реАрд░, рдХреБрдХреАрдЬрд╝, рдЖрджрд┐ рдХреЗ рд╕рд╛рде ред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдХрдХреНрд╖ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╢рд░реАрд░ рдореЗрдВ рдЗрдирдкреБрдЯ рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рдбреЗрдЯрд╛ рдХрд╛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдкрд╛рдВрддрд░рдг рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдЕрдЧрд░ рд╣рдо рдПрдкреАрдЖрдИ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдРрд╕рд╛ рдЖрд╕рд╛рди рдкреНрд░реЙрдХреНрд╕реА рдлрд╝рдВрдХреНрд╢рди рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред 

, , , RoomStorage. , 15 , , , .

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

  • рдмреЙрд░реНрдбрд░ рдХреНрд░реЙрд╕рд┐рдВрдЧ рд░реВрд▓ : рдкрд╛рдЗрдбреЗрдЯрд┐рдХ рдореЙрдбрд▓, рдЬреЛ рдореВрд▓ рд░реВрдк рд╕реЗ рдбреАрдЯреАрдУ, рдХреНрд░реЙрд╕ рдмреЙрд░реНрдбрд░ ;
  • рдирд┐рд░реНрднрд░рддрд╛ рдирд┐рдпрдо : рд╡реНрдпрд╛рдкрд╛рд░ рддрд░реНрдХ рдкрд░рдд рдЕрдиреНрдп рдкрд░рддреЛрдВ рд╕реЗ рд╕реНрд╡рддрдВрддреНрд░ рд╣реИ;
  • рдЖрдВрддрд░рд┐рдХ рдкрд░рдд рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдирд┐рдпрдо : рдпрд╣ рд╡реНрдпрд╛рдкрд╛рд░ рддрд░реНрдХ рдкрд░рдд рд╣реИ рдЬреЛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ (рд░реВрдорд╕реНрдЯреЛрд░реАрдЬ) рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╡реНрдпрд╛рдкрд╛рд░ рддрд░реНрдХ рдмрд╛рд╣рд░реА рджреБрдирд┐рдпрд╛ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░рддрд╛ рд╣реИред

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

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

All Articles