Prima una dichiarazione di non responsabilità: non so davvero se questa domanda si adatta a questo sito Web, ma trovo ancora una domanda rilevante non solo per me ma per le altre persone che sono principianti. Se la domanda può essere migliorata per adattarsi qui, si prega di sottolineare i commenti int. Se non va bene, fammi sapere anche e, se possibile, fammi sapere dove questo può essere discusso perché non ho trovato buoni forum per questo.
Ho imparato a programmare nel 2009 quando ho studiato PHP. Più tardi, nel 2012, sono passato a C # e .NET. Comunque, la codifica non è il problema, la scrittura di algoritmi non è il mio problema. Il mio vero problema è sapere cosa deve essere codificato per raggiungere un requisito e dove deve essere codificato.
La maggior parte dei corsi disponibili sul web affronta il come : come scrivere codice in una determinata lingua, come utilizzare alcuni set di API, ecc. Non è questo il punto.
In questi anni ho letto molte cose: analisi e progettazione orientate agli oggetti, modelli di progettazione, progettazione guidata dal dominio e così via. Comprendo ad esempio i principi SOLID, alcune delle idee principali di DDD come la necessità di coinvolgimento di esperti di dominio, lo sviluppo di un linguaggio onnipresente e così via. Oserei dire che ho un background teorico almeno ragionevole.
Ma quando si tratta di pratica mi sento come un disastro. Qualche tempo fa dovevo continuare lo sviluppo di un sistema finanziario che era già stato sviluppato da qualcun altro. È quel tipo di "vecchio sistema" sviluppato con C # e WinForms. Era la prima volta che sceglievo un progetto con una complessità di dominio reale, con molte regole aziendali e così via.
Confesso che quando ricevo i requisiti per la maggior parte del tempo penso "come diavolo può essere fatto?" - Non ho idea di come iniziare a lavorare sui requisiti per capire cosa bisogna fare. Le mie principali confusioni credo siano ciò che devo codificare, quali classi, interfacce e dove ogni pezzo di logica va, su quale classe deve essere ogni cosa. Il problema è che non so da dove cominciare.
Il più delle volte, con un bel po 'di pensiero, finisco con alcune idee, ma non so mai come giudicare se la mia idea è corretta o no.
Voglio dire, non penso che questa sia una mancanza di teoria, come ho detto di aver letto su un sacco di cose sull'architettura del software e sull'orientamento agli oggetti, mi è stato consigliato, ma non è stato di grande aiuto nell'identificare cosa si deve fare in pratica .
Quindi, come posso imparare a fare davvero un design orientato agli oggetti? Quello che voglio imparare è: determinati requisiti sanno come iniziare a lavorarci su in un processo che porta a scoprire cosa deve essere fatto e dove ogni parte di codice appartiene. Come posso anche imparare a giudicare se la mia idea è corretta o no?
Credo che spiegarlo appieno come una risposta qui non sarebbe possibile. Quello che sto cercando, tuttavia, che può essere secondo lo stile del sito sono le risposte che danno solo una panoramica e indicano alcuni riferimenti (libri, corsi online, ecc.) Che possono essere utilizzati per espandere le idee e imparare davvero queste cose.