Konwencje nazewnictwa JavaScript [zamknięte]

Wiem, że jest wiele kontrowersji (może nie kontrowersji, ale przynajmniej argumentów) na temat tego, która konwencja nazewnictwa jest najlepsza dla JavaScript.

Jak nazwać swoje zmienne, funkcje, obiekty i takie?

Zostawię własne przemyślenia na ten temat, ponieważ nie zajmuję się JS od dawna( tylko kilka lat), a właśnie dostałem prośbę o stworzenie dokumentu z konwencjami nazewnictwa do wykorzystania w naszych projektach w pracy. Więc szukałem (google-ing) wokół, i są tak wiele różnych opinii.

Książki, które czytałem na JS, również używają różnych konwencji nazewnictwa, ale wszystkie zgadzają się co do jednego: "znajdź to, co Ci odpowiada i trzymaj się tego."Ale teraz, gdy przeczytałem tak wiele, odkryłem, że niektóre z innych metod podobają mi się nieco lepiej niż to, do czego jestem przyzwyczajony.

Author: Xufox, 2009-05-28

6 answers

Stosuję Douglas Crockford ' s code conventions dla javascript. Używam również jego narzędzia JSLint do sprawdzania zgodności z tymi konwencjami.

 186
Author: Geoff,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-12-25 11:44:49

Jak mówi Geoff, to, co mówi Crockford, jest dobre.

Jedynym wyjątkiem, który stosuję (i widziałem powszechnie używane) jest użycie $varname do wskazania obiektu jQuery (lub innej biblioteki). Np.

var footer = document.getElementById('footer');

var $footer = $('#footer');

 153
Author: Deebster,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-12-25 09:48:36

Możesz śledzić ten Google JavaScript Style Guide

Ogólnie, używaj nazw funkcyjnych, nazw zmiennych, nazw klasowych, nazw Enumeslikethis, nazw metod i SYMBOLIC_CONSTANTS_LIKE_THIS.

EDIT: Zobacz ładny zbiór podręczników stylu JavaScript i Upiększaczy .

 98
Author: Pavel Hodek,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-11-26 00:07:11

Jedną z Konwencji, którą chciałbym wypróbować, jest nazywanie statycznych modułów przedrostkiem "the". Zobacz też Kiedy używam czyjegoś modułu, nie jest łatwo zobaczyć, jak mam go używać. eg:

define(['Lightbox'],function(Lightbox) {
  var myLightbox = new Lightbox() // not sure whether this is a constructor (non-static) or not
  myLightbox.show('hello')
})

Myślę o wypróbowaniu konwencji, w której Moduły statyczne używają 'the' do wskazania ich preegzystencji. Czy ktoś widział lepszy sposób? Wyglądałoby tak:

define(['theLightbox'],function(theLightbox) {
  theLightbox.show('hello') // since I recognize the 'the' convention, I know it's static
})
 8
Author: SimplGy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-06-06 19:04:18

Myślę, że poza pewnymi ograniczeniami składni, konwencje nazewnictwa są w dużej mierze niezależne od języka. Argumenty przemawiające za c_style_functions i JavaLikeCamelCase równie dobrze mogłyby być użyte w przeciwny sposób, po prostu użytkownicy języka mają tendencję do podążania za autorami języka.

Biorąc to pod uwagę, myślę, że większość bibliotek z grubsza podąża za uproszczeniem CamelCase Javy. Dla mnie Douglas Crockford jest wystarczająco gustowny.

 6
Author: Javier,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-05-28 14:35:06

To indywidualne pytanie, które może zależeć od tego, jak pracujesz. Niektórzy ludzie lubią umieszczać typ zmiennej na początku zmiennej ,na przykład "str_message". Niektórzy ludzie lubią używać podkreślenia między słowami ("my_message"), podczas gdy inni lubią oddzielić je wielkimi literami ("myMessage").

Często pracuję z ogromnymi bibliotekami JavaScript z innymi ludźmi, więc funkcje i zmienne (poza prywatnymi zmiennymi wewnątrz funkcji) zaczęły się od nazwa usługi, aby uniknąć konfliktów, jako "guestbook_message".

W skrócie: angielskie, z niższą obudową, dobrze zorganizowane nazwy zmiennych i funkcji są według mnie lepsze. Nazwy powinny opisywać ich istnienie, a nie być krótkie.

 2
Author: Ivar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-05-28 14:48:59