Przewodnik po stylu kodowania dla aplikacji node.js? [Zamknięte]


130

Czy istnieje przewodnik po stylu kodowania dla node.js (lub kilka)? Jeśli nie, jakie nowe style są używane w najpopularniejszych projektach węzłów typu open source?

Szukam przewodnika (lub kilku przewodników) na wzór PEP 8 , kanonicznego przewodnika po stylu kodowania dla Pythona. Widziałem różne przewodniki JavaScript, których nie warto tutaj linkować (głównie stare i ukierunkowane na JavaScript po stronie klienta). Znalazłem Interesującą node.js przewodnik stylu .

Przewodnik po stylach kodowania lub konwencje kodowania powinien zawierać (ale nie tylko):

  • Układ kodu: wcięcia (2 spacje, 4 spacje, tabulatory, ...), nowe linie, podziały wierszy itp.
  • Białe znaki, np. „Funkcja (arg)” a „funkcja (arg)”
  • Średnik lub brak średnika, deklaracja zmiennej, ...
  • Nazewnictwo, np. Do_this () vs. doThis (), var_name vs. varName, ...
  • node.js i idiomy JavaScript, np. == vs. ===, pierwszy argument wywołania zwrotnego jest obiektem błędu, ...
  • Komentarze i dokumentacja
  • Narzędzia towarzyszące, takie jak sprawdzanie kłaczków, środowisko testów jednostkowych, ...

Ten temat jest oczywiście wysoce subiektywny, ale myślę, że jest to ważny krok społeczności, aby ustanowić wspólny i powszechnie akceptowany styl kodowania w procesie dojrzewania. Nie chodzi tylko o smak. W szczególności reguły takie jak „użyj === zamiast ==” mają bezpośredni wpływ na jakość kodu.


wydaje mi się, że to naprawdę zależy od "frameworka", którego używasz (jeśli w ogóle), na przykład możesz sprawdzić spludo.com/source/coding-standards, ale inni mogą rozważać nieco inne podejście
Poelinca Dorin

4
„Czy ktoś ma dobry zestaw przewodników po stylu” może być subiektywne lub nie, ale „Jakie są pojawiające się style” z pewnością takie jest. Znalazłeś już przewodnik Felixa, z którym oczywiście nie zgadzam się (w niektórych przypadkach zdecydowanie) i zgadzam się z innymi aspektami. I to jest problem. Bardzo, bardzo szybko przechodzi do "Nie, styl, który widzę, używa zakładek!" „Nie, styl, który widzę, wymaga czterech spacji!” „Nie, styl, który widzę, wykorzystuje dwie spacje!” Kiedy, oczywiście, ludzie naprawdę mają na myśli „styl, który preferuję”, a nie „styl, który wyłania się”.
TJ Crowder

2
@TJ Croweder Styl, który widzę, nie używa spacji!
Raynos,

+1 Fantastyczne pytanie. Chciałabym mieć te linki wieki temu.
Bryan Downing

Subiektywne pytanie.
Niels Abildgaard

Odpowiedzi:


121

Chciałbym przejrzeć standardy kodowania sprawdzone przez JSLint lub spojrzeć na autora standardów kodowania NPM (Isaaca Shluetera) .

Możesz również przyjrzeć się stylowi używanemu przez znanych programistów Node.JS:

Będę rzucać kopalni tam na wszelki wypadek;)

Edycja: sugestie od @alienhard

IMO jest kilka złotych zasad, których powinieneś przestrzegać:

  • Nigdy nie używaj withlubeval
  • Użyj ===ponad==
  • Zawsze deklaruj swoje zmienne varw odpowiednim zakresie - nie wracaj do zasięgu globalnego
  • Opakuj aplikację w zamknięcie, (function(){})()jeśli planujesz wydać kod działający po stronie serwera, a także w przeglądarce
  • Callbacki powinny przyjmować errjako pierwszy argument, a jeśli same przyjmują callback jako argument, to powinien być ostatni, npcallback(err, param1, param2, callback)

Wcięcia, odstępy między nawiasami klamrowymi i słowami kluczowymi oraz umieszczenie średników to kwestia preferencji.


2
Dziękuję za odpowiedź. Zastanawiałem się, dlaczego nie wspomniałeś o Ryanie;). Ale doszedłem do wniosku, że na oficjalnej wiki repozytorium węzłów stosują się do przewodnika Google po stylu JavaScript . Nie wiedziałem tego wcześniej ...
alienhard

15

W mieście pojawił się nowy standard.

Użyj stylu standardowego .

js-standard-style


1
Nie mam pojęcia, dlaczego ma tylko 3 głosy za…
Luc

4
@Luc może ze względu na zasadę „Bez średników”. Wydaje się, że dziwny wybór dla czegoś, co nazywa się stylem „Standard”.
Daniel Yankowsky

Brak średników nie jest dobrym pomysłem. To przerwie niektóre minifikacje.
denov

Ten standardpakiet nie lubi średników. Jeśli lubisz średniki, jest półstandard
yesnik

10

Możesz nauczyć się wielu dobrych praktyk związanych ze stylem kodowania z przewodników JavaScript zorientowanych na klienta (większość z nich odnosi się również ogólnie do node.js, ponieważ różnica między stroną klienta i serwera występuje głównie w bibliotekach, a nie w samym języku). Na przykład książka Wzorce JavaScript poświęca temu tematowi niektóre części rozdziału 2 . Również strona internetowa , książka i filmy Douglasa Crockforda są materiałami, które trzeba zobaczyć, aby przyjąć style kodowania specyficzne dla JavaScript i najlepsze praktyki, powiedziałbym.


3
+1 do książki Douglasa Crockforda „JavaScript: The Good Parts”. Zawiera cholernie dużo informacji w zwięzłej / małej książce - ciężka lektura, ale jedna z najlepszych książek, jakie przeczytałem.
Alex KeySmith

7

Podczas korzystania z węzła z terminala, przydatne jest, aby kod źródłowy używał spacji do wcięć. W przeciwnym razie daszek „błąd tutaj” nie będzie wyrównany.

Z zakładkami:

        var preps = files.map(function(f) { 
            ^
TypeError: Cannot call method 'map' of null

Ze spacjami:

        var preps = files.map(function(f) { 
                          ^
TypeError: Cannot call method 'map' of null

Może to być problem tylko dla komputerów Mac, ale podejrzewam, że nie.


OP poprosił o przewodnik po stylu. Nie konkretna wskazówka.
mightyiam

@mightyiam To prawda, ale reguły wcięć są częścią prawie każdego przewodnika po stylu. Może moja uwaga pomoże OP w ocenie niektórych przewodników po stylu, które inni będą łączyć, lub może pomóc mu w opracowaniu własnego przewodnika po stylu.
Daniel Yankowsky



2

W przypadku Coffee-Script, gdzie złe wcięcia oznaczają błędy kompilacji

posługiwać się

:set tabstop=2
:set shiftwidth=2
:set expandtab

popularne projekty kawy zombie, brunchużywa tej konfiguracji na wgniecenia.

Edytować:

Właściwie po prostu użyj tego! https://github.com/paulmillr/code-style-guides (jeden z głównych współtwórców brunch)

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.