Quiconque est engagé dans la programmation se souvient sûrement qu'au tout début du chemin, un flux d'informations sur les algorithmes, les modèles et les méthodes de développement lui tombe dessus. Elle se souvient de ce sentiment même quand, après avoir traité une idée fraîche ou simplement nouvelle pour soi, le sentiment "bien, maintenant nous allons vivre!" Et aussi ce sentiment de léger désespoir - après avoir essayé d'appliquer tout cela dans un vrai projet, avec de vraies personnes, avec des retournements soudains de logique métier et une constante «très urgent».
Comment se fait-il que dans un monde où la plupart des projets s'inscrivent dans le modèle «saisie de données, validation et enregistrement dans la base de données», tant de projets tombent dans une confusion totale? Malgré le fait que tous les développeurs sont pleins de connaissances sur les algorithmes, les cadres et les modèles, et les principes de SOLID rebondissent sur les dents lors de l'entretien. Je me risquerais à exprimer à cette occasion mon hypothèse sur la cause, ainsi que ma manière personnelle de gérer cela.
Thèse
. , . : , , . , , , , ( ). , "" . , “” .
? , . , “” , .
, - , - , , . , . . , , UI. , “” , .. “” “”. , : “ ” “ ” ?
, : , “”, ? , “” - , , - .
1- .
, , : (), , ? - ? , RFC 5322, - , . " " - . , , " ?". , .. , , . , , - - . , “-”. , , , . , , , .
1- : () .
, , , , . , - - . , , .
2- . "" ""
, ? , : , , “”.
: , "" ()? . , - "" , . , " , - ", " ", , - .
3- .
2 . “ ?” UI, , . Console.Write()
textbox.Text
html-, .
. , , , “ ”. , , , -, , .
, . , , , , , . , . , , , .
: Win , , .
4 : , , , . - - “ ”.
, . , . , . , , , . , , , () - : “ ” ? , “” , . , , , . - , , , .
, . Windows .
. - SMS . - - .
, “ , ”, - - . , - .
, Client
, , IO - ClientGet(int id)
, .
, IO . ClientGet
Client. ClientVerySpecificStatsInfo
, IO . , , , , . , , , , , . , . - , , .
, - ( “”) “” , " !".
, . , - - , . , , - . , , , . . , - , - , , , , .
, , . , , MVP . - , - , , - “”. , UserPresenter
, UserPrecursor
.
“ ” . , .. .. , - , “ ” - , , , .
: , UI. UI , “” , UI. ( ) . .
. “ ” . “ ” . - . , “” . , , , , .
, () - . , - . , Order (), Client User. Order Line (), . , Line Order . , , , . .
Logic.Order
Logic.Orders.Line
, Line Order - , Line Orders.
Logic.Order
Logic.Line
, Line , , .
, “” , “”, “”, . , , . . , , Zip, City, Address - , . , , .
:
/Geo
Address
City
Zip
/Orders
Line
Order // "Orders"
, , : , .
, . , , , - , . , , . -.
, . - . UML, , , , - , … … . , - Zip, Address, City - - , - - GeoObject .
, , - . “ - ” - . - .Subitems
. - .Subtypes
, .
.Def
, , , - , . .Def
(Definitions). , . UML, , .
/Geo
Address
City
Zip
/Orders
/.Def
OrderType
OrderBase
Line
Order
.Spec
, 1-1 . 1-1 . , , , .. - .
, . UML .
.Spec
- ( specification - , ), .
, User UserLikes, , / User’ .
“ ” . “” , - .
. , UserStats (“”) . , , , , . , , .. , . Stats, . (, UserStats , Stats .)
:
/Users
/.Spec
UserLikes
UserStats // 1-
Stats //
User
. , , UML, , UML. , , , - .
.Calc
, , . . , . , , .. . “” , - , 0 1 . PDF , Adobe Acrobat Reader, . .Calc
( calculators).
, . , , , , . , “ - ? ?”
- , - . . .
.Models
.Models
, -, , , . , Team, ID
Name
. , , , , ”” . 2- , User , .
- , . - , , , .
, . , presenter.Submit(input)
clientValidator.Validate(input)
, “-” , .
“” , UI “”.
, , , , , , .. . - . . , , Ms Excel. - UI, , . , , - Html, Pdf, Rtf, Json, Xls .
, , .
.Tech
, , . , , - - . , , , , . “ ” , , , .
, . , , “” .. .Dev
. IO , .
, , - ? Money? ? , , Options? - , Context - MoneyContext, OptionsContext ..
MVC, MVP, MVVM
MVC, MVP MVVM , .. ( ) . , , , “” - . , , . - .
, , - . . , . , “ !”, . “ ”, “ ”, “ ”. , - .
, “” - “”. - , - - ( , ), .
, , “ ?”. . , “” . , - .
, , , - . , , , - , - . , - , "" . , .
p.s. C !