28 votes

Symptômes et alternatives à la POO surutilisée

Dernièrement, je perds ma confiance en programmation orientée objet. J'ai déjà vu beaucoup les plaintes à ce sujet de la programmation orientée objet en abuse ou de simples abus. Je n'ai pas moyenne de la commune de la confusion entre-a et a-une relation. Je veux dire des choses comme les problèmes de l'ORM lorsque vous traitez avec des bases de données relationnelles, l'utilisation excessive de l'héritage à partir de C# et aussi de plusieurs années de recherche à code avec le même faux encapsulation croyance que Scott Meyers mentionne dans l'article 23 de Effective C++

Je suis intéressé à en apprendre davantage à ce sujet et non de la programmation orientée objet logiciel des motifs qui peuvent résoudre certains problèmes mieux que leur programmation orientée objet homologues. Je suis convaincu que là-bas il y a beaucoup de gens donner des conseils sur la façon d'utiliser cela comme un avantage non pure de la programmation orientée objet des langages tels que C++.

Personne ne sait de toute bonne référence (auteur, livre, article) pour obtenir commencé?

S'il vous plaît, notez que je suis à la recherche de deux connexes mais différentes choses:

  • Commune de l'utilisation des concepts de programmation orientée objet (comme le point 23)
  • Modèles où la POO n'est pas la meilleure solution (avec des variantes)

3voto

dzendras Points 2138

Eh bien, je peux vous recommander un livre Agile Principles, Patterns, and Practices in C # . Les exemples sont en C # bien sûr, mais l'idée du livre est universelle. Non seulement il couvre Agile mais se concentre également sur les mauvaises pratiques et montre dans des exemples comment convertir un mauvais code en un bon code. Il contient également des descriptions de nombreux modèles de conception et montre comment les implémenter dans un exemple semi-réel d'application de paie.

2voto

wheaties Points 20917

Cela doit être fait, mais si vous voulez vraiment vous éloigner de la POO ou au moins jetez un œil à des concepts qui ne sont pas de la POO mais qui sont utilisés avec une grande efficacité: Apprenez-vous un Haskell . Essayez un nouveau paradigme de programmation, puis commencez à voir où vous pouvez appliquer la plupart des concepts aux langages POO. Cela répond à votre deuxième puce, pas de manière directe, mais croyez-moi, cela vous aidera plus que vous ne le pensez.

2voto

Hans Passant Points 475940

C'est un peu bizarre que vous mentionnez C#. Il a très puissant des mots-clés à garder l'habitude de l'héritage de la misère à vérifier. Le premier doit être l' intérieur d'un mot clé. La notion de restreindre la visibilité d'un module. Ce concept est complètement absent en C++, le modèle ne prend pas en charge. Sinon, un très bon concept, "je n'ai confiance que les membres de mon équipe pour y arriver". Bien sûr, vous ne.

Puis il y a le slammer un, le scellé mot-clé. Extraordinaire, puissant, "le mâle s'arrête ici, ne salissez pas avec moi". Utilisé avec une précision chirurgicale dans le .NET framework, je n'ai jamais encore trouvé un cas où le scellé a été utilisé de façon inappropriée. Il manque également dans le C++, mais avec d'obscurs façons d'obtenir que le travail.

Mais oui, l'objet WPF modèle suce assez lourd. Hériter de 6 niveaux de profondeur et à l'aide de portes dérobées comme une propriété de dépendance est offensive. L'héritage est dur, nous allons aller faire du shopping.

0voto

James Points 3829

Je dirais de regarder les moteurs de jeu. Pour la plupart, de la programmation orientée objet a tendance à provoquer une légère diminution des performances et de l'industrie du jeu est apparemment obsédé par l'élimination mineure ralentissements (et parfois en ignorant les grandes). En tant que tel, leur code, même s'il est généralement écrit dans un langage qui prend en charge la programmation orientée objet, va se retrouver en utilisant uniquement les éléments de la programmation orientée objet, qui sont nécessaires pour nettoyer le code / la facilité de l'entretien, qui concilie performance.

EDIT:

Cela dit, je ne sais pas si je voudrais vraiment aller les chercher à l'Irréel. Ils font des choses étranges pour le plaisir de faire leur contenu pipeline plus facile pour les développeurs... il fait leur code... eh bien, regardez si vous voulez vraiment savoir.

0voto

Calmarius Points 2626

Une surutilisation courante est de forcer la POO dans les programmes / scripts qui prennent une certaine entrée, la transforment en sortie, puis la quittent (et ne reçoivent aucune entrée de nulle part ailleurs pendant le processus). La manière procédurale est beaucoup plus propre dans ces cas.

Un exemple typique de cela est de forcer la POO dans les scripts PHP.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X