Comment devenir bon en analyse et conception orientées objet (OOAD)?

26

Devenir un bon analyseur et concepteur peut grandement bénéficier à un développeur. Mais il y a certainement des obstacles à cela. Tout le monde n'est pas intéressé par OOAD, et toutes les personnes intéressées ne connaissent pas le chemin. Un bon OOAD doit-il connaître plusieurs langues OO? Ou devrait-il / elle avoir échoué des projets? Comment devenir un bon OOAD?

Saeed Neamati
la source

Réponses:

34

Les gens qui ne sont pas intéressés créent leurs propres obstacles. Je ne peux pas m'en inquiéter.

Pour ceux qui ne connaissent pas le chemin, je suggère:

  • Je trouve que chaque langue OO que j'apprends fait de moi un meilleur développeur OO. Beaucoup peut être apporté de chaque langue dans d'autres, tant que vous trouvez la communauté.
  • Vous apprenez plus de l'échec que du succès, mais essayez de le faire à votre rythme. Professionnellement, faites confiance à ceux qui ont plus d'expérience, au moins une partie du temps - mais n'ayez pas peur de demander "Pourquoi?".
  • Apprenez les cinq principes SOLID et comprenez pourquoi ils existent. Aucun d'entre eux n'est des règles, mais ce sont de bonnes directives lorsque vous êtes perdu.
  • Le développement piloté par les tests a amélioré davantage mes compétences en conception OO que tout ce que j'ai jamais appris.
  • Vous ne serez pas à votre meilleur jusqu'à ce que vous soyez passé de la sous-ingénierie à la suringénierie et que vous ayez ensuite trouvé le bon équilibre (plus proche de ce dernier).
  • En fait, grattez ça, vous ne serez jamais aussi bon que vous le serez deux ans plus tard.
  • Lisez beaucoup de livres et de blogs mais ne prenez rien comme un évangile. Cette industrie n'a toujours pas trouvé, et ne trouvera peut-être jamais, une voie parfaite.
  • Bien sûr, apprenez les modèles de conception, mais ne cherchez pas d'endroits pour les utiliser, utilisez-les simplement comme facilitateur de la communication.

J'espère que cela vous aidera.

pdr
la source
1
Bonne liste @pdr. +1
Saeed Neamati
5
+1 "n'a toujours pas trouvé, et ne trouvera peut-être jamais, un chemin parfait."
ocodo
1
+1 "Le développement piloté par les tests a amélioré davantage mes compétences en conception OO que tout ce que j'ai pu apprendre."
kevin cline le
1
SOLID
Mudassir
Merci j'ai une question pour SOLID discussion programmers.stackexchange.com/questions/155852/…
LCJ
5

Je pense que pour apprécier pleinement le modèle OO, vous devez avoir une expérience d'échec lamentable avec des techniques de programmation non OO. Vous pouvez comprendre OO à l'intérieur et à l'extérieur, mais pour l'apprécier et le respecter, ce doit être un nouvel outil brillant qui remplace l'ancien rouillé qui ne faisait pas tout à fait le travail.

Je me suis autodidacte pendant 7 ans avant de finalement apprendre OO au niveau collégial Java. Avant cela, je construisais constamment ces projets et ils devenaient si gros que j'oublierais ce qui se passait. Ils seraient volumineux, non organisés et nécessiteraient beaucoup d'entretien pour apporter des modifications mineures. Fondamentalement, je n'arrêtais pas de me retrouver embourbé avec mon code et de recommencer constamment.

Il m'a fallu un certain temps pour sortir de la conception linéaire que j'avais adoptée, mais une fois que j'ai bien compris le modèle OO, c'était comme Eureka! J'ai pu coder des projets beaucoup plus complexes par moi-même et ma productivité a explosé après avoir appris des concepts tels que l'héritage. Je ne perds pas de temps à réécrire du code ou à recommencer, car objectivement tout a du sens et c'est juste intuitif.

Je pense que chaque programmeur devrait connaître autant de langues que possible. Cela fera d'eux un vétéran plus aguerri, qu'il s'agisse d'OO ou non. Une fois que vous comprenez OO, vous pouvez utiliser ces techniques et les appliquer partout où elles sont mises en œuvre.

À mon humble avis, si vous ne comprenez pas ou si vous ne souhaitez pas apprendre OO, vous serez insuffisamment équipé sur le champ de bataille de la vie. De plus en plus d'entreprises utilisent de nouveaux langages OO. Je ne vois aucune raison de ne pas connaître le modèle OO aujourd'hui.

Selon la façon dont la personne apprend, c'est à elle de décider comment elle veut apprendre le modèle. Personnellement, j'apprends mieux quand quelqu'un m'enseigne, et donc aller en classe pour Java I et Java II a vraiment fait une grande différence pour moi. Je recommanderais de prendre des cours au choix en génie logiciel au collège, ou tout simplement d'aller en ligne et de rechercher des tutoriels OO si vous n'avez pas accès à des cours collégiaux ou si vous voulez apprendre pendant votre temps libre.

Quand je repense à la façon dont cela m'a été décrit, je dis; une pomme est une pomme et une orange est une orange. Oui, ils tombent tous les deux des arbres, mais ce sont deux fruits totalement différents et c'est là que réside votre harmonie.

Styler
la source
1
Vouliez-vous échouer lamentablement avec la programmation fonctionnelle, ou échouer lamentablement avec la programmation procédurale?
Andrew Grimm
Echouant lamentablement avec la programmation fonctionnelle, mais ne manquant pas de maîtrise. Je veux dire l'échec de la mise en œuvre réussie en raison de ses limites.
Styler
Donc, vous vouliez certainement parler de programmation fonctionnelle, pas de programmation procédurale?
Andrew Grimm
Programmation non OO.
Styler
2
Je suggérerais certainement de modifier cela, car non-OO! = Fonctionnel par n'importe quel effort d'imagination. Les choses peuvent même être les deux.
Magus
0

Il y a toujours des obstacles pour ceux qui sont intéressés ou non, mais le contexte et la gravité peuvent varier.

Il n'est pas nécessaire que vous ayez besoin d'apprendre plusieurs langues pour les concepts OO, commencez par une langue que vous aimez, sur une période de temps vous aurez une forte prise en main de la langue, postez-le, il est possible d'explorer certaines choses que vous avez faites déjà et essayez d'exécuter le même sur une langue différente. L'expertise dans une langue aide à passer à de nouvelles, car vous auriez une référence à évaluer.

Tout projet est une expérience d'apprentissage plutôt que sa réussite.L'important est de savoir dans quelle mesure vous avez adapté les fonctionnalités pour votre meilleure utilisation, parfois il est bon de lire le code des autres et de comprendre comment et pourquoi il est fait. Si vous pouvez trouver un mentor, ce serait formidable. Toujours connaître la raison pour laquelle cela est choisi , que diriez-vous de le faire d'une autre manière. Essayez de travailler sur votre propre logique et modèle de conception et envoyez-le à votre senior / mentor. De cette façon, vous amélioreriez vos compétences, peut-être qu'au début, ils iraient directement à la poubelle, mais vous avez ensuite essayé et appris ce que vous avez fait de mal. Itérativement, vous iriez de mieux en mieux.

V4Vendetta
la source