Question

J'ai souvent entendu dire que les objets ne sont pas livrés en termes de réutilisation de code. Êtes-vous d'accord? Si vous croyez qu'ils ont pas, pourquoi pas?

Était-ce utile?

La solution

Non, pas nécessairement.

Les objets offrent une meilleure sémantique, organisation de code / fonctionnalités et, éventuellement, la facilité d'utilisation.

Et bien conçu bibliothèques tenir la promesse de la réutilisation de code, les objets non en soi.

Autres conseils

Honnêtement, je ne sais pas si « la réutilisation de code » est vraiment ce que tout le monde est après (ou du moins, devrait être après). Ma philosophie est « composants logiciels », ce qui signifie une meilleure maintenabilité grâce à de bonnes interfaces et éviter le couplage inutile. « La réutilisation de code » est l'une des choses qui tombe de ce parfois - le code inutilement double emploi est un signe que vous avez organisé les choses dans le mauvais sens et bien sûr, il est une douleur à maintenir.

Pour répondre à la question un peu plus directement, il y a une collection de jolis bons outils pour éviter de vous répéter: l'héritage, les traits, la délégation, des fonctions d'ordre supérieur, etc. Parmi ceux-ci, les gens ont tendance à confondre l'héritage avec OO dans son ensemble - et ils ont aussi tendance à abuser un peu, si vous me demandez. Peut-être que lorsque certains des « OO Sucks » ambiance vient de: trouver l'héritage coincé où il n'a pas le droit naturel d'être:)

Non, le code n'ont pas fait « objets » réutiliser plus facile ou plus fréquente. Les mêmes préoccupations qui empêchent le code d'être réutilisés dans un programme modulaire (la conception, les tests et la documentation d'une API polyvalente exige beaucoup plus d'effort avant vers le haut-que d'écrire un unique routine, et la prise de tous les métiers peuvent être maître de rien - logique destiné à être réutilisé ne peut pas être bien optimisé pour les utilisations, il est effectivement mis à) appliquer aux programmes OO, avec le souci ajouté qu'un modèle d'objet mal conçu peut entraver la réutilisation d'ailleurs réutilisable code.

OO est une abstraction pratique pour un bon nombre de problèmes, mais méfiez-vous de hype « 80s-90s: il ne résout pas comme par magie les problèmes fondamentaux de notre métier plus que cela fait des gaufres pour vous pendant que vous dormez <. / p>

Je ne pense pas tous les objets pour être réutilisés, mais nous avons beaucoup d'objets que nous réutilisons sur de nombreux projets. Nous avons aussi des objets qui vient se sur un projet réutilisés. Nous allons souvent consommer les mêmes objets métier (ou objets de transfert de données) ainsi que des objets logique métier à un clic Une fois l'application de bureau, une application Web et une application de téléphone tout pour le même projet.

Où avez-vous entendu dire que OO ne délivre pas sur la réutilisation? Et quel était le raisonnement? Peut-être la conception de leurs objets les a forcés dans cette situation ...

Certains programmeurs copier-coller dans toutes les langues et le style.

Vraiment de bons programmeurs peuvent éviter la plupart copier et coller dans presque toutes les langues.

Je trouve les modèles OO ont tendance à encourager la réutilisation. Je l'ai vu du code Java qui a été écrit dans un style non-OO (où les données ont été séparés du code en raison de merdique ORM) et la réutilisation était vraiment misérable - mais en OO les mêmes programmeurs fait un meilleur travail à la conception ( et la réutilisation).

De même dans les cas où nous utilisons des modèles non-oo oo ou anti-bagouts tels que setters / getters, les états de commutation, les classes internes anonymes, d'énormes fonctions et comme je l'ai vu réutilisation de code descendrons, et passe-partout MONTER .. .significantly.

ps. Je sais que les gens ont des problèmes avec le paragraphe précédent, donc je vais vous expliquer un peu.

Setters et Getters pour causer des problèmes de OO, car ils vous permettent d'agir sur les membres d'un objet (un objet doit manipuler ses membres propres) Cela permet de répartir le code qui fonctionne sur votre classe tout au long d'autres classes qui vous oblige à copier la fonctionnalité dans le setter / getter. Cela vaut aussi bien aux propriétés -. Simplement parce que les propriétés sont plus faciles ne les rend pas « bon » dans toutes les situations

Le code dans les classes internes anonymes ne peuvent pas être réutilisés à tout et les gens oublient que beaucoup de choses (comme les auditeurs) peuvent et doivent être des classes à part entière - cela s'applique à la fermeture aussi bien! Si vous avez utilisé une classe interne anonyme pour mettre en œuvre quelque chose comme un auditeur, vous êtes beaucoup plus susceptibles de copier juste et coller l'implémentation que d'extraire le code dans une méthode ou sa propre classe et appeler à la place. Les fermetures peuvent également améliorer la réutilisabilité -. Tout dépend de la façon dont vous les utilisez

Dans de nombreux cas, les fonctionnalités disponibles pour vous façonner la manière dont vous structurez votre code. OO est encore plus puissant quand il vient à vous aider à visualiser tout votre code et comment il interagit, mais c'est une autre question.

Les objets ont plus la capacité de livrer la réutilisation de code qu'un stairclimber ou tout autre équipement de conditionnement physique peut offrir une perte de poids. Les développeurs doivent être motivés à utiliser des outils correctement.

Une fois que les équipes logicielles accordent plus d'importance sur la réutilisation du code testé qu'ils ne le font pour garder tous les détails dans leur tête, vous verrez beaucoup plus d'objets à grains fins et méthodes et donc plus la réutilisation du code.

Oui

POO vous donne plus de moyens de code de réutilisation

Non

il n'y a pas de solution miracle

Il dépend

sur ce que vous mettez, et ce que vous attendiez en retour!

Oui. Bonne programmation orientée objet favorise la séparation des préoccupations, couplage faible, une forte cohésion, et se cacher de l'information. Ces choses sont essentielles à un code réutilisable.

Je dirais que le principal avantage de la POO est la modularité et modifiabilité, plutôt que la réutilisation, mais c'est une autre question.

Les objets permettent de re-poursuivre en justice le code, mais en tant que tel n'est pas la technique la plus pour cela. Je pense que le code de réutilisation est favorisée par l'objet des techniques connexes telles que l'héritage, le polymorphisme, la surcharge et les modèles.

Oui, ils le font, la possibilité d'étendre (Hériter) à partir d'une super classe Cleary contribue à la réutilisation du code, je ne sais pas comment on pourrait prétendre le contraire. Vous pouvez simplement étendre une classe et remplacer une méthode, tout en utilisant le reste de la super classe, si ce n'est pas dans le code re aidait utiliser alors je ne sais pas ce qui est

Si elle est qu'ils ont livré leur promesse de réutilisation de code à ce jour? Oui, si les programmes écrits avec POO à l'esprit appliquent des modèles de conception à bon escient. Dans le cas contraire, la plupart du temps pas. Mais en regardant la popularité des programmes à grande échelle non triviales que les systèmes Adobe, Google et autres écrire avec C ++ ou Java ou d'autres langages de POO, je dirais POO a un long chemin à parcourir avant phases sortir. Ce temps sera beaucoup mieux adapté à poser cette question et pourrait aider à fournir un travail de terrain pour un nouveau paradigme.

Licencié sous: CC-BY-SA avec attribution
scroll top