2010-06-14 27 views
72

Tôi biết rằng một số người xem xét sự hiện diện của dấu gạch dưới hàng đầu để ngụ ý rằng biến là "riêng tư". JSLint báo cáo các tên như vậy với một thông báo lỗi.JSLint báo cáo ký tự "Không mong muốn" trong một dấu gạch dưới có tiền tố tên là

Tôi sử dụng Google Analytics trên trang web mà tôi đang xây dựng. Tôi tham chiếu đến các biến của GA, chẳng hạn như "_gaq".

Tôi đang cố gắng làm cho mã JS của mình trở nên sạch sẽ 100% JSLint (tôi không tôn giáo về kiểu mã hóa của tôi, và vì vậy sẽ đi cùng với lời khuyên của thầy Crockford). Điều đó nói rằng, tôi không thể làm bất cứ điều gì về tên biến của Google ... vì vậy, tôi đoán tôi không thể nhận được 100% "sạch".

Tôi đăng ở đây trong trường hợp tôi đã hiểu lầm thông báo và có thể làm điều gì đó để tuân thủ các thực tiễn JSLint.

+2

Tôi không hiểu tại sao dấu gạch dưới phải xấu. –

Trả lời

70

Ah, tôi đã có này xử lý ... Tôi quấn những điều khoản về sử dụng các biến gạch bắt đầu bằng lệnh JSLint để vô hiệu hóa, sau đó kích hoạt lại lớp này của lỗi:

/*jslint nomen: true*/ 
... statement(s) with _var ... 
/*jslint nomen: false*/ 
+12

-1. Để tắt cảnh báo này, bạn cần đặt nomen: thành true trước, sau đó là false. Từ trang web jslint: "true nếu không được chọn tên cho các thanh bên dưới hoặc dấu đầu dòng". –

+3

Điều này không tuân thủ các thực tiễn JSLint; nó vô hiệu hóa việc kiểm tra cảnh báo đó. – WhyNotHugo

+2

Điều này sẽ trở nên lộn xộn nếu bạn đang sử dụng thư viện như underscore.js. Thay vào đó, hãy sử dụng 'jslint --nomen '. –

15

JSLint chỉ là một công cụ chất lượng mã. Không hoàn toàn vượt qua các bài kiểm tra của nó không có nghĩa là mã của bạn là xấu; nó đơn giản có nghĩa là bạn không tuân theo tất cả các quy ước do người sáng tạo đặt ra. Mặc dù JSLint đưa ra những gợi ý rất tốt, nhưng không phải lúc nào cũng có thể thực hiện được tất cả, đặc biệt là khi sử dụng thư viện của người khác mà không được thử nghiệm chống lại nó. Thay vì xả rác mã nguồn của bạn bằng các nhận xét meta vô nghĩa, bạn nên kiểm tra mã của mình bằng tùy chọn "Không cho phép lúng túng _ trong số nhận dạng" bị vô hiệu hóa, vì dường như không hợp lý để sử dụng với mã cụ thể của bạn.

+1

Tôi đánh giá cao quan điểm của bạn, và trong khi JSLint là tầm nhìn của một người, nó đã làm việc tốt cho tôi để có thư viện mã của tôi được 100% sạch - khi tôi có lỗi, chúng luôn logic. – Zhami

+1

Điểm chính của tôi là các nhận xét meta của JSLint có xu hướng giảm khả năng đọc và có thể sẽ khiến một người đọc khác "Huh?", Vì vậy tốt hơn nên bỏ qua hoặc vô hiệu hóa kiểm tra cụ thể đó để giữ chúng trong nguồn của bạn. –

+2

Còn mã khác không phụ thuộc vào thư viện bên ngoài vi phạm thì sao? Đây là những chỉ thị/* jslint dành cho. Đó không phải là quyết định bạn phải đưa ra toàn cầu. – 1983

51

Cách tốt nhất để xử lý việc này chỉ là bật tùy chọn "Dung nạp đong đưa _ trong định danh" (nomen). Xem http://www.jslint.com/lint.html để biết chi tiết ...

+7

đây là câu trả lời hay nhất cho câu hỏi được hỏi. Tôi muốn jslint sẽ chịu đựng underscorejs nhưng không _ identifiers ... –

+0

Bạn có thể vui lòng cung cấp một liên kết làm việc? Tôi bằng cách nào đó bối rối làm thế nào để tìm các nguồn tài nguyên thích hợp. – OddDev

+2

Thử http://jslint.it/lint.html – scruffian

8

Tôi sử dụng JSLInt với node.js. Bạn có thể vượt qua cờ --nomen để tận hưởng tính năng này

jslint --nomen myfile.js 
Các vấn đề liên quan