рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЕрдЧрд░ рдХреЛрдб рддреБрдЪреНрдЫ рд╣реИ, рддреЛ рднреА рдЖрдкрдХреЛ рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПредрдХреБрдЫ рджрд┐рдиреЛрдВ рдкрд╣рд▓реЗ, рд░реЙрдмрд░реНрдЯ рдорд╛рд░реНрдЯрд┐рди рдиреЗ
"рдЯреАрдбреАрдбреА рдХреА рдкреНрд░рдЧрддрд┐" рдирд╛рдордХ рдПрдХ рдкреЛрд╕реНрдЯ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХреА (
рдпрд╣рд╛рдБ рдЕрдиреБрд╡рд╛рдж -
рдЕрдиреБрд╡рд╛рджрдХ рдХреЗ рд▓рд┐рдП рдЯрд┐рдкреНрдкрдгреА ) рдЬрд╣рд╛рдВ рдЙрдиреНрд╣реЛрдВрдиреЗ рдХрд╣рд╛ рдХрд┐ рдЙрдиреНрд╣реЛрдВрдиреЗ
рдмрд┐рд▓реНрдХреБрд▓ рд╕рднреА рдХреЛрдб рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рдХрд┐рдпрд╛ред рдЕрд╕рд╛рдзрд╛рд░рдг рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЗ рдмреАрдЪ рдЬрдм рдпрд╣ TDD рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд▓рд╛рдпрдХ рдирд╣реАрдВ рд╣реИ, рдЕрдВрдХрд▓ рдмреЙрдм рдиреЗ GUI рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ, рдФрд░ рдореИрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ рдмрдпрд╛рдиреЛрдВ рдореЗрдВ рдмрд┐рдВрджреБ рдХреЛ рджреЗрдЦрддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдЕрдкрд╡рд╛рджреЛрдВ рдХреЗ рдмреАрдЪ, рдореЗрд░реА рд░рд╛рдп рдореЗрдВ,
рдЕрддрд╛рд░реНрдХрд┐рдХ рд╣реИ ред
рд░реЙрдмрд░реНрдЯ рдорд╛рд░реНрдЯрд┐рди рдХрд╛ рджрд╛рд╡рд╛ рд╣реИ рдХрд┐ рд╡рд╣ рдкрд░реАрдХреНрд╖рдг рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╡рд┐рдХрд╕рд┐рдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ:
- рдЧреЗрдЯрд░реНрд╕ рдФрд░ рд╕реЗрдЯрд░;
- рд╕рд┐рдВрдЧрд▓ рд▓рд╛рдЗрди рдлрд╝рдВрдХреНрд╢рди;
- рдмрд┐рд▓реНрдХреБрд▓ рддреБрдЪреНрдЫ рдХрд╛рд░реНрдпред
рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдпреЗ рдХрдерди рдкрд░реАрдХреНрд╖рдг рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ "рддреБрдЪреНрдЫ" рдХреЛрдб рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдирд┐рдпрдо рдХреЛ рдЙрдХрд╕рд╛рддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ рдЧреЗрдЯрд░реНрд╕ рдФрд░ рд╕реЗрдЯрд░ (.NET рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рд▓рд┐рдП рдЧреБрдг)ред
рдЗрд╕ TDD рдирд┐рдпрдо рд╕реЗ рдЬреБрдбрд╝реЗ рдХрдИ рдореБрджреНрджреЗ рд╣реИрдВ рдЬрд┐рди рдкрд░ рдореИрдВ рдЪрд░реНрдЪрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛:
- рдХрд╛рд░рдг рдФрд░ рдкреНрд░рднрд╛рд╡ рдХрд╛ рднреНрд░рдо рд╣реИ;
- рднрд╡рд┐рд╖реНрдп рдореЗрдВ рддреБрдЪреНрдЫ рдХреЛрдб рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИ;
- рдпрд╣ рд╢реБрд░реБрдЖрддреА рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рднрдпрд╛рдирдХ рд╕рд▓рд╛рд╣ рд╣реИред
рдореБрдЭреЗ рдЗрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдмрд┐рдВрджреБ рдХреЛ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдЬрд╛рдВрдЪрдиреЗ рджреЗрдВред
рдХрд╛рд░рдг рд╕рдВрдмрдВрдз
рдЯреАрдбреАрдбреА рдХрд╛ рдкреВрд░рд╛ рдмрд┐рдВрджреБ рдпрд╣ рд╣реИ рдХрд┐ рдкрд░реАрдХреНрд╖рдг рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ
рдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдПрдХ рдкрд░реАрдХреНрд╖рдг рдПрдХ
рдХрд╛рд░рдг рд╣реИ , рдФрд░ рдПрдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдПрдХ
рдкрд░рд┐рдгрд╛рдо рд╣реИ ред рдпрджрд┐ рдЖрдк рдЗрд╕ рд╕рд┐рджреНрдзрд╛рдВрдд рдХрд╛ рдкрд╛рд▓рди рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЧреНрд░рд╣ рдкреГрдереНрд╡реА рдкрд░ рдЖрдк рдХреИрд╕реЗ рдПрдХ рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рдХреНрдпреЛрдВрдХрд┐ рдЕрдкреЗрдХреНрд╖рд┐рдд рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рддреБрдЪреНрдЫ рдЬрдЯрд┐рд▓рддрд╛ рдХрд╛ рд╣реЛрдЧрд╛?
рдЖрдк рдЕрднреА рднреА рдпрд╣ рдирд╣реАрдВ рдЬрд╛рдирддреЗ рд╣реИрдВред рдпрд╣ рддрд╛рд░реНрдХрд┐рдХ рд░реВрдк рд╕реЗ рдЕрд╕рдВрднрд╡ рд╣реИред
рд░реЙрдмрд░реНрдЯ рдорд╛рд░реНрдЯрд┐рди рдиреЗ рд╕реНрд╡рдпрдВ рдкрд░рд┐рд╡рд░реНрддрди рдкреНрд░рд╛рдпреЛрд░рд┐рдЯреА рдкреНрд░реАрдорд┐рд╕ (рдЯреАрдкреАрдкреА)
рд╕реНрдерд┐рддрд┐ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рд░рдЦрд╛
рдерд╛ , рдФрд░ рд╡рд┐рдЪрд╛рд░реЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдпрд╣ рд╣реИ рдХрд┐ рдЬрдм рдЖрдк рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдирдП рдХреЛрдб рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХрд╛ рдорд╛рд░реНрдЧрджрд░реНрд╢рди рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдЫреЛрдЯреЗ рдФрдкрдЪрд╛рд░рд┐рдХ рдЪрд░рдгреЛрдВ рдореЗрдВ рдРрд╕рд╛ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдкрд╣рд▓рд╛ рдХрджрдо рдЖрдкрдХреЛ рдПрдХ рддреБрдЪреНрдЫ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рд▓реЗ рдЬрд╛рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рдПрдХ рд╕реНрдерд┐рд░ рд▓реМрдЯрдирд╛ред
рдЯреАрдкреАрдкреА рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ, рддреБрдЪреНрдЫ рдФрд░ рдЧреИрд░-рддреБрдЪреНрдЫ рдХреЛрдб рдХреЗ рдмреАрдЪ рдПрдХрдорд╛рддреНрд░ рдЕрдВрддрд░ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдк рдкрд░реАрдХреНрд╖рдг рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдХрд┐рддрдиреА рджреВрд░ рдЬрд╛рддреЗ рд╣реИрдВред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдпрджрд┐ "рддреБрдЪреНрдЫрддрд╛" рдЖрдкрдХреЛ рд╕рднреА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдПрдХ рд╣реА рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦрдиреЗ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рд╕рд╣реА рддрд░реАрдХрд╛ рд╣реИ рдЬреЛ рдЙрд╕ рддреБрдЪреНрдЫ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдЧрд╛ рдЬреИрд╕рд╛ рдХрд┐ рдЕрдкреЗрдХреНрд╖рд┐рдд рдерд╛ред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЯреАрдкреАрдкреА рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдЖрдк рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред
Encapsulationред
рд░реЙрдмрд░реНрдЯ рдорд╛рд░реНрдЯрд┐рди рдХреЗ рдЧреЗрдЯрдЕрдк рдФрд░ рд╕реЗрдЯрд░ рдХреЗ рдЕрдкрд╡рд╛рдж рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╣реИрд░рд╛рди рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╣реИрдВред рдпрджрд┐ рдЖрдкрдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдпрд╛ рд╡рд╣ рдЧреЗрдЯрдЯрд░ / рд╕реЗрдЯрд░ (рдпрд╛ .NET рд╕рдВрдкрддреНрддрд┐) рддреБрдЪреНрдЫ рд╣реИ, рддреЛ рдЖрдкрдиреЗ рдЗрд╕реЗ рдХреНрдпреЛрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛? рдлрд┐рд░ рдХрдХреНрд╖рд╛ рдореЗрдВ рдПрдХ рдЦреБрд▓реЗ рдХреНрд╖реЗрддреНрд░ рдХреЛ рд▓рд╛рдЧреВ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛?
рдПрдХ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрддреНрдХреГрд╖реНрдЯ рдХрд╛рд░рдг рд╣реИрдВ, рдФрд░
рд╡реЗ рд╕рднреА рдЗрдирдХреИрдкреНрд╕реБрд▓реЗрд╢рди рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИрдВред рдбреЗрдЯрд╛ рдХреЛ рдЧреЗрдЯрд░реНрд╕ рдФрд░ рд╕реЗрдЯрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рд╕реЗ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЙрдирдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдмрджрд▓рдирд╛ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛ред
рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рдмрд┐рдирд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдХреНрдпрд╛ рдХрд╣рддреЗ рд╣реИрдВ?
рд╣рдо рдЗрд╕реЗ
рд░рд┐рдлреИрдХреНрдЯрд┐рдВрдЧ рдХрд╣рддреЗ рд╣реИрдВред рд╣рдо рдпрд╣ рдХреИрд╕реЗ рдЬрд╛рди рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛрдб рдмрджрд▓рдиреЗ рд╕реЗ рд╣рдо рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдирд╣реАрдВ рдмрджрд▓реЗрдВрдЧреЗ?
"рд░рд┐рдлреИрдХреНрдЯрд┐рдВрдЧ" рдкреБрд╕реНрддрдХ рдореЗрдВ рдорд╛рд░реНрдЯрд┐рди рдлрд╛рдЙрд▓рд░ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдЖрдкрдХреЗ рдкрд╛рд╕ рд╕реБрд░рдХреНрд╖рд╛ рдЬрд╛рд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХрд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╕реЗрдЯ
рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП , рдЕрдиреНрдпрдерд╛ рдЖрдкрдХреЛ рдкрддрд╛ рдирд╣реАрдВ рдЪрд▓рддрд╛ рдХрд┐ рдЖрдкрдиреЗ рдХреБрдЫ рддреЛрдбрд╝рд╛ рдпрд╛ рдирд╣реАрдВред
рдЕрдЪреНрдЫрд╛ рдХреЛрдб рд▓рдВрдмреЗ рд╕рдордп рддрдХ рд░рд╣рддрд╛ рд╣реИ рдФрд░ рд╡рд┐рдХрд╕рд┐рдд рд╣реЛрддрд╛ рд╣реИред рд╢реБрд░реБрдЖрдд рдореЗрдВ рдЬреЛ рддреБрдЪреНрдЫ рдерд╛ рд╡рд╣ рд╕рдордп рдХреА рд▓рдВрдмреА рдЕрд╡рдзрд┐ рдореЗрдВ рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЖрдк рдпрд╣ рдЕрдиреБрдорд╛рди рдирд╣реАрдВ рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рддреБрдЪреНрдЫ рд╢рдмреНрдж рдХрдИ рд╡рд░реНрд╖реЛрдВ рддрдХ рддреБрдЪреНрдЫ рд░рд╣реЗрдЧрд╛ред рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдЬрдЯрд┐рд▓рддрд╛ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХреЗ рд╕рд╛рде рддреБрдЪреНрдЫ рд╡реНрдпрд╡рд╣рд╛рд░ рд╕рд╣реА рд░рд╣рддрд╛ рд╣реИред рд░рд┐рдЧреНрд░реЗрд╢рди рдЯреЗрд╕реНрдЯ рд╕реВрдЯ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдЕрдЧрд░ рдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рддреБрдЪреНрдЫ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦрддреЗ рд╣реИрдВред
рд░реЙрдмрд░реНрдЯ рдорд╛рд░реНрдЯрд┐рди рдПрдХ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдЧреЗрдЯрд░реНрд╕ рдФрд░ рд╕реЗрдЯрд░ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдЕрдиреНрдп рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЕрдкреНрд░рддреНрдпрдХреНрд╖ рд░реВрдк рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рдпрд╣ рд╕рджрд╕реНрдп рдШреЛрд╖рдгрд╛ рдХреЗ рдЪрд░рдг рдореЗрдВ рд╕рдЪ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдпрд╣ рдПрдХ рддрдереНрдп рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдордирдорд╛рдиреЗ рдврдВрдЧ рд╕реЗ рд▓рдВрдмреЗ рд╕рдордп рдХреЗ рд▓рд┐рдП рд╕рдЪ рд╣реЛрдЧрд╛ред рдорд╣реАрдиреЛрдВ рдХреЗ рдмрд╛рдж, рдЗрди рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рд╣рдЯрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рдХрд┐ рдкрд░реАрдХреНрд╖рдг рджреНрд╡рд╛рд░рд╛ рдЙрдЬрд╛рдЧрд░ рдХрд┐рдП рдЧрдП рддреБрдЪреНрдЫ рд╕рджрд╕реНрдп рдХреЛ рдЫреЛрдбрд╝рдХрд░ред
рдЖрдк рдЗрд╕реЗ рдЗрд╕ рддрд░рд╣ рд╕реЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ: рдЖрдк рдЯреАрдбреАрдбреА рдХреЗ рд╕рд╛рде рдЯреАрдкреАрдкреА рдХрд╛ рдкрд╛рд▓рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рддреБрдЪреНрдЫ рд╕рджрд╕реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП, рдкрд╣рд▓реЗ рдФрд░ рджреВрд╕рд░реЗ рд░реВрдкрд╛рдВрддрд░рдг рдХреЗ рдмреАрдЪ рдХрд╛ рд╕рдордп рдорд╣реАрдиреЛрдВ рдореЗрдВ рдорд╛рдкрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдорд┐рдирдЯ рдирд╣реАрдВред
рдЯреАрдбреАрдбреА рд╕реАрдЦрдирд╛
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд╣реЛрдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ "рдирд┐рдпрдо" рдЬреЛ рдХрд╣рддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдкрд░реАрдХреНрд╖рдг рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ "рддреБрдЪреНрдЫ" рдХреЛрдб рд╡рд┐рдХрд╕рд┐рдд рдирд╣реАрдВ рдХрд░рдирд╛ рд╣реИ
, рд╢реБрд░реБрдЖрддреА рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рд┐рд░реНрдл
рднрдпрд╛рдирдХ рд╕рд▓рд╛рд╣ рд╣реИ ред рдпрджрд┐ рдЖрдк рдХрд┐рд╕реА рдРрд╕реЗ рд╡реНрдпрдХреНрддрд┐ рдХреЛ рджреЗрддреЗ рд╣реИрдВ рдЬреЛ рдЯреАрдбреАрдбреА рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░ рд░рд╣рд╛ рд╣реИ, рдЬреЛ рдХрд┐ рдЗрд╕ рдЯреАрдбреАрдбреА рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рддреЛ рдпрд╣ рд╡реНрдпрдХреНрддрд┐, рдЬреЛ рдХрд┐рд╕реА рднреА рдХрдард┐рдирд╛рдЗрдпреЛрдВ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рддрд╛ рд╣реИ, рд╣рд░ рдмрд╛рд░ рдЙрд╕ рдорд╛рд░реНрдЧ рдкрд░ рдЬрд╛рдПрдЧрд╛ред рдпрджрд┐ рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрд╕ рддрд░рд╣ рдХрд╛ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдХрдо рд╕реЗ рдХрдо рд╢рд░реНрддреЛрдВ рдХреЛ рд╕реНрдкрд╖реНрдЯ рдФрд░ рдорд╛рдкрдиреЗ рдпреЛрдЧреНрдп рдмрдирд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдЕрд╕реНрдкрд╖реНрдЯ рд╕реНрдерд┐рддрд┐, "рдЖрдк рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рддреБрдЪреНрдЫ рд╣реЛрдЧрд╛", рдмрд┐рд▓реНрдХреБрд▓ рдЕрдирдордирд╛ рд╣реИред рдЖрдк рд╕реЛрдЪ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреИрд╕рд╛ рджрд┐рдЦреЗрдЧрд╛, рд▓реЗрдХрд┐рди, рдЖрдкрдХреЛ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рд╣реИ, рдЖрдк рдЕрдХреНрд╕рд░ рдЖрд╢реНрдЪрд░реНрдпрдЪрдХрд┐рдд рд╣реЛрдВрдЧреЗред рдпрд╣ рдЗрд╕ рддрд░рд╣ рд╕реЗ рд╣реИ рдХрд┐ рдЯреАрдбреАрдбреА рд╣рдореЗрдВ рдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ - рдЬреЛ рдЖрдкрдиреЗ рдореВрд▓ рд░реВрдк рд╕реЗ рд╕реЛрдЪрд╛ рдерд╛ рд╡рд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред
рдореВрд▓ рдХрд╛рд░рдг рд╡рд┐рд╢реНрд▓реЗрд╖рдг
рдХреНрдпрд╛ рдореИрдВ рдЗрд╕ рдмрд╛рдд рдкрд░ рдЬреЛрд░ рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рдЖрдкрдХреЛ рд╕рднреА рдЧреЗрдЯрд░реНрд╕ рдФрд░ рд╕реЗрдЯрд░реЛрдВ рдкрд░ TDD рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП? рд╣рд╛рдВ, рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЬреЛрд░ рджреЗрддрд╛ рд╣реВрдВред
рдЖрдк рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╕рдордп рд▓рдЧреЗрдЧрд╛ред рд░реЙрдмрд░реНрдЯ рдорд╛рд░реНрдЯрд┐рди
рдиреЗ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд┐рдбрдВрдмрдирд╛ рд╡реНрдпрдХреНрдд
рдХреА :
"рддреЗрдЬреА рд╕реЗ рдЖрдЧреЗ рдмрдврд╝рдиреЗ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рддрд░реАрдХрд╛ рд╕рдХреНрд╖рдо рд░реВрдк рд╕реЗ рдЖрдЧреЗ рдмрдврд╝рдирд╛ рд╣реИред"
рдФрд░ рдлрд┐рд░ рднреА, рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдЧреБрдгреЛрдВ рдХреЗ рд▓рд┐рдП рдЯреАрдкреАрдкреА рдХрд╛ рдЖрд╡реЗрджрди рдХреИрд╕рд╛ рджрд┐рдЦреЗрдЧрд╛ (рдЬрд╛рд╡рд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдкрдврд╝рдирд╛ рдЬрд╛рд░реА рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВред рд╕реА # рдореЗрдВ рдЧреБрдг рдЧреЗрдЯрд░реНрд╕ рдФрд░ рд╕реЗрдЯрд░ рдХреЗ рд▓рд┐рдП рд╕рд┐рдВрдЯреИрдХреНрдЯрд┐рдХ рдЪреАрдиреА рд╣реИрдВ)ред
рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ DateViewModel рдХреНрд▓рд╛рд╕ рд╣реИ рдФрд░ рдореИрдВ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдЙрд╕рдХреЗ рдкрд╛рд╕ рд╡рд░реНрд╖ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдиреЗ рд╡рд╛рд▓реА рдПрдХ
рдЗрдВрдЯ рдкреНрд░реЙрдкрд░реНрдЯреА рд╣реЛред рдкрд╣рд▓рд╛ рдЯреЗрд╕реНрдЯ рдЗрд╕ рддрд░рд╣ рд╣реЛрдЧрд╛:
[Fact] public void GetYearReturnsAssignedValue() { var sut = new DateViewModel(); sut.Year = 2013; Assert.Equal(2013, sut.Year); }
рдмрд┐рдирд╛ рдХреБрдЫ рд▓рд┐рдП рдФрд░ рд╕рдм рдХреБрдЫ рдкрд░ рд╕рдВрджреЗрд╣ рдХрд┐рдП, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рд╣реА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реЛрдЧрд╛:
public int Year { get { return 2013; } set { } }
рдЯреАрдкреАрдкреА рдХреЗ рдмрд╛рдж, рдпрд╣ рдХреЛрдб рдмрд┐рд▓реНрдХреБрд▓ рд╡реИрд╕рд╛ рд╣реА рджрд┐рдЦреЗрдЧрд╛ред рдЕрдЪреНрдЫрд╛, рдЪрд▓реЛ рдПрдХ рдФрд░ рдкрд░реАрдХреНрд╖рд╛ рд▓рд┐рдЦреЗрдВ:
[Fact] public void GetYearReturnsAssignedValue2() { var sut = new DateViewModel(); sut.Year = 2010; Assert.Equal(2010, sut.Year); }
рд╕рд╛рде рдореЗрдВ, рдпреЗ рджреЛ рдкрд░реАрдХреНрд╖рдг рдореБрдЭреЗ рд╕рдВрдкрддреНрддрд┐ рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд░рддреЗ рд╣реИрдВ:
public int Year { get; set; }
рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рдЗрди рджреЛрдиреЛрдВ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рдПрдХ рдорд╛рдирдХреАрдХреГрдд рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЕрднреА рднреА рдмрд╣реБрдд рдХрд╛рдо рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╣рдореЗрдВ рди рдХреЗрд╡рд▓ рдПрдХ рд╕рдВрдкрддреНрддрд┐ рдХреЗ рд▓рд┐рдП, рдмрд▓реНрдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдХреЗ рд▓рд┐рдП рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджреЛ рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦрдиреЗ рд╣реЛрдВрдЧреЗ!
"рдЖрдк рдПрдХ рд╣реА рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ?" рдЖрдк рдкреВрдЫрддреЗ рд╣реИрдВред рдХреНрдпрд╛ рддреБрдо рд╕рдЪ рдореЗрдВ рд╣реЛ?
рдУрд╣, рдЖрдк рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рд╣реИрдВред рдЬрдм рд╡реЗ рдПрдХ рд╣реА рдЪреАрдЬ рдХреЛ рдмрд╛рд░-рдмрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреНрдпрд╛ рдХрд░рддреЗ рд╣реИрдВ?
рдареАрдХ рд╣реИ, рдпрджрд┐ рдЖрдк рдкрд░рд╕реНрдкрд░ рд╡рд┐рд░реЛрдзреА рдирд┐рдпрдореЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдЖрдкрдХреЛ рдХрд╛рдо рд╕реЗ рдмрдЪрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВ рдЬреЛ рдЖрдкрдХреЛ рдиреБрдХрд╕рд╛рди рдкрд╣реБрдВрдЪрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдЧрд▓рдд рдЙрддреНрддрд░ рд╣реИред рдпрджрд┐ рдХрд╛рдо рдЖрдкрдХреЛ рдиреБрдХрд╕рд╛рди рдкрд╣реБрдВрдЪрд╛рддрд╛ рд╣реИ - рдЗрд╕реЗ рдЕрдзрд┐рдХ рдмрд╛рд░ рдХрд░реЗрдВред
рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рджреЛрд╣рд░рд╛рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдЖрдк рд╕рдВрдкрддреНрддрд┐ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд╕рд╛рде рднреА рдРрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣рд╛рдБ рдореИрдВрдиреЗ
AutoFixture рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡рд╣реА рдХрд╛рдо рдХрд┐рдпрд╛ рд╣реИ:
[Theory, AutoWebData] public void YearIsWritable(WritablePropertyAssertion a) { a.Verify(Reflect<DateViewModel>.GetProperty<int>(sut => sut.Year)); }
рдпрд╣ рдкрд┐рдЫрд▓реЗ рджреЛ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд╕рдорд╛рди рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдШреЛрд╖рд┐рдд рддрд░реАрдХрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рдкрдВрдХреНрддрд┐ рд▓рдВрдмреА рд╣реИред
рдореВрд▓ рдХрд╛рд░рдг рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдпрд╣рд╛рдВ рдЙрдкрдпреБрдХреНрдд рд╣реИред рдХрд┐рд╕реА рдХреЛ рдпрд╣ рдЖрднрд╛рд╕ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдЯреАрдбреАрдбреА рд╕реЗ рдЧреЗрдЯрд░реНрд╕ рдФрд░ рд╕реЗрдЯрд░рд░реНрд╕ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рд▓рд╛рдЧрдд / рд▓рд╛рдн рдЕрдиреБрдкрд╛рдд рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд░реЙрдмрд░реНрдЯ рдорд╛рд░реНрдЯрд┐рди рдиреЗ рдЗрд╕ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд┐рдпрд╛ рдХреНрдпреЛрдВрдХрд┐ рдЙрдиреНрд╣реЛрдВрдиреЗ рд▓рд╛рдЧрдд рдХреЛ рддрдп рдХрд┐рдпрд╛ рдФрд░ рд▓рд╛рдн рдмрд╣реБрдд рдЫреЛрдЯрд╛ рдерд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╣рд╛рд▓рд╛рдВрдХрд┐ рд▓рд╛рдн рдЫреЛрдЯреЗ рд▓рдЧ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд▓рд╛рдЧрддреЛрдВ рдХреЛ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдКрдВрдЪрд╛ рд░рд╣рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдХрдо рд▓рд╛рдЧрдд рдФрд░ рд▓рд╛рдЧрдд / рд▓рд╛рдн рдЕрдиреБрдкрд╛рдд рдореЗрдВ рд╕реБрдзрд╛рд░ рд╣реЛрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рд╣рдореЗрд╢рд╛ рдкрд░реАрдХреНрд╖рдг рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЧреЗрдЯрд░реНрд╕ рдФрд░ рд╕реЗрдЯрд░ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХрд╛ рдиреЗрддреГрддреНрд╡ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдЕрдиреБрд╡рд╛рджрдХ рд╕реЗ: рдореИрдВ рдЕрдЧрд▓реА рдмрд╛рд░ рдХреБрдЫ рдСрдЯреЛрдлрд╝рд┐рдХреНрдЪрд░ рд╕рдореАрдХреНрд╖рд╛ рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдЬрд╛рд░реА рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣рд╛ рд╣реВрдБ , рдпрд╛ рд╕реНрд╡рдпрдВ рд╕рдореАрдХреНрд╖рд╛ рдХрд░ рд░рд╣рд╛ рд╣реВрдБред IMHO, рдПрдХ рдмрд╣реБрдд рд╣реА рджрд┐рд▓рдЪрд╕реНрдк рдЙрдкрдХрд░рдгред