28 votes

Quels sont les avantages de la programmation OO ? Cela m'aidera-t-il à écrire un meilleur code ?

Je suis un PHPer, et je n'écris pas de code orienté objet.

Quels sont les avantages de l'OO par rapport au code procédural, et où puis-je apprendre à appliquer ces idées à PHP ?

42voto

Paweł Hajdan Points 8004

Cela ne vous aide pas automatiquement. Vous pouvez écrire des programmes "OO" pires que des programmes structurels, et vice versa. La POO est un outil qui vous permet de créer des abstractions plus puissantes.

  • Comme tout outil puissant, il faut l'utiliser correctement.
  • Comme pour tout outil puissant, il faut du temps pour apprendre à l'utiliser correctement.
  • Comme avec tout outil puissant, vous ferez des erreurs.
  • Comme pour tout outil puissant, vous devrez beaucoup vous entraîner.
  • Comme pour tout outil puissant, vous devez vous documenter sur le sujet et lire ce que les autres en pensent. Apprenez des autres.
  • Mais, comme pour tout outil puissant, il y a des gens qui en font un mauvais usage. Apprenez à ne pas apprendre d'eux les mauvaises pratiques. C'est difficile.

0 votes

Pourriez-vous nous donner un petit extrait de code non oo, et ce même code en oo ?

0 votes

Brad : J'ai peur qu'un petit extrait puisse conduire à des conclusions erronées. Sur de petits exemples, les deux méthodes sont plus ou moins "identiques" en termes de qualité. Cela fait une différence lorsque vous commencez à concevoir des systèmes plus importants exprimables en termes OO. Notez qu'il existe de nombreux grands programmes qui ne sont pas OO. Les bons.

23voto

Joel Coehoorn Points 190579

Les objets permettent d'isoler votre code entre les différentes sections, de sorte que si vous devez apporter une modification à une section, vous pouvez être sûr qu'elle n'affectera pas les autres sections : couplage lâche.

Ensuite, lorsque vous aurez fait cela pendant un certain temps, vous commencerez à constater que les objets que vous avez créés pour une application sont également utiles dans d'autres, et vous commencerez à mieux réutiliser le code. Ainsi, la nouvelle application a déjà fait une partie du travail et utilise un code éprouvé : les logiciels sont construits plus rapidement avec moins de bogues.

13voto

skaffman Points 197885

Les gens vous diront différentes choses sur la POO, selon différents points de vue. Mais si vous voulez vous faire votre propre opinion, plutôt que de prendre celle de quelqu'un d'autre, je vous suggère de lire "Object-Oriented Software Construction" de Bertrand Meyer.

Essentiellement, il prend des techniques de programmation non-OOP, et analyse leurs défauts de base. Il dérive ensuite une technique alternative qui corrige ces défauts. En d'autres termes, il dérive la POO à partir des premiers principes. C'est un travail merveilleux et très convaincant.

Lisez-le, vous apprendrez le pourquoi, le quand et le quoi d'une manière que vous pourrez étayer par un raisonnement.

1 votes

Vous êtes donc en train de dire qu'au lieu d'écouter les opinions de nombreuses personnes de SO, il devrait seulement écouter celles de Meyer... non pas qu'il y ait quelque chose de mauvais dans cette approche, mais je n'appellerais pas cela "se faire sa propre opinion".

0 votes

En passant, je vais trouver et lire le livre que vous avez suggéré :)

0 votes

C'est vrai, mais Meyer ne se contente pas de vous donner son opinion, il présente la POO comme le résultat final d'un exercice de dérivation. Elle apparaît en quelque sorte à la fin.

8voto

Dan Udey Points 1994

Les objets aident à encapsuler la complexité. Pour la plupart des programmes PHP, il est impossible d'écrire un bon code propre pour toute application raisonnablement compliquée. Ecrire du PHP OO vous aide à mettre ce code dans sa propre boîte, l'isolant de tout le reste. Cela a plusieurs avantages.

  1. Tant que votre objet a des entrées et des sorties clairement définies, la façon dont il fait ce qu'il fait n'a aucune importance - le stockage/la récupération des données peut passer d'un fichier plat à XML, à memcache, à MySQL ou à Oracle, et vous ne devez jamais vous préoccuper que d'un seul objet.
  2. Tant que votre objet a des entrées et des sorties clairement définies, vous pouvez le remplacer complètement par un autre objet qui a les mêmes entrées/sorties. Décidez au moment de l'exécution si vous voulez des requêtes MySQL, Postgres, memcached, ou des requêtes HTTP POST/GET vers un serveur sommaire en Indonésie.
  3. L'OO facilite les tests unitaires. Si vous pouvez définir ce qu'un objet spécifique doit faire (c'est-à-dire quels résultats il doit donner pour une entrée donnée), vous pouvez facilement écrire du code pour tester des milliers de valeurs par rapport à ce code et vérifier les résultats, et vous saurez instantanément si quelque chose est cassé.
  4. Plus vous "cachez" votre code dans des objets, moins vous aurez à le voir lorsque vous utiliserez cette fonctionnalité. J'ai écrit une fois une application de sondage en PHP qui gérait tous les aspects du sondage - interaction avec la base de données, génération du sondage, vote, classement, tri et affichage - et je n'avais besoin que d'une seule ligne de code sur mon site web ( Poll::Display() ) pour mettre en œuvre l'intégralité de ce que l'application pouvait faire - ce qui a rendu la maintenance de ma page d'accueil beaucoup plus facile.

Gardez une chose à l'esprit : l'OO en PHP (même en PHP5) n'est pas un très bon OO comparé à un langage comme Python ou Ruby. En tant qu'ancien programmeur PHP (et ingénieur Zend doublement certifié), je recommande fortement d'explorer l'OO de Python si vous voulez comprendre ce qu'est l'OO. Cela vous aidera à écrire un meilleur code PHP, à tout le moins.

0 votes

C'est vrai, c'est vrai que le PHP OO est un après-coup étrange. Bon, je sais que vous ne dites pas ça, mais +1

7voto

Bill K Points 32115

Oui, si tu le comprends vraiment.

Il vous aide à visualiser comment les parties d'un système plus vaste peuvent interagir les unes avec les autres. C'est très utile au niveau de la conception.

Si vous n'écrivez que quelques lignes de code, le seul avantage que vous en tirerez est qu'il est généralement un peu plus facile d'utiliser une bibliothèque décomposée en objets bien conçus que de simples fonctions.

Pour en faire bon usage, vous devez également respecter de bonnes pratiques de conception OO. Toujours encapsuler TOUTES vos données, utiliser de nombreuses petites classes, jamais de grandes classes "fourre-tout". Faire en sorte que la classe fasse le travail à votre place au lieu de lui demander des données et de faire le travail en dehors de la classe, etc.

Il ne vous sera probablement pas d'un grand secours pendant un certain temps, et peut-être même jamais si vous faites toujours de petits sites web (je ne peux pas en être sûr, je ne fais pas vraiment de php), mais au fil du temps et sur de grands projets, il peut être inestimable.

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