En Javascript, que signifie ce trait de soulignement?




oop backbone.js (4)

var Gallery = Backbone.Controller.extend({
    _index: null,
    _photos: null,
    _album :null,
    _subalbums:null,
    _subphotos:null,
    _data:null,
    _photosview:null,
    _currentsub:null,
    routes: {
        "": "index",
        "subalbum/:id": "subindex",
        "subalbum/:id/" : "directphoto",
        "subalbum/:id/:num" : "hashphoto"
    },
    initialize: function(options) {
        var ws = this;
        if (this._index === null){
            $.ajax({
                url: 'data/album1.json',
                dataType: 'json',
                data: {},
                success: function(data) {
                    ws._data = data;
                    ws._photos =
                    new PhotoCollection(data);
                    ws._index =
                    new IndexView({model: ws._photos});
                    Backbone.history.loadUrl();
                }
            });
            return this;
        }
        return this;
    },
    //Handle rendering the initial view for the
    //application
    index: function() {
        this._index.render();
    },

Je suis en train de lire un tutoriel sur backbone.js ici: http://addyosmani.com/blog/building-spas-jquerys-best-friends/

Quels sont les traits de soulignement? (_index, _photos, _album) Pourquoi les utiliser?


Cela signifie des champs privés ou des méthodes privées. Les méthodes qui sont seulement pour usage interne.

Ils ne devraient pas être invoqués en dehors de la classe.

Les champs privés contiennent des données à usage interne.

Ils ne devraient pas être lus ou écrits (directement) de l'extérieur de la classe.

Il est très important de noter que le simple fait d'ajouter un trait de soulignement à une variable ne le rend pas privé, c'est seulement une convention de nommage.


Comme mentionné, c'est une pratique parmi de nombreux développeurs, un mauvais à cela. Si vous devez recourir à des conventions comme celle-ci dans vos méthodes de programmation, vous devriez apprendre la langue, les méthodes et les modèles avant de tenter d'utiliser la langue. Si quelqu'un ne peut pas faire la distinction entre les méthodes publiques / privées dans votre code sans l'utilisation du "trait de soulignement", alors vos compétences en documentation sont extrêmement insuffisantes. Beaucoup de projets publics sur le web sont très mal documentés, ce qui explique probablement pourquoi les conventions de «soulignement» étaient «acceptées» par la plupart des développeurs éduqués tandis que d'autres décidaient de suivre le courant plutôt que de conserver les modèles et méthodes formels. Il y a une raison pour laquelle "underscore" n'a pas été écrit dans les versions ES6 / 7.

Dans un blog, je suis récemment tombé sur un responsable de l'ingénierie logicielle qui a déclaré: « La convention de dénomination de soulignement rend très facile de dire, en un coup d'œil, si une fonction variable est destinée à être publique ou privée . Ma réponse est: "Les commentaires sont comme des images, dans ce cas ils valent mille sous-entendus.

Il existe un outil de documentation gratuit appelé Doxygen. Bien qu'il ne supporte pas spécifiquement JavaScript, il peut générer une documentation professionnelle pour vos applications JavaScript lorsque vous utilisez les préfixes Doxygen dans vos commentaires. Il est très simple de créer des applications JavaScript avec de la documentation, tant pour les développeurs que pour les utilisateurs lorsque vous mettez un peu d'effort dans vos commentaires de code.

Rappelez-vous, il existe des outils qui peuvent supprimer les commentaires et des instructions de console pour les "versions de production". Cela étant dit, l'utilisation des cartes sources est également une perte de temps et de ressources. Ne minimisez pas jusqu'à ce que vous soyez prêt à publier .. ie Construire le Dev (pas de minification, conserver les commentaires et les consoles), Construire la version (supprimer les commentaires, et les consoles et réduire la version Dev. code de qualité, il suffit de le préparer pour la publication et de le déployer).


Il est probablement utilisé pour marquer les propriétés internes / privées. Tout comme en python, préfixer une variable avec un underscore est un moyen facile de dire aux développeurs qu'une variable est interne et mieux vaut ne pas l'altérer (et s'ils le font, même une mise à jour mineure de la bibliothèque concernée peut casser des choses).


Lorsqu'il est utilisé comme _varname il fait juste partie du nom des variables et n'a pas de signification javascript. Les développeurs l'utilisent pour indiquer la signification ou la portée de la variable. Dans ce cas, il semble que le développeur doive indiquer que cette variable doit être une variable locale ou privée.

Quelques points à noter, dans cet exemple particulier en utilisant _.varname signifierait une variable ou une fonction avec la bibliothèque underscore.js. De plus, on pourrait utiliser _varname pour signifier une variable contenant un objet de soulignement, de même dans notre bureau, nous utilisons $varname pour indiquer une variable contenant un objet Jquery.





backbone.js