Với việc các lập trình viên trên toàn thế giới viết các lớp và giao diện sử dụng ngôn ngữ lập trình Java, có khả năng nhiều lập trình viên sẽ sử dụng cùng một tên cho các loại khác nhau. Trong thực tế, ví dụ trước làm điều đó. Nó định nghĩa một lớp
var foo = "bar";5 khi đã có một lớp
var foo = "bar";5 trong gói
var foo = "bar";7. Tuy nhiên, trình biên dịch cho phép cả hai lớp có cùng tên nếu chúng nằm trong các gói khác nhau. Tên đủ điều kiện của mỗi lớp
var foo = "bar";5 bao gồm tên gói. Nghĩa là, tên đầy đủ của lớp
var foo = "bar";5 trong gói
if [true] { console.log['winning']; }0 là
if [true] { console.log['winning']; }1 và tên đủ điều kiện của lớp
var foo = "bar";5 trong gói
var foo = "bar";7 là
if [true] { console.log['winning']; }4
Điều này hoạt động tốt trừ khi hai lập trình viên độc lập sử dụng cùng tên cho các gói của họ. Điều gì ngăn cản vấn đề này?
quy ước đặt tên
Tên gói được viết bằng chữ thường để tránh xung đột với tên của các lớp hoặc giao diện
Các công ty sử dụng tên miền Internet đảo ngược của họ để bắt đầu tên gói của họ—ví dụ:
var foo = "bar";50 cho gói có tên
var foo = "bar";51 được tạo bởi một lập trình viên tại
var foo = "bar";52
Xung đột tên xảy ra trong một công ty cần được xử lý theo quy ước trong công ty đó, có thể bằng cách bao gồm khu vực hoặc tên dự án sau tên công ty [ví dụ:
var foo = "bar";53]
Các gói trong ngôn ngữ Java bắt đầu bằng
var foo = "bar";54 hoặc
var foo = "bar";55
Trong một số trường hợp, tên miền internet có thể không phải là tên gói hợp lệ. Điều này có thể xảy ra nếu tên miền chứa dấu gạch nối hoặc ký tự đặc biệt khác, nếu tên gói bắt đầu bằng một chữ số hoặc ký tự khác không hợp lệ để sử dụng làm phần đầu của tên Java hoặc nếu tên gói chứa từ khóa Java dành riêng, . Trong trường hợp này, quy ước được đề xuất là thêm dấu gạch dưới. Ví dụ
Đây là một hướng dẫn để viết nút nhất quán và thẩm mỹ. mã js. Nó được lấy cảm hứng từ những gì phổ biến trong cộng đồng và có thêm một số ý kiến cá nhân
Đây là một. jshintrc thực thi các quy tắc này chặt chẽ nhất có thể. Bạn có thể sử dụng và điều chỉnh nó hoặc sử dụng tập lệnh này để tạo tập lệnh của riêng bạn
Hướng dẫn này được tạo bởi Felix Geisendörfer và được cấp phép theo CC BY-SA 3. 0 giấy phép. Bạn được khuyến khích rẽ nhánh kho lưu trữ này và thực hiện các điều chỉnh theo sở thích của mình
Mục lục
định dạng
quy ước đặt tên
Biến
điều kiện
Chức năng
Bình luận
Điều khoản khác
định dạng
Bạn có thể muốn sử dụng editorconfig. org để thực thi cài đặt định dạng trong trình chỉnh sửa của bạn. Sử dụng nút. hướng dẫn phong cách js. editorconfig để có hành vi thụt đầu dòng, dòng tin và khoảng trắng tự động được đặt theo các quy tắc được thiết lập bên dưới
2 Khoảng cách để thụt đầu dòng
Sử dụng 2 dấu cách để thụt lề mã của bạn và thề sẽ không bao giờ trộn lẫn các tab và dấu cách - nếu không thì một loại địa ngục đặc biệt đang chờ bạn
Dòng mới
Sử dụng dòng mới kiểu UNIX [
if [true] { console.log['losing']; }3] và ký tự dòng mới làm ký tự cuối cùng của tệp. Các dòng mới kiểu Windows [
if [true] { console.log['losing']; }4] bị cấm bên trong bất kỳ kho lưu trữ nào
Không có khoảng trắng ở cuối
Giống như việc bạn đánh răng sau mỗi bữa ăn, bạn sẽ dọn sạch mọi khoảng trắng ở cuối trong các tệp JS của mình trước khi thực hiện. Nếu không, mùi thối rữa của sự cẩu thả bất cẩn cuối cùng sẽ xua đuổi những người đóng góp và/hoặc đồng nghiệp
Sử dụng dấu chấm phẩy
Theo nghiên cứu khoa học, việc sử dụng dấu chấm phẩy là giá trị cốt lõi của cộng đồng chúng ta. Xem xét các điểm của phe đối lập, nhưng hãy là người theo chủ nghĩa truyền thống khi lạm dụng cơ chế sửa lỗi cho thú vui cú pháp rẻ tiền
80 ký tự trên mỗi dòng
Giới hạn các dòng của bạn ở 80 ký tự. Vâng, màn hình đã trở nên lớn hơn nhiều trong vài năm qua, nhưng bộ não của bạn thì không. Sử dụng phòng bổ sung cho màn hình chia nhỏ, trình chỉnh sửa của bạn hỗ trợ điều đó, phải không?
Sử dụng dấu nháy đơn
Sử dụng dấu ngoặc đơn, trừ khi bạn đang viết JSON
Đúng
var foo = 'bar';
Sai
var foo = "bar";
Dấu ngoặc mở đi trên cùng một dòng
Dấu ngoặc mở của bạn đi trên cùng một dòng với câu lệnh
Đúng
if [true] { console.log['winning']; }
Sai
if [true] { console.log['losing']; }
Ngoài ra, hãy chú ý việc sử dụng khoảng trắng trước và sau câu lệnh điều kiện
Khai báo một biến cho mỗi câu lệnh var
Khai báo một biến cho mỗi câu lệnh var, nó giúp sắp xếp lại các dòng dễ dàng hơn. Tuy nhiên, hãy bỏ qua Crockford khi khai báo các biến sâu hơn bên trong một hàm, chỉ cần đặt các khai báo ở bất cứ nơi nào chúng có ý nghĩa
Đúng
var keys = ['foo', 'bar']; var values = [23, 42]; var object = {}; while [keys.length] { var key = keys.pop[]; object[key] = values.pop[]; }
Sai
var keys = ['foo', 'bar'], values = [23, 42], object = {}, key; while [keys.length] { key = keys.pop[]; object[key] = values.pop[]; }
quy ước đặt tên
Sử dụng LowerCamelCase cho các biến, thuộc tính và tên hàm
Các biến, thuộc tính và tên hàm nên sử dụng
if [true] { console.log['losing']; }5. Họ cũng nên được mô tả. Nói chung nên tránh các biến ký tự đơn và các từ viết tắt không phổ biến
Đúng
var adminUser = db.query['SELECT * FROM users ...'];
Sai
if [true] { console.log['losing']; }0
Sử dụng UpperCamelCase cho tên lớp
Tên lớp nên được viết hoa bằng cách sử dụng
if [true] { console.log['losing']; }6
Đúng
if [true] { console.log['losing']; }2
Sai
if [true] { console.log['losing']; }3
Sử dụng UPPERCASE cho hằng số
Các hằng nên được khai báo là biến thông thường hoặc thuộc tính lớp tĩnh, sử dụng tất cả các chữ cái viết hoa
Đúng
var foo = "bar";0
Sai
var foo = "bar";1
Biến
Tạo đối tượng/mảng
Sử dụng dấu phẩy ở cuối và đặt các khai báo ngắn trên một dòng. Chỉ trích dẫn các phím khi thông dịch viên của bạn phàn nàn
Đúng
var foo = "bar";2
Sai
var foo = "bar";3
điều kiện
Sử dụng toán tử ===
Lập trình không phải là ghi nhớ những quy tắc ngu ngốc. Sử dụng toán tử đẳng thức ba vì nó sẽ hoạt động như mong đợi
Đúng
var foo = "bar";4
Sai
var foo = "bar";5
Sử dụng toán tử ternary nhiều dòng
Toán tử bậc ba không nên được sử dụng trên một dòng. Thay vào đó hãy chia nó thành nhiều dòng
Đúng
var foo = "bar";6
Sai
var foo = "bar";7
Sử dụng điều kiện mô tả
Bất kỳ điều kiện không tầm thường nào cũng phải được gán cho một biến hoặc hàm có tên mô tả
Đúng
var foo = "bar";8
Sai
var foo = "bar";9
Chức năng
Viết các chức năng nhỏ
Giữ chức năng của bạn ngắn. Một chức năng tốt phù hợp với một slide mà những người ở hàng cuối cùng của một căn phòng lớn có thể đọc thoải mái. Vì vậy, đừng mong đợi họ có tầm nhìn hoàn hảo và giới hạn bản thân ở ~15 dòng mã cho mỗi chức năng
Trở về sớm từ chức năng
Để tránh lồng sâu các câu lệnh if, hãy luôn trả về giá trị của hàm càng sớm càng tốt
Đúng
if [true] { console.log['winning']; }0
Sai
if [true] { console.log['winning']; }1
Hoặc đối với ví dụ cụ thể này, bạn cũng có thể rút ngắn mọi thứ hơn nữa
if [true] { console.log['winning']; }2
Đặt tên cho các lần đóng cửa của bạn
Vui lòng đặt tên cho các lần đóng cửa của bạn. Nó cho thấy rằng bạn quan tâm đến chúng và sẽ tạo ra các dấu vết ngăn xếp, cấu hình heap và cpu tốt hơn
Đúng
if [true] { console.log['winning']; }3
Sai
if [true] { console.log['winning']; }4
Không có bao đóng lồng nhau
Sử dụng bao đóng, nhưng không lồng chúng. Nếu không, mã của bạn sẽ trở thành một mớ hỗn độn
Đúng
if [true] { console.log['winning']; }5
Sai
if [true] { console.log['winning']; }6
Phương pháp xâu chuỗi
Nên sử dụng một phương thức trên mỗi dòng nếu bạn muốn xâu chuỗi các phương thức
Bạn cũng nên thụt lề các phương thức này để dễ dàng nhận biết chúng là một phần của cùng một chuỗi
Đúng
if [true] { console.log['winning']; }7
Sai
if [true] { console.log['winning']; }8
Bình luận
Sử dụng dấu gạch chéo để nhận xét
Sử dụng dấu gạch chéo cho cả nhận xét một dòng và nhiều dòng. Cố gắng viết nhận xét giải thích các cơ chế cấp cao hơn hoặc làm rõ các đoạn mã khó của bạn. Đừng sử dụng bình luận để trình bày lại những điều nhỏ nhặt
Đúng
if [true] { console.log['winning']; }9
Sai
if [true] { console.log['losing']; }0
Điều khoản khác
Vật. đóng băng, đối tượng. ngăn chặn Tiện ích mở rộng, Đối tượng. con dấu, với, đánh giá
Những thứ điên rồ mà có lẽ bạn sẽ không bao giờ cần đến. Tránh xa nó
Yêu cầu ở trên cùng
Luôn đặt yêu cầu ở đầu tệp để minh họa rõ ràng các phần phụ thuộc của tệp. Bên cạnh việc cung cấp một cái nhìn tổng quan cho những người khác trong nháy mắt về các phụ thuộc và tác động bộ nhớ có thể xảy ra, nó cho phép một người xác định xem họ có cần một gói hay không. json nếu họ chọn sử dụng tệp ở nơi khác
Getters và setters
Không sử dụng trình cài đặt, chúng gây ra nhiều vấn đề cho những người cố gắng sử dụng phần mềm của bạn hơn là họ có thể giải quyết
Vui lòng sử dụng các getters không có tác dụng phụ, chẳng hạn như cung cấp thuộc tính độ dài cho lớp bộ sưu tập