Tentunya siapa pun yang terlibat dalam pemrograman ingat bagaimana pada awal perjalanan aliran informasi tentang algoritma, pola, dan metode pengembangan jatuh padanya. Dia ingat perasaan itu ketika, setelah berurusan dengan beberapa ide segar atau hanya untuk diri sendiri, perasaan "baik, sekarang kita akan hidup!" Dan juga perasaan sedikit putus asa - setelah mencoba menerapkan semua ini dalam proyek nyata, dengan orang-orang nyata, dengan logika bisnis yang tiba-tiba berubah dan terus-menerus "sangat mendesak".
Bagaimana mungkin di dunia di mana sebagian besar proyek masuk ke dalam pola "entri data, validasi, dan simpan ke database", begitu banyak proyek yang berakhir berantakan? Terlepas dari kenyataan bahwa semua pengembang penuh dengan pengetahuan tentang algoritme, kerangka kerja dan pola, dan prinsip SOLID yang terpental dalam wawancara. Saya berani mengungkapkan pada kesempatan ini asumsi saya tentang penyebabnya, serta cara pribadi saya tentang cara mengatasinya.
Tesis
. , . : , , . , , , , ( ). , "" . , ββ .
? , . , ββ , .
, - , - , , . , . . , , 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 !