Bonsoir � tous,
Analyste d�veloppeur orient� POO (Java essentiellement) et DB Oracle (PL/SQL), j'utilise et appr�hende depuis plusieurs mois le langage Javascript.
Pour un projet commen�ant � prendre de l'importance, je m'efforce de nettoyer les erreurs maladroites et mauvaises pratiques qui se trouve dans le code.
Un des points important �tant l'utilisation de fonction globales...
Seulement, apr�s �norm�ment de temps passer � lire sur ce sujet, j'ai appris de nombreuses choses mais certains avis semblent en contradiction et ma vision n'est toujours pas tr�s claire quant � la syntaxe � adopter.
Pour m'aider, pourriez-vous me donner votre avis sur le petit exemple de code ci-dessous (qui fonctionne mais n�cessite la librairie jquery layout). Est-il correct d'un point de vue bonne pratique? Si non, pourquoi et comment l'�cririez-vous?
fichier loadcore.js
fichier layout.js
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9 var ns_app = ns_app || {}; ns_app.createNS("ns_app.core"); $(document).ready(function () { var layout = new ns_app.core.JQUILayout(true); layout.defineMainLayout(); });
Ce qui me parait n�cessaire dans le code si j'ai bien compris les bonnes pratiques :
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10 (function($) { ns_app.core.JQUILayout = function(defStyles) { this.defStyles = defStyles; } ns_app.core.JQUILayout.prototype.defineMainLayout = function() { $("body").layout({ applyDefaultStyles: this.defStyles }); } })(jQuery);
- l'utilisation de namespaces (en l'occurence deux niveaux ici).
- l'utilisation de prototype pour ne pas dupliquer les instances de m�thodes.
- l'utilisation d'une fonction anonyme ex�cut�e automatiquement pour limiter la port�e du code.
Ce qui me d�range d'apr�s ce que j'ai lu (mais peut-�tre mal compris) :
- on conseille de toujours pr�c�der la d�claration d'une fonction ou d'une variable par var, mais cette notation ne le permet pas (var ns_app.core.JQUILayout = function... ne fonctionnera pas).
- Cette syntaxe permet-elle d'avoir des variables et m�thodes priv�es? Si oui comment? ou le tout est-il priv�? Dans quel cas comment rendre une partie publique?
- On d�conseille l'utilisation de new pour cr�er un nouvel objet, mais je ne vois pas comment me passer de :
Code : S�lectionner tout - Visualiser dans une fen�tre � part var layout = new ns_app.core.JQUILayout(true);
Beaucoup d'exemples utilisent la notation litt�rale, mais il me semble que cette syntaxe ne permet pas l'utilisation de prototype et donc induit le duplication des m�thodes.
Qui plus-est, je souhaite pouvoir s�parer le code d'un m�me sous-namespace (ns_app.core) en plusieurs fichiers. Et il ne me semble pas avoir vu de solution avec cette notation.
Voil�, cela me serait d�j� d'une aide pr�cieuse si vous pouviez m'�clairer par rapport � tout cela. Et si vous remarquez d'autres choses � �viter, n'h�sitez pas � le signaler.
Un grand merci d'avance.
Max.
Partager