2012-01-10 31 views
5

Tất cả các hằng số của tôi ở gần đầu tệp javascript của tôi như dưới đây.Tại sao JQuery không hợp nhất các hằng số của nó?

Khi tôi tìm kiếm tệp JQuery lõi, không có gì xuất hiện cho Hằng số và tôi không thể thấy rằng chúng đang kéo ra các hằng số? Họ không có bất kỳ, họ có họ trải ra thông qua các mã, nếu có, tại sao họ không củng cố chúng?

Tôi không quan tâm đến ngôn ngữ xây dựng const nhưng khái niệm kéo các hằng số của bạn vào một nơi như dưới đây.

var Constant = 
{ 
    VALIDATE_ON:     1, 
    JSON_ON:      0, 
    ROOT:       '', 
    PICTURES:      '../pictures/', 
    TEXT:       '../text/', 
    FAVICON:      '../images/logo_small.ico', 
    IMAGES:       '../images/', 
    GATEWAY:      'class.ControlEntry.php', 
    ENTER_KEY:      13, 
    SECOND:       1000, 
    MINUTE:       60, 
    HOUR:       3600, 
    DAY:       43200, 
    AML: 
    { 
     "PASS":      0, 
     "FAIL":      1, 
     "NOTDEFINED":    2 
    } 
}; 
+0

Mã có nhiều mô-đun và dễ dàng hơn để có nhiều người khác nhau làm việc trên nó nếu hằng số được xác định trong phạm vi/mô-đun nơi chúng được sử dụng thay vì ở một nơi cho toàn bộ dự án. Từ những gì tôi đã nhìn thấy của dự án jQuery, đó thường là những gì họ đang làm (mặc dù tôi không nghĩ rằng nó hoàn toàn phù hợp). – jfriend00

+0

Trong ví dụ mã của bạn, các hằng số không thể được rút gọn (tùy thuộc vào công cụ bạn sử dụng). Bạn nên làm cho mỗi người trong số họ một var riêng biệt. – Prinzhorn

Trả lời

4

Nếu bạn nhìn vào số jQuery source code, bạn cũng sẽ thấy một số hằng số đại diện cho các biểu thức thông thường khác nhau ở đầu. Chỉ là chúng không được xác định trong phạm vi toàn cầu để tránh gây ô nhiễm nó. Chúng được định nghĩa bên trong hàm jQuery. Bằng cách này, không có nguy cơ xung đột giữa các tập lệnh khác nhau có thể sử dụng cùng tên trong phạm vi toàn cục.

Vì vậy, tất nhiên đó là một ý tưởng tốt để củng cố các hằng số của bạn, chỉ không gây ô nhiễm phạm vi toàn cầu.

+0

@downvoters_are_sissies, oops, xin lỗi. Tôi không thấy định nghĩa 'Arc' :-) Bạn phải chỉnh sửa câu hỏi của mình. Vâng, bây giờ nó hoàn hảo. Không có vấn đề với mã của bạn. –

+0

@downvoters_are_sissies, vâng regexes, chúng được định nghĩa là hằng số để tránh lặp lại chúng. Đoán rằng regexes là phổ biến trong jQuery, đó là lý do tại sao chúng đã được định nghĩa ở một vị trí duy nhất. –

+0

@downvoters_are_sissies, đó là tất cả về phạm vi trong javascript. Xác định các biến/hằng số chỉ trong phạm vi thích hợp sẽ yêu cầu chúng. –

1

Điều này phụ thuộc rất lớn vào kiểu lập trình. jQuery có một số hằng số lúc bắt đầu hàm jQuery, nhưng cũng có rất nhiều "hằng số" như các chuỗi phân tán trong toàn bộ tệp.

Cá nhân tôi muốn giữ các hằng số ở cuối tệp.

Dù sao thì tốt là tách riêng và hợp nhất các hằng số nếu bạn sử dụng chúng ở nhiều nơi (ý tôi là sử dụng một hằng số ở nhiều nơi). Nhưng nếu bạn sẽ sử dụng nó một hoặc hai lần tương đối gần trong mã của bạn thì tốt hơn nên đặt liên tục gần với cách sử dụng của nó - nó sẽ dễ đọc hơn, bởi vì trong khi đọc bạn sẽ không bị buộc phải cuộn lên trên và xuống.

Theo mã bạn đã cung cấp - bạn có tất cả các hằng số ở một nơi. IMHO sẽ tốt hơn nếu tách chúng thành các nhóm, ví dụ:

var Paths = { 
    ROOT:  '', 
    PICTURES: '../pictures/', 
    TEXT:  '../text/', 
    FAVICON: '../images/logo_small.ico', 
    IMAGES:  '../images/', 
    GATEWAY: 'class.ControlEntry.php' 
}; 

var TimeCounts = { 
    SECOND: 1000, 
    MINUTE: 60, 
    HOUR:  3600, 
    DAY:  43200 
}; 

var KeyCodes = { 
    ENTER_KEY: 13 
}; 

vì khi bạn sử dụng nó sẽ tiết lộ chi tiết hơn (dĩ nhiên tôi chỉ cho bạn biết ý tưởng của mình).

Các vấn đề liên quan