mercredi 4 décembre 2013

Qu'est ce qu'un bon code objet?

A moins de vivre dans une grotte souterraine, retenu par un troll exhibitioniste à la recherche d'une vierge, vous devez actuellement avoir adopté la poo (programmation orientée objet) dans vos applications php ou autres.

Adopter la poo c'est bien, mais, au fil de mon expérience, je me suis rendu compte que très peu de développeurs, même après 10 ans d'expérience savent réellement décrire ce qu'est un bon code objet.

Pour preuve, prenons l'exemple de php, dans ce langage (et d'autres aussi), il est traditionnellement admis (à tord), qu'un objet est une classe regroupant un ensemble de méthodes, et que pour utiliser cet objet, il suffit de le construire et de faire appel à ses méthodes!
Monumentale erreur cher philosophique, ceci est une vision unilatérale abstraite de la poo.

Un objet en programmation est identique à un objet de la vie réelle.
Pour bien coder objet, il est nécessaire de comprendre l'intéraction avec les objets du quotidien qui nous sont utiles.

Cas concret : notre téléphone portable.

Un téléphone portable n'est rien d'autre qu'un ensemble de composants dont l'utilité première est de nous permettre de communiquer avec autrui, à distance.
L'intéraction entre humains, à distance, est donc le but de l'existence de notre objet. Sans intéractions il n'y a pas de notion d'objet, et celà doit être pareil en programmation (une classe qui ne communique qu'avec elle même n'est pas un objet).

Mais comment notre téléphone portable intéragit-il avec nous?

Notre téléphone portable peut avoir une taille et une forme variables, il peut avoir un clavier physique ou non, une antenne externe ou non, c'est ce qu'on va appeler les propriétés de notre objet.
Par contre, il va implémenter ce qu'on appelle, une interface graphique (visuelle) qui va nous permettre d'utiliser ses composants pour mieux communiquer.
Dans nos smartphones modernes, cette interface va prendre la forme d'un os (Android, Ios, Windows phone etc...). Il peut y avoir des milliards d'interfaces différentes, mais toutes auront le même objectif final... communiquer.
Une interface implémente elle même x interfaces pour communiquer avec ses interfaces.

Un bon code objet est donc, un ensemble de méthodes (classe) implémentant des interfaces, pour communiquer dans un seul objectif.

Ce qui nous ramène aux principes de bon sens SOLID, que je vous invite à découvrir ici http://philippe.developpez.com/articles/SOLIDdotNet/.

Edouard Kombo

Aucun commentaire:

Enregistrer un commentaire