2011-01-14 35 views
5

Tại sao nhiều nhà phát triển viết dấu phẩy theo cách này?Cú pháp phẩy Javascript

var npm = module.exports = new EventEmitter 
    , config = require("./lib/config") 
    , set = require("./lib/utils/set"); 

Không phải theo cách này?

var npm = module.exports = new EventEmitter, 
    config = require("./lib/config"), 
    set = require("./lib/utils/set"); 
+1

Nhiều người? Bạn có số liệu/bằng chứng cụ thể nào không? – BalusC

+4

@ BalusC: Liệu anh ấy có cần "số liệu thống kê cụ thể" để hỏi một câu hỏi như vậy không? Bất cứ ai đã dành một vài tháng trong thế giới JS đã thấy mô hình này ở đâu đó, trong một thư viện hoặc trong một mã của đồng nghiệp. –

Trả lời

7

Họ viết chúng với "" ở đầu dòng để làm cho nó dễ dàng hơn để duy trì mã (thêm dòng hoặc xóa/nhận xét ra dòng).

Với này:

var npm = module.exports = new EventEmitter 
    , config = require("./lib/config") 
    , set = require("./lib/utils/set"); 

Đó là sạch hơn và dễ dàng hơn để làm điều này:

var npm = module.exports = new EventEmitter 
// , config = require("./lib/config") 
    , set = require("./lib/utils/set"); 

cũng như thêm dòng mới như thế này:

var npm = module.exports = new EventEmitter 
    , config = require("./lib/config") 
    , anothervalue = require("./lib/aval") 
    , anothervalue2 = require("./lib/aval2") 
    , set = require("./lib/utils/set"); 
+8

Tôi không thấy bất kỳ lý do nào khi dấu phẩy ở đầu sẽ làm cho một trong những dấu phẩy dễ dàng hơn so với dấu phẩy ở cuối? – Nemo157

+0

Xem câu trả lời tiếp theo ... Tôi cần định dạng để hiển thị câu trả lời ... –

+0

Đây chỉ là kiểu, không có gì khác, nếu bạn mất nhiều thời gian để nhận xét một dòng ... chuyển đổi trình soạn thảo của bạn nhưng không viết (IMO, hãy nhớ nó về phong cách) mã. –

1

Tôi chưa bao giờ thấy trước đây trong JS, vì vậy tôi không chắc chắn nếu có nhiều nhà phát triển mà mà bạn nó, nhưng tôi đoán họ làm điều đó để các tên biến được căn chỉnh, để nhấn mạnh rằng var thực sự định nghĩa ba biến trong mã mẫu của bạn.

Nếu đó là trường hợp tuy nhiên, nó sẽ được rõ ràng hơn (và ít kỳ lạ) để chỉ cần sử dụng var ba lần:

var npm = module.exports = new EventEmitter; 
var config = require("./lib/config"); 
var set = require("./lib/utils/set"); 
1

Đây là đúng một sở thích syntaxtual lập trình cụ thể. Tôi biết rất nhiều DBA của sem đó để thích phương pháp đó, trong khi tôi thích dấu phẩy sau bản thân mình. cũng không có sự khác biệt thực sự ngoại trừ sở thích cá nhân/giáo dục.

0

var npm = module.exports = new EventEmitter
config = require("./lib/config") // ,
//anothervalue = require("./lib/aval"),
//anothervalue2 = require("./lib/aval2"),
set = require("./lib/utils/set");
Xem thêm "//" ... bạn sẽ phải thêm "//" cho một dòng hiện tại cuối cùng cũng như thêm nó vào dòng tiếp theo ...

+0

của bạn thêm '//' giới thiệu một lỗi cú pháp. –

1

CHỈNH SỬA 2: Câu hỏi trên đã nhắc tôi làm xước một cơn ngứa đã làm tôi bực mình một thời gian. Sau một chút tin đồn, tôi đã đưa ra một lý do chính đáng cho các dấu phẩy hàng đầu: dễ dàng phát hiện ra dấu phẩy bị thiếu. Đây là một nguồn tiềm năng khó chịu lỗi, từ đó, chứ không phải phàn nàn, trình biên dịch sẽ chỉ cần thêm một dấu chấm phẩy, do đó thay đổi ý nghĩa khá đáng kể:

var a = foo(), 
    b = bar() // Oops... 
    c = baz(); // Ouch! 

Dòng thứ ba không còn initialises một biến mới trong phạm vi hiện tại . Nó gán cho một biến hiện có trong một phạm vi bên ngoài hoặc khởi tạo một biến toàn cầu mới nếu không có một biến nào đó.

Điều này không giải thích việc sử dụng dấu phẩy hàng đầu trong JSON. Có lẽ nó chỉ được thực hiện bởi fiat.

Điều đó nói rằng, tôi vẫn ủng hộ các khai báo riêng biệt, điều này làm cho nó đơn giản và an toàn.

Tôi sẽ để nguyên vị trí của mình tại chỗ cho hậu thế.


Tôi đồng ý rằng nó xuất hiện khắp nơi. Hầu như mọi thư viện thứ hai tôi sử dụng đều sử dụng quy ước này. Thành thật mà nói, tôi không hiểu.

Tra dấu phẩy làm cho nó khó xử để nhận xét ra dòng cuối cùng của một nhóm ...

var //a = foo(), easy 
    b = bar(), 
    c = baz(); 

var a = foo(), 
    b = bar()/*, awkward 
    c = baz()*/; 

... trong khi hàng đầu dấu phẩy làm cho nó khó xử cho cả hai dòng đầu tiên và cuối cùng ...

var /*a = foo() awkward 
    , */b = bar() 
    , c = baz(); 

var a = foo() 
    , b = bar()/* awkward 
    , c = baz()*/; 

Đây là tiến bộ?

(Một trong những quá trình có thể giành được một điểm giá rẻ bằng cách quan sát rằng dấu chấm phẩy là không bắt buộc, nhưng điều này chỉ đạt được chẵn lẻ tại các chi phí của lảng tránh thực hành tốt nhất.)

Tệ hơn nữa, dấu phẩy hàng đầu cũng được sử dụng cho JSON. Đây là một package.json được tạo bởi Express.

{ 
    "name": "application-name" 
    , "version": "0.0.1" 
    , "private": true 
    , "dependencies": { 
     "express": "2.5.10" 
    , "jade" : ">= 0.0.1" 
    } 
} 

Đây là PITA vì hầu hết các biên tập viên không thích thụt lề dòng anh chị em khác nhau. Lưu ý rằng dòng đầu tiên của một nhóm được thụt lề nhiều hơn các dòng sau.

Việc sử dụng dấu phẩy hàng đầu tấn công tôi là một ảnh hưởng vô nghĩa gây ra các sự cố mà không giải quyết bất kỳ vấn đề nào. Lập luận duy nhất tôi có thể nghĩ rằng có bất kỳ công đức nào là các dấu phẩy hàng đầu xếp hàng với nhau; không hấp dẫn lắm.

May mắn thay, CoffeeScript đang chiếm lĩnh thế giới, điều này làm cho câu hỏi được khắc phục (thậm chí nó còn trả về JSON cho cấu hình).

CHỈNH SỬA: Tôi quên đề cập đến rằng tôi không thực sự ưu tiên dấu phẩy sau cho trường hợp trên. Tôi nghĩ rằng việc tuyên bố những vars cá nhân có ý nghĩa nhất. Nó sạch sẽ, thường xuyên và làm cho nó rất dễ dàng để bình luận ra các mục cá nhân.

var a = foo(); 
var b = bar(); 
var c = baz(); 
Các vấn đề liên quan