Bonnes pratiques pour la POO en Javascript

Version imprimable

tout dépends de ce que tu fais et pour qui tu le fais. pour une appli interne sur un intranet avoir des fichiers multiples n'est pas un pb
si tu est sur internet pour une appli grand public mieux vaut un seul fichier.

reste donc comment organiser sont travail et ça, ça ne relève pas de bonne pratique d'un langage mais d'une méthode de travail.

dans le premier cas tu vas prendre tes fichier js et les mettre sur ton serveur
dans le deuxième tu vas prendre un outil qui prendra tes fichier JS et en fera un seul fichier (ex sencha cmd)
Citation:

Envoyé par piemur2000 Voir le message

J'ai trouvé des personnes conseillant d'utiliser minimize pour faire un seul fichier avec les différents fichiers sources. D'autres conseillent d'utiliser des modules avec require.js...

Pour être plus concret je suis en train de m'amuser avec processing.js pour faire du rendu dans un canvas. En programmeur habitué a la POO traditionnelle je pensais faire une interface commune pour toutes mes entitées Drawable, puis définir des entités de bases genre Circle, Square, Polygon... Comment feriez-vous cela en Javascript?

exactement comme en java c++ python, tcl, xLisp, smalltalk, Ada, objective-C ou Pascal pour les quelques qui me viennent à l'esprit
perso quelque soit le langage putôt que qu'une interface je ferais une classe de base. donc en JS je ferais un prototype.

ce qu'il faut bien comprendre avec JS c'est que les objets peuvent savoir des attributs et des méthodes qui ne sont pas héritées.

on peut voir ça comme des références en C++
on peut dynamiquement ajouter ou enlever des référnence à un objet.
du coup les interfaces n'ont pas de sens. par simple affectation de methode et d'attribut on peut implémenter un héritage multiple.

imagine que tu ais des classes qui hérite d'une classe mathématique Geometric qui est la classe mère des forme géométriques. tes classes Circle Rect héritent au travers de cette classe des notion mathématiques de géometrie.

puis tu as à côté un ensemble de classes pour faire du dessin la classe de base étant Drawable. elle contient tout le nécessaire pour gérer un caneva et dessier dedans.

il te suffit de faire hérité Circle de Géométric et de Drawable pour avoir accès à toutes les propriétés de Geometric et de Drawable.

alors qu'avec C++ et Java tu ne peut avoir qu'un héritage simple. du coup pour rendre tes classe Circle et Rect dessinable tu fait une interface et dans chaqu'une tu implemente toute les méthodes nécéssaires.
avec l'héritage multiple ce n'est plus nécéssaire.

avec la possibilité d'ajouter ou de retirer dynamiquement des méthodes ou des attributs il n'est plus possible de se baser sur les "Classes" ou "Interfaces" pour savoir de quoi est capable un objet. les opérateur de type "instance of" de java qui permet de savoir si un objet possède certaine capacité n'est plus sufisant. la capacité a pu être supprimé.

à la place il suffit de tester directement l'existance de la méthodes et sa nature.

A+JYT