Ca si un raspuns in acest post utilizatorului tekkie am decis sa deschid un nou subiect.
Pe scurt imi place programarea, ca si hobby… din acest motiv pana acum un an cand am citit Clean Code (nu tot ce-i drept) nici nu auzisem de OOP.
Momentan citesc OOAD \w Applications de G. Booch pentru introducerea in OOP, diagrams etc… si DDD de Eric E. ( pentru building blocks etc…, in exemple intalnesc tot felul de termeni din diferse domenii pe care nu-i inteleg, despre finante etc… asa ca imi e putin mai greu sa le urmaresc )
Ma gandeam sa ma apuc sa lucrez la un proiect web in PHP sa aplic tot ce am aflat mai nou, pentru ca in capul meu lucrurile sunt destul de clare… pana cand incerc sa pun in aplicare.
Sunt extrem de constient ca nu o sa fac nimic notabil din prima, nici din a doua, poate nici a trei-a incercare, nu de alta dar cu cat aflu ceva nou, mai apar inca alte 4 chestii.
Sincer nu vreau sa incerc sa invat inca un framework precum Laravel momentan, mai degraba mi-as face eu framework-ul meu , daca il pot numii asa, in spiritul Clean Architecture si DDD; de la Routing pana la View… nu va imaginati ceva maret…
Ca si aplicatie: un forum precum phpBB sau Invision Community, evident ceva foarte simplu…
Sumar
Ideea nu e noua, ci persista de cativa ani, chiar am avut doua incercari, ambele in PHP, prima incercare a fost acum 4 ani, pe vremea aia scriam PHP-ul si HTML-ul intr-un singur fisier, dar m-am convins de problemele unei astfel de abordari asa ca am abandonat ideea pentru mult timp, a doua incercare a fost in decembrie cand am aflat si aplicat MVC, lucru care m-a dus muult mai departe fata de incercarea anterioara, dar si aici am gasit limitarile implementarii mele duplication, SQL in modele, am cuplat URL-ul de modele etc… care toate au dus la o avansare din ce in ce mai ingreunata asa ca am decis sa iau ce am invatat de acolo si sa ma opresc fara sa mai fac o incercare de rework sau macar un mic refactoring.
Acum, am foarte multe intrebari despre cum pot face aplicatia, dar o luam pe layer-uri
Sumar
In primul rand pe partea de routing / HTMLrequest ma pot inspira de la framework-uri; la partea de Presenter si View probabil am sa trimit DO-urile din domain layer in presenter si prin getters sa pot extrage text-ul pentru a-l afisa in view ( nu stiu daca se practica dar momentan nu reprezinta o problema cat timp nu cuplez domeniul de view ); Pe partea de persistence, cu " Repository pattern " pot implementa o strategie care salveaza aggregate-urile intr-un fisier text, precum a facut Bob cu FitNesse, pentru ca m-as complica enorm sa invat un ORM momentan ( si aici atat timp cat interfata repository-urilor e bine definita nu exista o problema de a schimba strategia pe viitor );
Cand vine vorba de application/domain layer sincer nu prea am inteles care-i diferenta intre un serviciu’ din application layer si unul din domain… o diferenta ar fi ca doar serviciile din domain se folosesc de interfete pentru a comunica vre-un modul din layer-ul de infrastructura; de SMTP spre exemplu, dar in rest totul este in ceata; O alta intrebare este legata de invariants, nu imi pot imagina cum ajunge din domeniu pana in view faptul ca eu am incercat sa setez un value object cu mai mult de 25 de caractere spre exemplu…; Dat fiind ca eu sunt singurul dev / utilizator / “domain expert” etc… sper sa nu existe probleme prea mari de comunicare singurele probleme ar fi sa gasesc cateva requirements cheie ( nu de alta dar nici eu nu stiu ce vreau… si nici ce fac ), UI-ul si cum aceste cerinte se incatreaza in UI si cea mai importanta cum o sa modelez domeni-ul… dar aici am sa descopar singur
Voi aveti vre-o poveste interesanta / vreo informatie? La voi cum a decurs tot procesul de invatare?