Hướng dẫn về kiểu mã hóa cho các ứng dụng node.js? [đóng cửa]


130

Có một (hoặc một vài) hướng dẫn kiểu mã hóa cho node.js không? Nếu không, các kiểu mới nổi được sử dụng bởi các dự án nút nguồn mở hàng đầu là gì?

Tôi đang tìm một hướng dẫn (hoặc một vài hướng dẫn) dọc theo các dòng của PEP 8 , Hướng dẫn kiểu mã hóa chính tắc cho Python. Tôi đã thấy các hướng dẫn JavaScript khác nhau không đáng để liên kết ở đây (chủ yếu là cũ và nhắm mục tiêu vào JavaScript phía máy khách). Tôi tìm thấy một hướng dẫn phong cách node.js thú vị .

Hướng dẫn về kiểu mã hóa, hoặc các quy ước mã hóa, nên bao gồm (nhưng không giới hạn ở):

  • Bố cục mã: thụt lề (2 dấu cách, 4 dấu cách, tab, ...), dòng mới, ngắt dòng, v.v.
  • Khoảng trắng, ví dụ: "function (arg)" vs. "function (arg)"
  • Dấu chấm phẩy hoặc không có dấu chấm phẩy, khai báo var, ...
  • Đặt tên, ví dụ: do_this () so với do This (), var_name so với varName, ...
  • thành ngữ node.js và JavaScript, ví dụ: == vs. ===, đối số đầu tiên của cuộc gọi lại là một đối tượng lỗi, ...
  • Nhận xét và tài liệu
  • Các công cụ đi kèm, như trình kiểm tra xơ vải, khung kiểm tra đơn vị, ...

Chủ đề này rõ ràng là rất chủ quan, nhưng tôi nghĩ đó là một bước quan trọng của cộng đồng để thiết lập một phong cách mã hóa phổ biến và được chấp nhận rộng rãi trong quá trình trưởng thành. Ngoài ra, nó không chỉ là về hương vị. Cụ thể, các quy tắc như "use === thay vì ==" có ảnh hưởng trực tiếp đến chất lượng mã.


Tôi đoán nó thực sự phụ thuộc vào "khung" mà bạn sử dụng (nếu có), ví dụ: bạn có thể kiểm tra spludo.com/source/coding-st Chuẩns tuy nhiên những người khác có thể che giấu các lỗi khác nhau một chút
Poelinca Dorin

4
"Có ai có một bộ hướng dẫn phong cách tốt" có thể hoặc không thể chủ quan, nhưng "Phong cách mới nổi" chắc chắn là gì. Bạn đã tìm thấy hướng dẫn của Felix, tất nhiên tôi không đồng ý với các khía cạnh của (trong một số trường hợp mạnh mẽ) và đồng ý với các khía cạnh khác của. Và đó là vấn đề. Rất, rất nhanh, nó trở thành "Không, phong cách tôi thấy xuất hiện sử dụng các tab!" "Không, phong cách tôi thấy xuất hiện sử dụng bốn không gian!" "Không, phong cách tôi thấy xuất hiện sử dụng hai không gian!" Tất nhiên, khi mà mọi người thực sự muốn nói là "phong cách tôi thích", chứ không phải "phong cách tôi đang thấy xuất hiện".
TJ Crowder

2
@TJ Croweder Phong cách tôi thấy xuất hiện không sử dụng khoảng trắng!
Raynos

+1 câu hỏi tuyệt vời. Tôi ước tôi có những liên kết này từ lâu.
Bryan Downing

Câu hỏi chủ quan.
Niels Abildgaard 16/2/2015

Câu trả lời:


120

Tôi sẽ xem xét các tiêu chuẩn mã hóa được kiểm tra bởi JSLint hoặc xem xét tác giả của các tiêu chuẩn mã hóa NPM (Isaac Shlueter) .

Bạn cũng có thể xem phong cách được sử dụng bởi các lập trình viên Node.JS đáng chú ý:

Tôi sẽ ném của tôi vào đó để có biện pháp tốt;)

Chỉnh sửa: Gợi ý từ @alienhard

