Convenzioni di denominazione Javascript


12

Vengo da Java e sono nuovo a JavaScript. Ho notato molti metodi JavaScript che utilizzano nomi di parametri a carattere singolo, come nell'esempio seguente.

doSomething(a,b,c)

Non mi piace, ma un altro sviluppatore JavaScript mi ​​ha convinto che questo è fatto per ridurre le dimensioni del file, notando che i file JavaScript devono essere trasferiti al browser.

Poi mi sono ritrovato a parlare con un altro sviluppatore. Mi ha mostrato il modo in cui Firefox troncerà i nomi delle variabili per caricare più velocemente la pagina. È una pratica standard per i browser Web?

Quali sono le conversioni di denominazione delle best practice da seguire durante la programmazione in JavaScript? La lunghezza dell'identificatore conta e, in caso affermativo, fino a che punto?


13
Dubito fortemente che i browser cambino i nomi delle variabili. In presenza di eval, non è sicuro (sì, evalè orribile, ma fa parte dello standard e non si elimina la compilazione standard per un'ottimizzazione) e non aiuta minimamente a ridurre il traffico - avresti comunque invia il file completo.

4
Ho visto spesso sviluppatori discutere dei vantaggi dei nomi di variabili brevi. Non ascoltarli. Questa è quasi sempre una scusa per "Sono troppo pollice per inventare un buon nome" o "Sono troppo pigro per scrivere tanti personaggi".
Doc Brown,

@DocBrown: Anche a me non piaceva. Dal momento che non sono un esperto di JavaScript, voglio conoscere le migliori pratiche.
ManuPK,

Alla fine della giornata si parlava forse di dati aggiuntivi del valore di 50-100 KB per utilizzare nomi di metodi significativi? Se 100 KB causano un problema di velocità, non vale la pena provare a risolverlo, perché non un pool abbastanza grande di utenti sperimenterà quel problema.
Ramhound,

Risposte:


26

Scoprirai che gli stessi sviluppatori non usano nomi di variabili brevi. Durante lo sviluppo, utilizzano nomi di variabili significativi e dettagliati.

Quindi , nel processo di compilazione / rilascio, il codice che hanno scritto viene eseguito attraverso un minificatore / offuscatore con l'intenzione di ridurre al minimo le dimensioni del file, come best practice per velocizzare un sito Web. Questo è un passaggio facoltativo se ti interessa così tanto delle prestazioni. La maggior parte dei piccoli siti Web non lo fa.

Come sviluppatore, non dovresti preoccuparti del processo di minificazione / offuscamento; scrivi il tuo codice in modo che sia leggibile, significativo, ben documentato e ben strutturato. Quindi se ti preoccupi così tanto delle prestazioni (opzionale, non dimenticare!), Inserisci un minificatore / offuscatore nel tuo processo di rilascio per minimizzare il codice (rimuovi spazi bianchi, nuove righe, commenti ecc.) E offuscalo (es. Accorciare la variabile nomi). Un buon articolo che spiega offuscamento e minificazione può essere trovato qui .

Inoltre, Desktop FireFox non tronca il periodo dei nomi delle variabili . Il troncamento dei nomi delle variabili è lì per accelerare il download della pagina. Quando FireFox ottiene il file, è già stato scaricato, quindi non è necessario farlo. Il tuo amico potrebbe eseguire un plug-in che lo sta facendo; nel qual caso, digli di disinstallarlo, perché è inutile.

Per il completamento, alcuni browser (mobili) hanno la possibilità di utilizzare server intermedi, che intercettano le risposte delle risorse richieste e le comprimono per te (che potrebbe includere la minimizzazione dei file JavaScript). Si noti che la compressione viene eseguita sul server (cioè prima di aver scaricato la pagina), quindi il potenziale vantaggio di scaricare un file più piccolo, anziché nel browser dopo aver già scaricato il file (come suggerito nella domanda). Tali browser mobili includono Opera Mini e le versioni più recenti di Google Chrome (almeno su iOS; non sono sicuro di Android). Per maggiori informazioni, vedi qui .


11

No, non tutti i browser accorceranno automaticamente JavaScript per migliorare le prestazioni.

Tuttavia, nel caso di JavaScript, non dovresti sacrificare la leggibilità / manutenibilità del codice per ottenere vantaggi in termini di velocità di elaborazione o sicurezza poiché esistono strumenti chiamati offuscatori e altri strumenti chiamati shinker (o compressori) progettati per questo scopo.

Ricorda, non pre-ottimizzare. Se la tua pagina si sta caricando abbastanza rapidamente e non hai contenuti troppo sensibili nel tuo JavaScript, non preoccuparti. Assegna un nome alle variabili con nomi significativi. La leggibilità del codice è estremamente importante per la manutenibilità e raramente dovrebbe essere sacrificata.

Se desideri un riferimento ad alcuni buoni JavaScript convenzioni di codifica, mi consiglia di utilizzare questi .



1

Ho lavorato in JavaScript per molto tempo.

Avevamo uno standard di denominazione che dovevi usare la notazione ungherese per tutte le variabili.

Sembrava funzionare bene. So che ci sono casi contro l'utilizzo, ma ha funzionato bene per noi. Soprattutto quando hai enormi file JavaScript in cui devi trovare cose.

Vorrei mettere in guardia contro l'ottimizzazione prematura. È molto probabile che tu finisca con un codice disordinato che in realtà non funziona molto più velocemente.


5
Notazione ungherese? Questa è la vecchia scuola. La notazione ungherese è un vecchio relitto di sviluppo e nel tempo non è più raccomandato.
Smokefoot,

2
Tendo a usarlo un po ', ma solo per i valori racchiusi da jquery, quelli che inizierò con $. Il problema con la notazione ungherese è che le persone erano solite dire in termini di "int" vs "String" e non in termini di semantica di un programma
Zachary K

"Soprattutto quando hai enormi file JavaScript dove devi trovare cose." -- Ti sento. Ma la notazione ungherese è solo un cerotto ... non aiuterà a lungo termine, confonderà solo quando è necessario cambiare il tipo di qualcosa, ma non si ha il tempo di cambiare tutti i prefissi variabili. Automatizzare tutto ciò in cui GWT entra nella propria IMO.
funkybro,

1
Non compro necessariamente usando la notazione come "rottura" degli aspetti vagamente tipizzati del linguaggio. Certo, dovresti cambiare il nome quando cambi il tipo, ma sarebbe comunque una buona cosa fare in modo da poter tenere traccia di ciò che stai facendo. So che ci sono aspetti brutti. Ma, se hai mai lavorato in un progetto LARGE (sto parlando di centinaia di migliaia di righe di codice) in un linguaggio liberamente scritto, può aiutarti a trovare la strada più veloce in determinati casi. Dire che è datato, ecc., In realtà non risolve il problema principale che l'OP stava cercando di risolvere.
Alan Delimon

1
La notazione ungherese è una di quelle cose che la gente respinge immediatamente senza capire veramente il perché. Si trova nella stessa categoria in gotocui le persone ripetono insensatamente il mantra 'non usare goto ... non usare goto ...' . La realtà è che è solo uno strumento nel tuo toolkit. Come ogni strumento ha situazioni in cui è utile e situazioni in cui non è così utile (o addirittura dannoso). È come se qualcuno avesse avuto una brutta esperienza nel provare a vedere un pezzo di legno con un martello, e poi ha proclamato "non usare mai i martelli, seghe molto meglio!" . Le generalizzazioni generali sono sempre sbagliate
MattDavey,

1

La lunghezza dell'identificatore non ha importanza. Come affermato da altri, in produzione è possibile utilizzare la minimizzazione per ridurre i tempi di download degli script. In effetti, dovrebbe essere seguita una convenzione di codifica / denominazione accettabile, soprattutto perché JavaScript è un linguaggio bizzarro e per così tanto tempo JavaScript è stato trascurato come una cosa solo per portare a termine il lavoro. Se stai cercando un posto per la convenzione di denominazione, la Guida di stile JavaScript di Google è un buon posto. Suggerisce,

  • functionNamesLikeQuesto, ad esempio, getCashbackData () {}
  • variabileNamesLikeQuesto, ad esempio, var alertInterval = 10;
  • ClassNamesLikeQuesto, ad esempio, var CustomerOrder = {getOrderLines: function () {}}
  • EnumNamesLikeThis, ad esempio var ColorOfChoice = {White: "#FFFFFF"}
  • methodNamesLikeQuesto, ad esempio, var CustomerOrder = {getOrderLine: function () {}}
  • SYMBOLIC_CONSTANTS_LIKE_THIS, ad esempio var EPOCH_UNIX = "01011970"

Hai altro da aggiungere, quindi un mucchio di link? Voglio dire, non spieghi nemmeno chi è Douglas Crockford.
Ramhound,

0

Infuriato dalla filosofia dello "sviluppatore di codice pulito" (e dato che ora sai dai post di cui sopra che a causa della riduzione delle dimensioni dei nomi delle tue variabili non avrà alcun impatto sulle prestazioni) potrei solo consigliare:

  1. Trova l'IDE migliore per le tue esigenze di sviluppo personale che ha un discreto completamento automatico e funzionalità di intellisense, come aptana, netbeans, eclipse (tutto gratuito) o uno dei numerosi prodotti commerciali (se avessi un gioco libero, avrei guarda i prodotti JetBrains)
  2. Scrivi il tuo codice in modo da rendere superfluo qualsiasi commento. Ciò significa, invece di scrivere

    getXy(e) { return [e.pageX, e.pageY ] }

    che potrebbe significare qualsiasi cosa (specialmente in un linguaggio impazzito tipicamente vagamente come js;) fai esprimere il codice stesso

    getPageCoordinatesFromEvent(event) { 
        return [event.pageX, event.pageY ];
    }

    In un buon IDE, in genere non si digita mai alcun nome di variabile che duri due volte - secondi ogni volta che si digita qualche lettera e si preme semplicemente Invio dal completamento automatico. Se insisti a scrivere ogni personaggio da solo, un buon IDE ti noterà comunque un errore di battitura. Questo è solo un esempio molto superficiale, quindi suggerisco fortemente (non come una forma di critica ma come una raccomandazione onesta) che tu

  3. Ottieni i libri "Clean Code" di Robert C.Martin e "Pragmatic Programmer" di Hunt / Thomas e non farti mai più questo tipo di domande: sarai troppo impegnato a lavorare su un server di integrazione continua per automatizzare il noioso test -, e costruisci parti del processo di sviluppo (inclusa la minimizzazione) e concentrati sulla parte divertente, scrivendo un codice chiaramente comprensibile che faccia grandi cose!

PS Se hai bisogno di metterti al passo con lo sviluppo di un codice javascript all'avanguardia, dai un'occhiata al libro di John "Mr. jQuery" Resig su "Pro Javascript Techniques" subito dopo o insieme a quanto sopra.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.