.NET
Għaliex Naħseb li min Jibda Għandu Jitgħallem Clean Architecture
Kont inqiegħed id-DbContext tiegħi dritt ġo controllers u narmi loġika ġo Program.cs. Ħadem, sakemm kelli nbiddel xi ħaġa. Clean architecture huwa dak li sewwa dan.
Meta l-ewwel bdejt nikkowdja f'.NET, l-uniku għan tiegħi kien li nġagħal l-affarijiet jaħdmu. Kont inqiegħed id-database context tiegħi dritt ġo controllers tal-API tiegħi, nikteb checks ta' validazzjoni ħdejn il-queries tal-SQL tiegħi, u narmi nofs il-loġika tiegħi ġo Program.cs. Ħadem. L-app ħadmet, il-JSON irritorna, u ħassejtni bħallikieku naf x'kont qed nagħmel.
Imbagħad ġiet l-ewwel darba li kelli nbiddel xi ħaġa.
Ippruvajt nibdel libreriji tad-database u naġġorna regola tan-negozju fl-istess jum. Nofs l-endpoints tiegħi nkisru. Bidla żgħira f'kalkolu ta' ordni b'xi mod affettwat il-loġika tar-reġistrazzjoni tal-utenti tiegħi. Kont qed noqgħod il-biċċa l-kbira tal-ħin tiegħi nħoll kodiċi li ktibt ġimagħtejn qabel minflok nikteb xi ħaġa ġdida.
Dak it-taħwid huwa dak li mbuttani nħares lejn clean architecture.
Fil-bidu ħassitha intimidanti. Kulħadd jitkellem dwarha ħassu bħallikieku kienu qed jaqraw minn ktieb ta' enterprise, jitfgħu termini bħal dependency inversion u domain-driven design. Iżda ladarba verament bdejt inkisser is-solutions ta' .NET tiegħi f'saffi xierqa, xi ħaġa qabdet.
Kif verament nistrutturaha issa
Meta nibda proġett, nissettja s-saff Domain l-ewwel b'klassijiet ta' C# pura, ebda Entity Framework, ebda HTTP, ebda packages ta' partijiet terzi, sempliċiment il-loġika tan-negozju waħedha. Imbagħad is-saff Application jittratta l-użi attwali, jiddefinixxi interfaces għal dak li teħtieġ, xi ħaġa bħal "ġib utent" jew "ibgħat email," mingħajr ma tagħti kas kif dawk l-affarijiet verament iseħħu.
Biss wara li dak ikun f'postu nmiss EF Core jew ASP.NET. Database contexts u APIs esterni jmorru f' Infrastructure, u l-Minimal APIs jew Controllers jmorru f' Presentation.
X'verament inbidel minn jum għal ieħor
Il-prinċipji SOLID waqfu jkunu tweġibiet ta' intervista u bdew ikunu kif il-folders tal-proġett tiegħi diġà huma stabbiliti, mhux xi ħaġa li rrid niftakar napplika fuqhom.
It-testing waqaf ikun uġigħ ta' ras. Regoli tan-negozju li ma jafu xejn dwar database jistgħu jiġu ttestjati b'xUnit fi sekondi, ebda database in-memory, ebda mocks elaborati, sempliċiment il-loġika waħedha.
Il-lock-in tal-istack tekniku waqaf jinkwetani. Jekk nibdel SQL Server jew nibdel provider tal-email, biss Infrastructure jinbidel. L-applikazzjoni ewlenija ma tinnutax.
Fejn xorta nżomm sempliċi
Għad hemm drabi biex taqbeż dan kollu. App CRUD bażika li tista' tkun ftit fajls m'għandhiex bżonn erba' proġetti separati. Iżda li ngħaddi minn din il-bidla biddel kif naħseb dwar il-kodiċi ġeneralment: minn nitfa' sintassi mal-ħajt sakemm taħdem, għal nibni xi ħaġa maħsuba biex verament tibqa' tiflaħ meta jkolli nbiddilha aktar tard.