IMO có một vài quy tắc vàng bạn nên tuân theo:

  • Không bao giờ sử dụng withhoặceval
  • Sử dụng ===hơn==
  • Luôn khai báo các biến của bạn vartrong phạm vi thích hợp - không dự phòng phạm vi toàn cầu
  • Gói ứng dụng của bạn trong trạng thái đóng (function(){})()nếu bạn dự định phát hành mã chạy phía máy chủ cũng như trong trình duyệt
  • Các cuộc gọi lại nên lấy errlàm đối số đầu tiên và nếu chính chúng gọi cuộc gọi lại làm đối số thì nó sẽ là cuộc tranh luận cuối cùng, vdcallback(err, param1, param2, callback)

Việc thụt lề, khoảng cách giữa dấu ngoặc nhọn và từ khóa và vị trí dấu chấm phẩy đều là vấn đề ưu tiên.


2
Cảm ơn câu trả lời. Tôi đã tự hỏi tại sao bạn không đề cập đến Ryan;). Nhưng tôi đã tìm ra, từ wiki repo nút chính thức, rằng họ tuân theo hướng dẫn về kiểu JavaScript của Google . Tôi đã không biết điều đó trước đây ...
alienhard

15

Có một tiêu chuẩn mới trong thị trấn.

Sử dụng Phong cách tiêu chuẩn .

js-tiêu chuẩn-phong cách


1
Tôi không biết tại sao điều này chỉ có 3 lần nâng cấp ...
Luc

4
@Luc có thể vì quy tắc "Không có dấu chấm phẩy". Có vẻ như là một lựa chọn kỳ lạ cho một thứ gọi là phong cách "Tiêu chuẩn".
Daniel Yankowsky

Không có dấu chấm phẩy không phải là một ý tưởng tốt. Nó sẽ phá vỡ một số giảm thiểu.
denov

Đây standardgói không giống như dấu chấm phẩy. Nếu bạn thích dấu chấm phẩy thì có bán chuẩn
yesnik

10

Bạn có thể tìm hiểu rất nhiều cách thực hành kiểu mã hóa tốt từ các hướng dẫn JavaScript hướng về phía máy khách (hầu hết chúng cũng áp dụng cho node.js nói chung vì sự khác biệt giữa phía máy khách và máy chủ chủ yếu là ở các thư viện chứ không phải ở ngôn ngữ). Ví dụ, sách Mẫu JavaScript dành cho chủ đề này một số phần của Chương 2 . Ngoài ra, trang web , sáchvideo của Douglas Crockford là những tài liệu phải xem để áp dụng các kiểu mã hóa cụ thể của JavaScript và các cách thực hành tốt nhất mà tôi muốn nói.


3
+1 cho cuốn sách "JavaScript: Những phần tốt" của Douglas Crockford. Nó có một địa ngục của rất nhiều thông tin trong một cuốn sách ngắn gọn / nhỏ gọn - một cuốn sách nặng, nhưng là một trong những cuốn sách hay nhất tôi đã đọc.
Alex KeySmith

7

Khi sử dụng nút từ thiết bị đầu cuối, mã nguồn của bạn sẽ hữu ích để sử dụng khoảng trắng để thụt lề. Nếu không, "lỗi ở đây" sẽ không xếp hàng.

Với các tab:

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

Với không gian:

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

Đây có thể là vấn đề duy nhất của Mac, nhưng tôi nghi ngờ là không.


OP yêu cầu một hướng dẫn phong cách. Không một số mẹo cụ thể.
mightyiam

@mightyiam Đúng, nhưng quy tắc thụt đầu dòng là một phần của hầu hết mọi hướng dẫn về phong cách. Có lẽ quan điểm của tôi có thể giúp OP đánh giá một số hướng dẫn về phong cách mà những người khác sẽ liên kết hoặc có thể giúp anh ấy phát triển hướng dẫn phong cách của riêng mình.
Daniel Yankowsky

6

Đã được một thời gian kể từ khi tôi hỏi câu hỏi này ... và trong lúc đó tôi đã tìm thấy hướng dẫn JavaScript tuyệt vời này:

Nguyên tắc viết JavaScript nhất quán, thành ngữ

https://github.com/rwldrn/idiomatic.js/



2

Đối với Coffee-Script, trong đó thụt lề xấu có nghĩa là lỗi biên dịch

sử dụng

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

các dự án cà phê phổ biến zombie, brunchsử dụng thiết lập này cho các vết lõm.

Biên tập:

Trên thực tế, chỉ cần sử dụng này! https://github.com/paulmillr/code-style-guides (một trong những người đóng góp chính cho brunch)

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.