JavaScript punto e virgola meno codice stile e minimizzazione?

Sto cercando di decidere se vale la pena di andare con JavaScript punto e virgola meno stile.

Se ho il codice JavaScript senza punto e virgola:

function(){
    var first = 1
    var second = 2
    sum = 1 + 2
    return sum
}

funziona nel browser e Node.js.

Ma minified (da Uglify o Chiusura Del Compilatore), codice di lavoro nel browser e Node.js?

Ho letto l’articolo Il punto e virgola in JavaScript sono opzionali. si dice che dovrebbe funzionare.

  • La minimizzazione dovrebbe aggiungere un punto e virgola dove necessario, se solo per sostituire gli “a capo”.
  • Potrebbe dipendere da come il minifiers lavoro.
  • scendere la sua ; chiave! (perché appuntito, le cose sono spesso taglienti)
  • Utilizzando non il punto e virgola in una lingua che è praticamente la sintassi di ogni singolo riccio-graffe-e-il punto e virgola lingua non rendere il codice sembrare più pulito! Mentre io odio il CoffeeScript sintassi potrebbe essere qualcosa che vale la pena dare un’occhiata per voi…
  • Qui c’è un interessante thread sull’argomento (tra cui crockford arrabbiarsi): github.com/twitter/bootstrap/issues/3057
  • Io sto con @ThiefMaster: non piace coffeescript sintassi. Le uniche persone che posso immaginare, pensando che il codice sembra cleaner senza il punto e virgola sono BASIC e COBOL gli sviluppatori, con un nome come WHITECOLOR, non sarei affatto sorpreso se ho ragione sul tuo background ;p)
  • ha ha beh, io non avrebbe fatto male a nessuno
  • Ho intenzione di chiedere ECMA per rendere il ; un requisito alla fine di ogni istruzione, come si deve, da un giorno
  • Van Ootegem probabilmente rompere il web sì =)
  • in un primo momento, molto probabilmente. Ma che potrebbe mostrare alcune persone quanto sia importante la lingua, e potrebbe incoraggiare alcuni a imparare un po ‘ di più la maggior parte frainteso lingua
  • Non c’è niente di sbagliato con utilizzando un punto e virgola. Io preferirei ECMA non è un requisito. (Che non hanno dato a questo post)

InformationsquelleAutor WHITECOLOR | 2012-08-22

 

