Tout d'abord un avertissement: je ne sais pas vraiment si cette question correspond à ce site Web, mais je la trouve toujours une question pertinente non seulement pour moi mais pour d'autres personnes qui sont débutants. Si la question peut être améliorée pour s'adapter ici, veuillez indiquer les commentaires int. Si cela ne vous convient pas, faites-le moi savoir et si possible, faites-moi savoir où cela peut être discuté car je n'ai pas trouvé de bons forums pour cela.
J'ai appris à programmer en 2009 lorsque j'ai étudié PHP. Plus tard en 2012, je suis passé à C # et .NET. Quoi qu'il en soit, le codage n'est pas le problème, l'écriture d'algorithmes n'est pas mon problème. Mon problème réel est de savoir ce qui doit être codé pour répondre à une exigence et où il doit être codé.
La plupart des cours disponibles sur le Web abordent le comment - comment écrire du code dans une certaine langue, comment utiliser certains ensembles d'API, etc. Ce n'est pas mon point ici.
Au cours de ces années, j'ai lu beaucoup de choses sur un tas de choses: l'analyse et la conception orientées objet, les modèles de conception, la conception pilotée par domaine, etc. Je comprends par exemple les principes SOLID, certaines des principales idées de DDD comme la nécessité de l'engagement d'experts du domaine, le développement d'un langage omniprésent et ainsi de suite. J'oserais dire que j'ai une formation théorique au moins raisonnable.
Mais quand il s'agit de pratiquer, j'ai l'impression d'être un désastre. Il y a quelque temps, je devais poursuivre le développement d'un système financier déjà développé par quelqu'un d'autre. C'est ce genre d '"ancien système" développé avec C # et WinForms. C'était la première fois que je choisissais un projet avec une réelle complexité de domaine, avec beaucoup de règles métier, etc.
J'avoue que lorsque je reçois les exigences la plupart du temps, je pense "comment diable cela peut-il être fait?" - Je n'ai aucune idée de la façon même de commencer à travailler sur les exigences pour comprendre ce qui doit être fait. Je crois que mes confusions principales sont ce que je dois coder, quelles classes, interfaces et où chaque élément logique va, sur quelle classe chaque chose doit être. Le problème est que je ne sais pas par où commencer.
La plupart du temps, avec beaucoup de réflexion, je me retrouve avec quelques idées, mais je ne sais jamais juger si mon idée est correcte ou non.
Je veux dire que je ne pense pas que ce soit un manque de théorie, comme je l'ai dit, j'ai lu un tas de choses sur l'architecture logicielle et l'orientation des objets, on m'a recommandé mais cela n'a pas beaucoup aidé à identifier ce qui doit être fait dans la pratique .
Alors, comment puis-je apprendre à vraiment faire du design orienté objet? Ce que je veux apprendre, c'est: les exigences données savent comment commencer à travailler sur elles dans un processus qui conduit à découvrir ce qui doit être fait et où chaque morceau de code appartient. Comment puis-je également apprendre à juger si mon idée est correcte ou non?
Je pense qu'il ne serait pas possible d'expliquer pleinement cela comme une réponse ici. Ce que je recherche, cependant, qui peut être selon le style du site, ce sont des réponses donnant simplement un aperçu et pointant quelques références (livres, cours en ligne, etc.) qui peuvent être utilisées pour développer les idées et vraiment apprendre ces choses.