5 Replies
  1. 25

    Personalmente sono un pro-il punto e virgola tipo di ragazzo, ma c’è un argomento convincente per l’alternativa, che spesso non data una giusta voce. Come per tutte le regole di stile argomenti, questo sarà un interminabile dibattito con nessuna conclusione ragionevole. Fare ciò che voi e il vostro team di sentirsi più a suo agio con.

    Se si va per un frugale punto e virgola approccio, assicuratevi che voi e il vostro team di comprendere correttamente il automatico punto e virgola di inserimento (ASI) e la dichiarazione di cessazione regole. Che è sicuramente una buona cosa per capire qualunque sia la vostra decisione.

    Rispetto alla minimizzazione: Se non vuoi correre il rischio che il potenziale di mal di testa di un minifier bug e il connesso onere di segnalazione e di fissaggio (o in attesa di un fix) perché non fare ASI correttamente, quindi non contare su di ASI.

  2. 6

    Nonostante che il punto e virgola in JavaScript sono opzionali, c’è forte consiglio di contro non si utilizza il punto e virgola:

    • Rende il codice vulnerabile per i bug derivanti da rimuovere gli spazi (utilizzato nella minimizzazione): Prova questo:

      var a = 1; var b = 7; var somma = a+b
      (a + b)

    si minifies per var a=1,b=7,sum=a+b(a+b);,, che avrà come risultato l’errore number is not a function. Ci sono anche altri casi e questo caso.

    Aggiornamento: Questo bug non è stato derivanti dalla minimizzazione, tuttavia, la prossima è:

    • Rende il codice vulnerabile per i bug derivanti dalla minimizzazione: Provare:

      var isTrue = true
      
      function doSomething() { return 'yeah' }
      
      function doSomethingElse() { return 'yes, dear' }
      
      doSomething()
      
      !isTrue && doSomethingElse()

      minifies a:

      var isTrue=true;function doSomething(){return "yeah"}function doSomethingElse(){return "yes, dear"}doSomething()!isTrue&&doSomethingElse();

      che si traduce in:

      SyntaxError: Unexpected token !
    • Rende il codice meno leggibile e gestibile in termini di convenienza: usare il punto e virgola è stato giustamente stabilito come una buona pratica, e di un esperto sviluppatore JavaScript sarà perplesso dal codice cercando di eludere la convenzione.

    Un’altra cosa è, dovete chiedere a voi stessi: che Cosa vuoi davvero guadagnare omettere il punto e virgola?

    • La Pulizia Del Codice? Se si desidera JavaScript per non apparire come JavaScript, prova a Caffè Script. Ma ci sono alcune nozioni sbagliate, che credono che le insidie come quello di cui sopra sono allontanata dalla «soluzione Semplice: quando una riga inizia con una parentesi, aggiungere un punto e virgola ad esso.». Come è questo codice pulito, e come può aiutare chiunque a leggere il codice?

    Linea di fondo: Con minimizzazione, vorrei provare ad utilizzare le convenzioni di JSLint. Ho visto alcune persone, infine, linting loro codice JavaScript dopo ore di tentare di risolvere un bug, non accade in unminified, ma in minified codice. Non mettere se stessi in questa miseria; il punto e virgola può essere brutto, a prima vista, ma tenere gli insetti fuori.

    • Grazie, il tuo parere è stato molto utile per me.
    • var a = 1; var b = 7; var sum = a+b (a + b) è già valido, come dovrebbe dimostrare il tuo punto?
    • Vero, mi sono perso lì. Corretto e incluso un argomento dimostrare il mio punto.
  3. 2

    Compilatori e minifiers sono probabilmente abbastanza intelligente per aggiungere il punto e virgola, se necessario (e se aiuta il minifying di processo).

    Però!!! Un punto e virgola indica l’interprete che questa è la fine di un’istruzione. Se non è presente, si deve guardare all’inizio della riga successiva per scoprire se ha senso per la dichiarazione di continuare. Poi si potrà decidere, se la riga successiva è una nuova dichiarazione (cioè un punto e virgola mancante) o se essa è infatti la continuazione della dichiarazione di riga precedente.

    Senza il punto e virgola, si sta rallentando il tutto! Per non parlare che questo potrebbe introdurre qualche oscuro errori quando l’interprete, eseguendo l’algoritmo che ho descritto, decide di sbagliato!

    • Sembra che l’unica situazione ambigua è la prossima istruzione crostate con la brace “(“.
    • L’interprete ha ancora a guardare la riga successiva per decidere che. Vale la pena di benchamrking forse, ma facendo in modo che per ogni linea sarà rallentare le cose.
  4. 1

    Non farlo. Punto e virgola di inserimento è una cosa molto pericolosa. La dimensione di guadagno non vale la pena il rischio.

    Doulas Crockford non come te se lo fai 🙂 http://youtu.be/hQVTIJBZook

    • Ho letto che questo mislav.uniqpath.com/2010/05/semicolons
    • 😀 Da quello che ho sentito, Douglas Crockford sarà mai più come te 😉 (Se non hai il codice esattamente come lui)
    • Mentre tutto nell’articolo è vero, avrei ancora consigli contro di essa. Ogni pezzo di codice di esempio che è letto avrà un punto e virgola, quindi non c’è che. E anche i problemi connessi alla auto-inserito il punto e virgola, può essere difficile per eseguire il debug.
    • Questa risposta non ha assolutamente nessun ragionamento per la sua risposta: -1 . Si prega di motivare la vostra opinione e giustificare la tua conclusione
    • il punto e virgola è una buona cosa, non si deve dimenticare quando si sono un programmatore.Con l’eccezione di alcuni linguaggi di programmazione, che non uso, mi consigliano di non si dovrebbe usare il punto e virgola, per aiutare il vostro codice di chiara.
  5. -1

    IMHO, non farlo. In realtà non guadagno molto e il punto e virgola è AFAIK collocato automaticamente, e può essere messo in un luogo dove si producono strani bug.

Lascia un commento