Javascript tải xuống tệp lớn

Tài liệu này đóng vai trò là định nghĩa đầy đủ về các tiêu chuẩn viết mã của Google dành cho mã nguồn bằng ngôn ngữ lập trình JavaScript. Tệp nguồn JavaScript được mô tả là ở trong Google Style khi và chỉ khi nó tuân thủ các quy tắc ở đây

Giống như các hướng dẫn về phong cách lập trình khác, các vấn đề được đề cập không chỉ bao gồm các vấn đề thẩm mỹ về định dạng mà còn cả các loại quy ước hoặc tiêu chuẩn viết mã khác. Tuy nhiên, tài liệu này tập trung chủ yếu vào các quy tắc cứng rắn và nhanh chóng mà chúng tôi tuân theo trên toàn cầu và tránh đưa ra lời khuyên không thể thực thi rõ ràng [dù là do con người hay công cụ]

1. 1 Ghi chú thuật ngữ

Trong tài liệu này, trừ khi được giải thích khác

  1. Thuật ngữ nhận xét luôn đề cập đến nhận xét triển khai. Chúng tôi không sử dụng cụm từ nhận xét tài liệu, thay vào đó sử dụng thuật ngữ chung “JSDoc” cho cả chú thích văn bản mà con người có thể đọc được và chú thích mà máy có thể đọc được trong

    /* Poor: the reader has no idea what character this is. */
    const units = '\u03bcs';
    
    48

  2. Hướng dẫn Phong cách này sử dụng thuật ngữ RFC 2119 khi sử dụng các cụm từ phải, không được, nên, không nên và có thể. Các thuật ngữ thích và tránh tương ứng với nên và không nên tương ứng. Các câu mệnh lệnh và tuyên bố là quy định và tương ứng với phải

Các ghi chú thuật ngữ khác sẽ thỉnh thoảng xuất hiện trong toàn bộ tài liệu

1. 2 Ghi chú hướng dẫn

Mã ví dụ trong tài liệu này là phi quy chuẩn. Nghĩa là, trong khi các ví dụ ở trong Google Style, chúng có thể không minh họa cách duy nhất để thể hiện mã. Các lựa chọn định dạng tùy chọn được thực hiện trong các ví dụ không được thực thi như các quy tắc

2 Thông tin cơ bản về tệp nguồn

2. 1 Tên tệp

Tên tệp phải là chữ thường và có thể bao gồm dấu gạch dưới [

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
49] hoặc dấu gạch ngang [
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
50], nhưng không có dấu chấm câu bổ sung. Thực hiện theo quy ước mà dự án của bạn sử dụng. Phần mở rộng của tên tệp phải là
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
51

2. 2 Mã hóa tập tin. UTF-8

Các tệp nguồn được mã hóa bằng UTF-8

2. 3 ký tự đặc biệt

2. 3. 1 Ký tự khoảng trắng

Ngoài trình tự kết thúc dòng, ký tự khoảng cách ngang ASCII [0x20] là ký tự khoảng trắng duy nhất xuất hiện ở bất kỳ đâu trong tệp nguồn. Điều này ngụ ý rằng

  1. Tất cả các ký tự khoảng trắng khác trong chuỗi ký tự được thoát và

  2. Các ký tự tab không được sử dụng để thụt lề

2. 3. 2 Trình tự thoát hiểm đặc biệt

Đối với bất kỳ ký tự nào có một chuỗi thoát đặc biệt [

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
52,
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
53,
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
54,
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
55,
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
56,
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
57,
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
58,
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
59,
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
60], chuỗi đó được sử dụng thay vì chuỗi thoát số tương ứng [e. g
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
61,
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
62 hoặc
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
63]. Thoát bát phân kế thừa không bao giờ được sử dụng

2. 3. 3 ký tự không phải ASCII

Đối với các ký tự không phải ASCII còn lại, ký tự Unicode thực tế [e. g.

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
64] hoặc bộ thoát hex hoặc Unicode tương đương [e. g.
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
65] được sử dụng, chỉ phụ thuộc vào cái nào làm cho mã dễ đọc và dễ hiểu hơn

Mẹo. Trong trường hợp thoát Unicode và đôi khi ngay cả khi các ký tự Unicode thực được sử dụng, một nhận xét giải thích có thể rất hữu ích

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
8
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';

Mẹo. Đừng bao giờ làm cho mã của bạn khó đọc hơn chỉ vì sợ rằng một số chương trình có thể không xử lý đúng các ký tự không phải ASCII. Nếu điều đó xảy ra, các chương trình đó bị hỏng và chúng phải được sửa

3 Cấu trúc tệp nguồn

Tất cả các tệp nguồn mới phải là tệp

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
66 [tệp chứa lệnh gọi
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
66] hoặc mô-đun ECMAScript [ES] [sử dụng câu lệnh
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
68 và
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
69]. Các tập tin bao gồm những điều sau đây, theo thứ tự

  1. Thông tin giấy phép hoặc bản quyền, nếu có
  2. /* Poor: the reader has no idea what character this is. */
    const units = '\u03bcs';
    
    70 JSDoc, nếu có
  3. Câu lệnh
    /* Poor: the reader has no idea what character this is. */
    const units = '\u03bcs';
    
    66, nếu tệp
    /* Poor: the reader has no idea what character this is. */
    const units = '\u03bcs';
    
    66
  4. Các câu lệnh ES
    /* Poor: the reader has no idea what character this is. */
    const units = '\u03bcs';
    
    68, nếu một mô-đun ES
  5. Câu lệnh
    /* Poor: the reader has no idea what character this is. */
    const units = '\u03bcs';
    
    74 và
    /* Poor: the reader has no idea what character this is. */
    const units = '\u03bcs';
    
    75
  6. Việc triển khai tệp

Chính xác một dòng trống phân tách từng phần hiện có, ngoại trừ phần triển khai của tệp, có thể có 1 hoặc 2 dòng trống trước

3. 1 Giấy phép hoặc thông tin bản quyền, nếu có

Nếu thông tin giấy phép hoặc bản quyền thuộc về một tệp, thì nó thuộc về đây

3. 2
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
70 JSDoc, nếu có

Thấy ??

3. 3 câu lệnh
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
66

Tất cả các tệp

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
66 phải khai báo chính xác một tên
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
66 trên một dòng. các dòng chứa khai báo
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
66 không được ngắt dòng và do đó là ngoại lệ đối với giới hạn 80 cột

Toàn bộ đối số với google. mô-đun là những gì xác định một không gian tên. Đó là tên gói [một mã định danh phản ánh đoạn cấu trúc thư mục chứa mã] cộng với, tùy chọn, lớp/enum/giao diện chính mà nó xác định được nối vào cuối

Thí dụ

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
5

3. 3. 1 thứ bậc

Không gian tên mô-đun không bao giờ được đặt tên là con trực tiếp của không gian tên mô-đun khác

không được phép

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
6

Hệ thống phân cấp thư mục phản ánh hệ thống phân cấp không gian tên, sao cho các thư mục con được lồng sâu hơn là thư mục con của thư mục mẹ cấp cao hơn. Lưu ý rằng điều này ngụ ý rằng chủ sở hữu của các nhóm không gian tên "cha mẹ" nhất thiết phải biết về tất cả các không gian tên con, vì chúng tồn tại trong cùng một thư mục

3. 3. 2
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
81

Câu lệnh đơn

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
66 có thể tùy chọn được theo sau bởi lệnh gọi tới
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
83. Tránh
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
84 khi có thể

Thí dụ

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
1

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
81 tồn tại để dễ dàng chuyển đổi từ các không gian tên dựa trên phân cấp đối tượng truyền thống nhưng đi kèm với một số hạn chế đặt tên. Vì tên mô-đun con phải được tạo sau không gian tên cha, nên tên này không được là con hoặc cha của bất kỳ
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
66 nào khác [ví dụ:
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
87 và
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
88 không thể tồn tại an toàn, cũng như
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
87 và
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
90]

3. 3. 3
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
66 Xuất khẩu

Các lớp, enum, hàm, hằng số và các ký hiệu khác được xuất bằng đối tượng

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
92. Các biểu tượng đã xuất có thể được xác định trực tiếp trên đối tượng
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
92 hoặc được khai báo cục bộ và xuất riêng. Các biểu tượng chỉ được xuất nếu chúng được sử dụng bên ngoài mô-đun. Các ký hiệu cục bộ mô-đun không được xuất khẩu không được khai báo
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
94 cũng như tên của chúng không kết thúc bằng dấu gạch dưới. Không có thứ tự theo quy định cho các ký hiệu được xuất và mô-đun-cục bộ

ví dụ

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
2____53

Không chú thích đối tượng

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
92 là
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
96 vì nó đã được trình biên dịch coi là hằng số

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
6

3. 4 mô-đun ES

3. 4. 1 Nhập khẩu

Báo cáo nhập khẩu không được ngắt dòng và do đó là một ngoại lệ đối với giới hạn 80 cột

3. 4. 1. 1 Đường dẫn nhập

Các tệp mô-đun ES phải sử dụng câu lệnh

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
68 để nhập các tệp mô-đun ES khác. Đừng
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
74 mô-đun ES khác

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
93. 4. 1. 1. 1 Phần mở rộng tệp trong đường dẫn nhập

Phần mở rộng tệp

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
51 không phải là tùy chọn trong đường dẫn nhập và phải luôn được đưa vào

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
1
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
0

Không nhập cùng một tệp nhiều lần. Điều này có thể gây khó khăn cho việc xác định số lần nhập tổng hợp của một tệp

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
13. 4. 1. 3 Đặt tên nhập khẩu3. 4. 1. 3. 1 Nhập mô-đun đặt tên

Tên nhập mô-đun [

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
500] là tên
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
501 được lấy từ tên tệp đã nhập

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
2
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
33. 4. 1. 3. 2 Đặt tên nhập khẩu mặc định

Tên nhập mặc định được bắt nguồn từ tên tệp đã nhập và tuân theo các quy tắc trong ??

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
4

Ghi chú. Nói chung, điều này sẽ không xảy ra vì xuất mặc định bị cấm theo hướng dẫn kiểu này, hãy xem ??. Nhập mặc định chỉ được sử dụng để nhập các mô-đun không tuân theo hướng dẫn kiểu này

3. 4. 1. 3. 3 Đặt tên cho hàng nhập đã đặt tên

Nói chung, các ký hiệu được nhập thông qua quá trình nhập có tên [______3502] nên giữ nguyên tên. Tránh nhập bí danh [______3503]. Thích sửa các xung đột tên bằng cách sử dụng nhập mô-đun [

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
504] hoặc tự đổi tên các bản xuất

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
5

Nếu cần đổi tên một mục nhập đã đặt tên thì hãy sử dụng các thành phần của tên hoặc đường dẫn tệp của mô-đun đã nhập trong bí danh kết quả

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
6

3. 4. 2 xuất khẩu

Các biểu tượng chỉ được xuất nếu chúng được sử dụng bên ngoài mô-đun. Các ký hiệu cục bộ mô-đun không được xuất khẩu không được khai báo

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
94 cũng như tên của chúng không kết thúc bằng dấu gạch dưới. Không có thứ tự theo quy định cho các ký hiệu được xuất và mô-đun-cục bộ

3. 4. 2. 1 Xuất khẩu được đặt tên và mặc định

Sử dụng xuất khẩu có tên trong tất cả các mã. Bạn có thể áp dụng từ khóa

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
69 cho khai báo hoặc sử dụng cú pháp
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
507

Không sử dụng xuất khẩu mặc định. Nhập mô-đun phải đặt tên cho các giá trị này, điều này có thể dẫn đến sự không nhất quán trong việc đặt tên giữa các mô-đun

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
7____08
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
93. 4. 2. 2 Xuất các lớp và đối tượng vùng chứa tĩnh

Không xuất các lớp hoặc đối tượng vùng chứa bằng các phương thức hoặc thuộc tính tĩnh vì mục đích tạo không gian tên

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
50

Thay vào đó, hãy xuất các hằng số và hàm riêng lẻ

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
513. 4. 2. 3 Tính biến động của hàng xuất khẩu

Các biến đã xuất không được thay đổi bên ngoài quá trình khởi tạo mô-đun

Có các lựa chọn thay thế nếu cần thay đổi, bao gồm xuất một tham chiếu không đổi đến một đối tượng có các trường có thể thay đổi hoặc xuất các hàm truy cập cho dữ liệu có thể thay đổi

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
52
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
533. 4. 2. 4 xuất khẩu từ

Các câu lệnh

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
508 không được ngắt dòng và do đó là một ngoại lệ đối với giới hạn 80 cột. Điều này áp dụng cho cả hai hương vị
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
508

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
54

3. 4. 3 vòng phụ thuộc trong các mô-đun ES

Không tạo chu kỳ giữa các mô-đun ES, mặc dù đặc tả ECMAScript cho phép điều này. Lưu ý rằng có thể tạo chu trình bằng cả câu lệnh

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
68 và
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
69

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
55
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
56____357

3. 4. 4 Tương tác với Đóng cửa

3. 4. 4. 1 Tham khảo google

Để tham chiếu không gian tên Closure

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
512, nhập Closure's
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
513

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
58

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
513 chỉ xuất một tập hợp con các thuộc tính từ
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
512 toàn cầu có thể được sử dụng trong các mô-đun ES

3. 4. 4. 2 tốt. yêu cầu trong các mô-đun ES

Các mô-đun

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
74 trong ES hoạt động giống như trong các tệp
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
66. Bạn có thể yêu cầu bất kỳ ký hiệu không gian tên Closure nào [i. e. , ký hiệu được tạo bởi
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
518 hoặc
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
66] và
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
74 sẽ trả về giá trị

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
593. 4. 4. 3 Khai báo ID mô-đun đóng trong mô-đun ES

Có thể sử dụng

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
521 trong các mô-đun ES để khai báo ID mô-đun giống như
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
66. Điều này có nghĩa là ID mô-đun này có thể là
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
74d,
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
524d,
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
525'd, v.v. như thể đó là một
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
66 không gọi cho
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
81. Nó không tạo ID mô-đun dưới dạng biểu tượng JavaScript có sẵn trên toàn cầu

Một

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
74 [hoặc
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
524] cho ID mô-đun từ
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
521 sẽ luôn trả về đối tượng mô-đun [như thể nó là
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
504'd]. Do đó, đối số của _____3521 phải luôn kết thúc bằng _____3533

Ghi chú. Có lỗi khi gọi

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
81 trong mô-đun ES, nó chỉ có thể được gọi từ các tệp
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
66. Không có cách nào trực tiếp để liên kết một không gian tên kế thừa với một mô-đun ES

Chỉ nên sử dụng

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
521 để nâng cấp tệp Đóng lên mô-đun ES tại chỗ, nơi sử dụng xuất có tên

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
60

3. 5
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
537

Trong tệp

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
66, câu lệnh
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
66 có thể tùy chọn được theo sau bởi lệnh gọi tới
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
540

Trong một mô-đun ES, các câu lệnh

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
68 có thể tùy chọn được theo sau bởi một lệnh gọi tới
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
540

3. 6 câu lệnh
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
74 và
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
75

Nhập khẩu được thực hiện với câu lệnh

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
74 và
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
75. Các tên được nhập bởi một câu lệnh
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
74 có thể được sử dụng cả trong mã và trong các chú thích loại, trong khi những tên được nhập bởi một
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
75 chỉ có thể được sử dụng trong các chú thích loại

Các câu lệnh

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
74 và
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
75 tạo thành một khối liền kề không có dòng trống. Khối này tuân theo khai báo
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
66 được phân tách bằng một dòng trống. Toàn bộ đối số của
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
74 hoặc
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
75 là một không gian tên được xác định bởi một
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
66 trong một tệp riêng biệt. Câu lệnh
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
74 và
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
75 không được xuất hiện ở bất kỳ nơi nào khác trong tệp

Mỗi

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
74 hoặc
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
75 được gán cho một bí danh không đổi duy nhất hoặc nếu không thì được cấu trúc thành một số bí danh không đổi. Các bí danh này là cách duy nhất được chấp nhận để chỉ các phụ thuộc trong chú thích loại hoặc mã. Không được sử dụng các không gian tên đủ điều kiện ở bất kỳ đâu, ngoại trừ làm đối số cho
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
74 hoặc
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
75

Ngoại lệ. Các loại, biến và hàm được khai báo trong tệp bên ngoài phải sử dụng tên đủ điều kiện của chúng trong chú thích loại và mã

Bí danh phải khớp với thành phần cuối cùng được phân tách bằng dấu chấm trong không gian tên của mô-đun đã nhập

Ngoại lệ. Trong một số trường hợp nhất định, các thành phần bổ sung của không gian tên có thể được sử dụng để tạo bí danh dài hơn. Bí danh kết quả phải giữ lại cách viết hoa của mã định danh ban đầu để nó vẫn xác định chính xác loại của nó. Các bí danh dài hơn có thể được sử dụng để phân biệt các bí danh giống hệt nhau hoặc nếu nó cải thiện đáng kể khả năng đọc. Ngoài ra, phải sử dụng một bí danh dài hơn để ngăn che giấu các loại gốc như

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
561,
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
562,
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
563,
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
564 và
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
565 [để biết danh sách đầy đủ hơn, hãy xem API Web và Đối tượng tích hợp sẵn tiêu chuẩn tại MDN]. Khi đổi tên các bí danh bị hủy cấu trúc, một khoảng trắng phải theo sau dấu hai chấm theo yêu cầu trong ??

Một tệp không được chứa cả câu lệnh

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
74 và câu lệnh
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
75 cho cùng một không gian tên. Nếu tên đã nhập được sử dụng cả trong chú thích mã và loại, thì tên đó phải được nhập bằng một câu lệnh
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
74

Nếu một mô-đun được nhập chỉ vì tác dụng phụ của nó, cuộc gọi phải là một

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
74 [không phải một
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
75] và phép gán có thể bị bỏ qua. Cần có một bình luận để giải thích lý do tại sao điều này là cần thiết và loại bỏ cảnh báo của trình biên dịch

Các dòng được sắp xếp theo các quy tắc sau. Tất cả các yêu cầu có tên ở phía bên trái được ưu tiên trước, được sắp xếp theo thứ tự bảng chữ cái của các tên đó. Sau đó, yêu cầu phá hủy, được sắp xếp lại theo tên ở phía bên trái. Cuối cùng, bất kỳ cuộc gọi yêu cầu nào độc lập [thường là những cuộc gọi này dành cho các mô-đun được nhập chỉ vì tác dụng phụ của chúng]

Mẹo. Không cần phải ghi nhớ lệnh này và thực thi thủ công. Bạn có thể dựa vào IDE của mình để báo cáo các yêu cầu không được sắp xếp chính xác

Nếu một bí danh hoặc tên mô-đun dài sẽ khiến một dòng vượt quá giới hạn 80 cột, thì nó không được ngắt dòng. các dòng yêu cầu là một ngoại lệ đối với giới hạn 80 cột

Thí dụ

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
61

nản lòng

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
62

không được phép

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
63

3. 7 Việc triển khai tệp

Việc triển khai thực tế diễn ra sau khi tất cả thông tin phụ thuộc được khai báo [cách nhau ít nhất một dòng trống]

Điều này có thể bao gồm bất kỳ khai báo mô-đun-cục bộ nào [hằng, biến, lớp, hàm, v.v.], cũng như bất kỳ biểu tượng được xuất nào

4 Định dạng

Lưu ý thuật ngữ. cấu trúc giống như khối đề cập đến phần thân của một lớp, hàm, phương thức hoặc khối mã được phân cách bằng dấu ngoặc nhọn. Lưu ý rằng, bởi ??

Mẹo. Sử dụng

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
571. Cộng đồng JavaScript đã đầu tư nỗ lực để đảm bảo clang-format hoạt động đúng trên các tệp JavaScript.
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
571 đã tích hợp với một số trình soạn thảo phổ biến

4. 1 niềng răng

4. 1. 1 Niềng răng được sử dụng cho tất cả các cấu trúc điều khiển

Niềng răng được yêu cầu cho tất cả các cấu trúc điều khiển [i. e.

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
573,
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
574,
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
575,
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
576,
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
577, cũng như bất kỳ cái nào khác], ngay cả khi phần nội dung chỉ chứa một câu lệnh duy nhất. Câu lệnh đầu tiên của một khối không trống phải bắt đầu trên dòng của chính nó

không được phép

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
64

Ngoại lệ. Một câu lệnh if đơn giản có thể nằm hoàn toàn trên một dòng mà không có dòng xuống dòng [và không có dòng nào khác] có thể được giữ trên một dòng không có dấu ngoặc nhọn khi nó cải thiện khả năng đọc. Đây là trường hợp duy nhất trong đó cấu trúc điều khiển có thể bỏ dấu ngoặc nhọn và dòng mới

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
65

4. 1. 2 khối rỗng. phong cách K&R

Dấu ngoặc theo kiểu Kernighan và Ritchie [dấu ngoặc của người Ai Cập] cho các khối không trống và các cấu trúc giống như khối

  • Không ngắt dòng trước dấu ngoặc mở
  • Ngắt dòng sau cú đúp mở đầu
  • Ngắt dòng trước dấu ngoặc nhọn
  • Ngắt dòng sau dấu ngoặc nhọn nếu dấu ngoặc nhọn đó kết thúc câu lệnh hoặc phần thân của hàm hoặc câu lệnh lớp hoặc phương thức lớp. Cụ thể, không có dấu ngắt dòng sau dấu ngoặc nhọn nếu theo sau nó là
    /* Poor: the reader has no idea what character this is. */
    const units = '\u03bcs';
    
    574,
    /* Poor: the reader has no idea what character this is. */
    const units = '\u03bcs';
    
    579,
    /* Poor: the reader has no idea what character this is. */
    const units = '\u03bcs';
    
    577 hoặc dấu phẩy, dấu chấm phẩy hoặc dấu ngoặc đơn bên phải

Thí dụ

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
66

4. 1. 3 khối trống. có thể ngắn gọn

Một khối trống hoặc cấu trúc giống như khối có thể được đóng lại ngay sau khi nó được mở ra, không có ký tự, dấu cách hoặc ngắt dòng ở giữa [i. e.

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
581], trừ khi nó là một phần của câu lệnh nhiều khối [câu lệnh chứa trực tiếp nhiều khối.
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
573/
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
574 hoặc
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
584/
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
579/
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
586]

Thí dụ

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
67

không được phép

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
68

4. 2 Khối thụt đầu dòng. +2 dấu cách

Mỗi khi một khối mới hoặc cấu trúc giống như khối được mở, phần thụt lề sẽ tăng thêm hai khoảng trắng. Khi khối kết thúc, thụt lề trở về mức thụt lề trước đó. Mức thụt lề áp dụng cho cả mã và nhận xét trong toàn bộ khối. [Xem ví dụ trong ??]

4. 2. 1 mảng chữ. giống như khối tùy chọn

Bất kỳ mảng chữ nào cũng có thể được định dạng tùy chọn như thể nó là một “cấu trúc giống như khối. ” Ví dụ: tất cả những điều sau đây đều hợp lệ [không phải là danh sách đầy đủ]

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
69
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
10

Các kết hợp khác được cho phép, đặc biệt khi nhấn mạnh các nhóm ngữ nghĩa giữa các phần tử, nhưng không nên chỉ được sử dụng để giảm kích thước dọc của các mảng lớn hơn

4. 2. 2 đối tượng chữ. giống như khối tùy chọn

Bất kỳ đối tượng theo nghĩa đen nào cũng có thể được định dạng tùy chọn như thể nó là một “cấu trúc giống như khối. ” Các ví dụ tương tự được áp dụng như ??. Ví dụ: tất cả những điều sau đây đều hợp lệ [không phải là danh sách đầy đủ]

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
11
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
12

4. 2. 3 Lớp chữ

Các ký tự lớp [dù là khai báo hay biểu thức] được thụt vào dưới dạng khối. Không thêm dấu chấm phẩy sau các phương thức hoặc sau dấu ngoặc nhọn đóng của một khai báo lớp [các câu lệnh—chẳng hạn như các phép gán—có chứa các biểu thức lớp vẫn được kết thúc bằng dấu chấm phẩy]. Sử dụng từ khóa

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
587, nhưng không phải chú thích
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
588 JSDoc trừ khi lớp mở rộng một loại được tạo khuôn mẫu

Thí dụ

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
13
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
14

4. 2. 4 Biểu thức hàm

Khi khai báo một hàm ẩn danh trong danh sách các đối số cho một lệnh gọi hàm, phần thân của hàm được thụt lề nhiều hơn hai khoảng trắng so với độ sâu thụt lề trước đó

Thí dụ

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
15

4. 2. 5 Câu lệnh chuyển đổi

Như với bất kỳ khối nào khác, nội dung của khối chuyển đổi được thụt vào +2

Sau nhãn chuyển đổi, một dòng mới xuất hiện và mức thụt đầu dòng được tăng lên +2, chính xác như thể một khối đang được mở. Một khối rõ ràng có thể được sử dụng nếu được yêu cầu bởi phạm vi từ vựng. Nhãn công tắc sau trở về mức thụt đầu dòng trước đó, như thể một khối đã bị đóng

Một dòng trống là tùy chọn giữa một

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
589 và trường hợp sau

Thí dụ

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
16

4. 3 Tuyên bố

4. 3. 1 Một câu lệnh trên mỗi dòng

Mỗi câu lệnh được theo sau bởi một dấu ngắt dòng

4. 3. 2 dấu chấm phẩy là bắt buộc

Mọi câu lệnh phải được kết thúc bằng dấu chấm phẩy. Dựa vào chèn dấu chấm phẩy tự động bị cấm

4. 4 Giới hạn cột. 80

Mã JavaScript có giới hạn cột là 80 ký tự. Ngoại trừ như được lưu ý bên dưới, bất kỳ dòng nào vượt quá giới hạn này đều phải được ngắt dòng, như được giải thích trong ??

ngoại lệ

  1. Câu lệnh
    /* Poor: the reader has no idea what character this is. */
    const units = '\u03bcs';
    
    66,
    /* Poor: the reader has no idea what character this is. */
    const units = '\u03bcs';
    
    74 và
    /* Poor: the reader has no idea what character this is. */
    const units = '\u03bcs';
    
    75 [xem ?? và ??]
  2. Câu lệnh mô-đun ES
    /* Poor: the reader has no idea what character this is. */
    const units = '\u03bcs';
    
    68 và
    /* Poor: the reader has no idea what character this is. */
    const units = '\u03bcs';
    
    508 [xem ?? và ??]
  3. Các dòng không thể tuân theo giới hạn cột hoặc sẽ cản trở khả năng khám phá. Những ví dụ bao gồm
    • Một URL dài có thể nhấp được trong nguồn
    • Một lệnh trình bao dự định được sao chép và dán
    • Một chuỗi ký tự dài có thể cần được sao chép hoặc tìm kiếm toàn bộ [e. g. , một đường dẫn tệp dài]

4. 5 Đóng gói dòng

Lưu ý thuật ngữ. Ngắt dòng đang chia một đoạn mã thành nhiều dòng để tuân theo giới hạn của cột, trong đó đoạn mã đó có thể nằm gọn trong một dòng một cách hợp pháp

Không có công thức toàn diện, xác định nào chỉ ra chính xác cách ngắt dòng trong mọi tình huống. Rất thường có một số cách hợp lệ để ngắt dòng cùng một đoạn mã

Ghi chú. Mặc dù lý do điển hình của việc ngắt dòng là để tránh vượt quá giới hạn cột, nhưng ngay cả mã thực tế phù hợp với giới hạn cột cũng có thể được ngắt dòng theo quyết định của tác giả

Mẹo. Trích xuất một phương thức hoặc biến cục bộ có thể giải quyết vấn đề mà không cần phải ngắt dòng

4. 5. 1 Nơi để phá vỡ

Chỉ thị chính của line-wrapping là. thích phá vỡ ở cấp độ cú pháp cao hơn

ưa thích

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
17

nản lòng

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
18

Trong ví dụ trước, các mức cú pháp từ cao nhất đến thấp nhất như sau. gán, chia, gọi hàm, tham số, hằng số

Toán tử được gói như sau

  1. Khi một dòng bị ngắt tại một toán tử, dấu ngắt xuất hiện sau ký hiệu. [Lưu ý rằng đây không phải là cách làm tương tự được sử dụng theo phong cách Google dành cho Java. ]
    1. Điều này không áp dụng cho dấu chấm [
      /* Poor: the reader has no idea what character this is. */
      const units = '\u03bcs';
      
      595], thực tế không phải là toán tử
  2. Tên phương thức hoặc hàm tạo được gắn vào dấu ngoặc đơn mở [
    /* Poor: the reader has no idea what character this is. */
    const units = '\u03bcs';
    
    596] theo sau nó
  3. Dấu phẩy [
    /* Poor: the reader has no idea what character this is. */
    const units = '\u03bcs';
    
    597] vẫn được gắn vào mã thông báo đứng trước nó

Ghi chú. Mục tiêu chính của việc ngắt dòng là có mã rõ ràng, không nhất thiết là mã phù hợp với số lượng dòng nhỏ nhất

4. 5. 2 dòng tiếp tục thụt lề ít nhất +4 dấu cách

Khi ngắt dòng, mỗi dòng sau dòng đầu tiên [mỗi dòng tiếp theo] được thụt vào ít nhất +4 so với dòng ban đầu, trừ khi nó tuân theo quy tắc thụt lề khối

Khi có nhiều dòng tiếp tục, thụt đầu dòng có thể thay đổi ngoài +4 khi thích hợp. Nói chung, các dòng tiếp tục ở cấp độ cú pháp sâu hơn được thụt vào bởi các bội số lớn hơn của 4 và hai dòng sử dụng cùng một mức độ thụt đầu dòng khi và chỉ khi chúng bắt đầu bằng các phần tử song song về mặt cú pháp

??

4. 6 Khoảng trắng

4. 6. 1 Khoảng trắng dọc

Một dòng trống duy nhất xuất hiện

  1. Giữa các phương thức liên tiếp trong một lớp hoặc đối tượng theo nghĩa đen
    1. Ngoại lệ. Một dòng trống giữa hai định nghĩa thuộc tính liên tiếp trong một đối tượng bằng chữ [không có mã nào khác giữa chúng] là tùy chọn. Các dòng trống như vậy được sử dụng khi cần thiết để tạo các nhóm trường hợp lý
  2. Trong nội dung phương thức, tiết kiệm để tạo các nhóm câu lệnh logic. Các dòng trống ở đầu hoặc cuối thân hàm không được phép
  3. Tùy chọn trước phương thức đầu tiên hoặc sau phương thức cuối cùng trong một lớp hoặc đối tượng theo nghĩa đen [không được khuyến khích cũng không được khuyến khích]
  4. Theo yêu cầu của các phần khác của tài liệu này [e. g. ??]

Nhiều dòng trống liên tiếp được cho phép, nhưng không bao giờ bắt buộc [cũng không được khuyến khích]

4. 6. 2 Khoảng trắng ngang

Việc sử dụng khoảng trắng ngang phụ thuộc vào vị trí và thuộc ba loại chính. đầu [ở đầu dòng], theo sau [ở cuối dòng] và nội bộ. Khoảng trắng hàng đầu [i. e. , thụt đầu dòng] được giải quyết ở nơi khác. Khoảng trắng ở cuối bị cấm

Ngoài những nơi được yêu cầu bởi ngôn ngữ hoặc các quy tắc kiểu dáng khác và ngoài chữ, nhận xét và JSDoc, một không gian ASCII bên trong cũng chỉ xuất hiện ở những vị trí sau

  1. Tách bất kỳ từ dành riêng nào [chẳng hạn như
    /* Poor: the reader has no idea what character this is. */
    const units = '\u03bcs';
    
    573,
    /* Poor: the reader has no idea what character this is. */
    const units = '\u03bcs';
    
    575 hoặc
    /* Poor: the reader has no idea what character this is. */
    const units = '\u03bcs';
    
    579] ngoại trừ
    /* Poor: the reader has no idea what character this is. */
    const units = '\u03bcs';
    
    601 và
    /* Poor: the reader has no idea what character this is. */
    const units = '\u03bcs';
    
    602, khỏi dấu ngoặc đơn mở [
    /* Poor: the reader has no idea what character this is. */
    const units = '\u03bcs';
    
    596] theo sau từ đó trên dòng đó
  2. Tách bất kỳ từ dành riêng nào [chẳng hạn như
    /* Poor: the reader has no idea what character this is. */
    const units = '\u03bcs';
    
    574 hoặc
    /* Poor: the reader has no idea what character this is. */
    const units = '\u03bcs';
    
    579] khỏi dấu ngoặc nhọn đóng [
    /* Poor: the reader has no idea what character this is. */
    const units = '\u03bcs';
    
    606] đứng trước từ đó trên dòng đó
  3. Trước bất kỳ dấu ngoặc nhọn mở nào [______3607], với hai ngoại lệ
    1. Trước một ký tự đối tượng là đối số đầu tiên của một hàm hoặc phần tử đầu tiên trong một ký tự mảng [e. g.
      /* Poor: the reader has no idea what character this is. */
      const units = '\u03bcs';
      
      608]
    2. Trong bản mở rộng mẫu, vì nó bị cấm bởi ngôn ngữ [e. g. có giá trị.
      /* Poor: the reader has no idea what character this is. */
      const units = '\u03bcs';
      
      609, không hợp lệ.
      /* Poor: the reader has no idea what character this is. */
      const units = '\u03bcs';
      
      610]
  4. Trên cả hai mặt của bất kỳ toán tử nhị phân hoặc bậc ba nào
  5. Sau dấu phẩy [
    /* Poor: the reader has no idea what character this is. */
    const units = '\u03bcs';
    
    597] hoặc dấu chấm phẩy [
    /* Poor: the reader has no idea what character this is. */
    const units = '\u03bcs';
    
    612]. Lưu ý rằng khoảng cách không bao giờ được phép trước các ký tự này
  6. Sau dấu hai chấm [
    /* Poor: the reader has no idea what character this is. */
    const units = '\u03bcs';
    
    613] trong một đối tượng theo nghĩa đen
  7. Ở cả hai bên của dấu gạch chéo kép [
    /* Poor: the reader has no idea what character this is. */
    const units = '\u03bcs';
    
    614] bắt đầu nhận xét cuối dòng. Ở đây, nhiều khoảng trắng được cho phép, nhưng không bắt buộc
  8. Sau một ký tự bình luận khối mở và ở cả hai bên của các ký tự đóng [e. g. cho các khai báo kiểu dạng ngắn, ép kiểu và nhận xét tên tham số.
    /* Poor: the reader has no idea what character this is. */
    const units = '\u03bcs';
    
    615;

4. 6. 3 Căn ngang. chán nản

Lưu ý thuật ngữ. Căn chỉnh theo chiều ngang là cách thêm một số khoảng trắng bổ sung có thể thay đổi vào mã của bạn với mục tiêu làm cho một số mã thông báo nhất định xuất hiện ngay bên dưới một số mã thông báo khác trên các dòng trước đó

Phương pháp này được cho phép, nhưng nó thường không được Google Style khuyến khích. Thậm chí không bắt buộc phải duy trì căn chỉnh ngang ở những nơi nó đã được sử dụng

Đây là một ví dụ không có căn chỉnh, theo sau là một ví dụ có căn chỉnh. Cả hai đều được phép, nhưng cái sau không được khuyến khích

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
19

Mẹo. Căn chỉnh có thể hỗ trợ khả năng đọc, nhưng nó tạo ra các vấn đề cho việc bảo trì trong tương lai. Xem xét một thay đổi trong tương lai chỉ cần chạm vào một dòng. Thay đổi này có thể khiến định dạng hài lòng trước đây bị xáo trộn và điều đó được cho phép. Thông thường, nó cũng nhắc người viết mã [có thể là bạn] điều chỉnh khoảng trắng trên các dòng gần đó, có thể kích hoạt một loạt định dạng lại xếp tầng. Thay đổi một dòng đó hiện có bán kính vụ nổ. Điều này tệ nhất có thể dẫn đến công việc bận rộn vô nghĩa, nhưng tốt nhất thì nó vẫn làm hỏng thông tin lịch sử phiên bản, làm chậm người đánh giá và làm trầm trọng thêm xung đột hợp nhất

4. 6. 4 Đối số chức năng

Thích đặt tất cả các đối số hàm trên cùng một dòng với tên hàm. Nếu làm như vậy sẽ vượt quá giới hạn 80 cột, các đối số phải được ngắt dòng theo cách có thể đọc được. Để tiết kiệm dung lượng, bạn có thể ngắt dòng càng gần 80 càng tốt hoặc đặt mỗi đối số trên một dòng riêng để dễ đọc hơn. Thụt đầu dòng phải là bốn khoảng trắng. Căn chỉnh theo dấu ngoặc đơn được cho phép, nhưng không được khuyến khích. Dưới đây là các mẫu phổ biến nhất để gói đối số

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
20

4. 7 Nhóm dấu ngoặc đơn. khuyến khích

Các dấu ngoặc nhóm tùy chọn chỉ được bỏ qua khi tác giả và người đánh giá đồng ý rằng không có khả năng mã sẽ bị hiểu sai nếu không có chúng, cũng như chúng sẽ không làm cho mã dễ đọc hơn. Không hợp lý khi cho rằng mọi đầu đọc đều ghi nhớ toàn bộ bảng ưu tiên toán tử

Không sử dụng dấu ngoặc đơn không cần thiết xung quanh toàn bộ biểu thức sau

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
618,
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
619,
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
620,
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
621,
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
622,
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
623,
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
624,
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
625 hoặc
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
626

Dấu ngoặc đơn là bắt buộc đối với kiểu phôi.

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
627

Phần này giải quyết các ý kiến ​​​​thực hiện. JSDoc được xử lý riêng trong ??

Nhận xét khối được thụt lề ở cùng mức với mã xung quanh. Chúng có thể ở kiểu

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
628 hoặc kiểu
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
614. Đối với nhận xét nhiều dòng
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
628, các dòng tiếp theo phải bắt đầu bằng * được căn chỉnh với
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
631 trên dòng trước đó, để làm cho nhận xét rõ ràng mà không có ngữ cảnh bổ sung

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
21

Nhận xét không được đặt trong các hộp được vẽ bằng dấu hoa thị hoặc các ký tự khác

Không sử dụng JSDoc [______048] để nhận xét triển khai

Nhận xét "Tên tham số" nên được sử dụng bất cứ khi nào giá trị và tên phương thức không truyền đạt đầy đủ ý nghĩa và việc tái cấu trúc phương thức để rõ ràng hơn là không khả thi. Định dạng ưa thích của họ là trước giá trị với =

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
22

Để thống nhất với mã xung quanh, bạn có thể đặt chúng sau giá trị mà không có =

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
23

5 Tính năng ngôn ngữ

JavaScript bao gồm nhiều tính năng đáng ngờ [và thậm chí nguy hiểm]. Phần này mô tả những tính năng nào có thể được sử dụng hoặc không được sử dụng và mọi ràng buộc bổ sung đối với việc sử dụng chúng

5. 1 Khai báo biến cục bộ

5. 1. 1 Sử dụng
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
633 và
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
634

Khai báo tất cả các biến cục bộ bằng

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
633 hoặc
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
634. Sử dụng const theo mặc định, trừ khi một biến cần được gán lại. Không được sử dụng từ khóa
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
637

5. 1. 2 Mỗi khai báo một biến

Mỗi khai báo biến cục bộ chỉ khai báo một biến. khai báo như

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
638 không được sử dụng

5. 1. 3 Khai báo khi cần thiết, khởi tạo ngay khi có thể

Các biến cục bộ không được khai báo theo thói quen khi bắt đầu khối chứa hoặc cấu trúc giống như khối của chúng. Thay vào đó, các biến cục bộ được khai báo gần với điểm chúng được sử dụng lần đầu tiên [với lý do], để giảm thiểu phạm vi của chúng

5. 1. 4 Khai báo các loại theo yêu cầu

Các chú thích loại JSDoc có thể được thêm vào dòng phía trên khai báo hoặc nội dòng khác trước tên biến nếu không có JSDoc nào khác xuất hiện

Thí dụ

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
24

Không được phép trộn các kiểu nội tuyến và JSDoc. trình biên dịch sẽ chỉ xử lý JsDoc đầu tiên và các chú thích nội tuyến sẽ bị mất

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
25

Mẹo. Có nhiều trường hợp trình biên dịch có thể suy ra một kiểu đã được tạo khuôn mẫu nhưng không thể suy ra các tham số của nó. Đây là trường hợp đặc biệt khi lời gọi khởi tạo bằng chữ hoặc hàm tạo không bao gồm bất kỳ giá trị nào của loại tham số mẫu [e. g. , mảng trống, đối tượng,

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
564 hoặc
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
640] hoặc nếu biến được sửa đổi trong một bao đóng. Chú thích loại biến cục bộ đặc biệt hữu ích trong những trường hợp này vì nếu không, trình biên dịch sẽ suy ra tham số mẫu là không xác định

5. 2 mảng chữ

5. 2. 1 Sử dụng dấu phẩy sau

Bao gồm dấu phẩy ở cuối bất cứ khi nào có dấu ngắt dòng giữa phần tử cuối cùng và dấu ngoặc đóng

Thí dụ

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
26

5. 2. 2 Không sử dụng hàm tạo biến đổi
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
641

Hàm tạo dễ bị lỗi nếu các đối số được thêm hoặc xóa. Sử dụng một nghĩa đen thay thế

không được phép

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
27

Điều này hoạt động như mong đợi ngoại trừ trường hợp thứ ba. nếu

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
642 là một số nguyên thì
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
643 là một mảng có kích thước
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
642 trong đó tất cả các phần tử là
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
645. Nếu
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
642 là bất kỳ số nào khác, thì một ngoại lệ sẽ được đưa ra và nếu đó là bất kỳ số nào khác thì đó sẽ là một mảng một phần tử

Thay vào đó, hãy viết

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
28

Cho phép phân bổ rõ ràng một mảng có độ dài nhất định bằng cách sử dụng

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
647 khi thích hợp

5. 2. 3 Thuộc tính phi số

Không xác định hoặc sử dụng các thuộc tính không phải là số trên một mảng [ngoài

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
648]. Thay vào đó, hãy sử dụng
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
564 [hoặc
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
650]

5. 2. 4 Phá hủy

Các ký tự mảng có thể được sử dụng ở phía bên trái của phép gán để thực hiện hủy [chẳng hạn như khi giải nén nhiều giá trị từ một mảng đơn hoặc có thể lặp lại]. Phần tử còn lại cuối cùng có thể được bao gồm [không có khoảng cách giữa

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
651 và tên biến]. Các yếu tố nên được bỏ qua nếu chúng không được sử dụng

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
29

Việc hủy cấu trúc cũng có thể được sử dụng cho các tham số chức năng [lưu ý rằng tên tham số là bắt buộc nhưng có thể bỏ qua]. Luôn chỉ định

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
652 làm giá trị mặc định nếu tham số mảng bị hủy cấu trúc là tùy chọn và cung cấp các giá trị mặc định ở phía bên trái

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
30

không được phép

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
31

Mẹo. Để [không] đóng gói nhiều giá trị vào một tham số hoặc hàm trả về, hãy ưu tiên hủy đối tượng hơn là hủy mảng khi có thể, vì nó cho phép đặt tên các phần tử riêng lẻ và chỉ định một loại khác nhau cho từng phần tử

5. 2. 5 Toán tử trải rộng

Các ký tự mảng có thể bao gồm toán tử trải rộng [

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
651] để làm phẳng các phần tử ra khỏi một hoặc nhiều lần lặp khác. Toán tử trải rộng nên được sử dụng thay vì các cấu trúc khó xử hơn với
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
654. Không có khoảng trống sau
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
651

Thí dụ

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
32

5. 3 đối tượng chữ

5. 3. 1 Sử dụng dấu phẩy sau

Bao gồm dấu phẩy ở cuối bất cứ khi nào có dấu ngắt dòng giữa thuộc tính cuối cùng và dấu ngoặc nhọn đóng

5. 3. 2 Không sử dụng hàm tạo
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
650

Mặc dù

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
650 không gặp vấn đề giống như
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
641, nhưng nó vẫn không được phép vì tính nhất quán. Thay vào đó, hãy sử dụng một đối tượng bằng chữ [
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
581 hoặc
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
660]

5. 3. 3 Không trộn lẫn các phím được trích dẫn và không được trích dẫn

Các ký tự đối tượng có thể đại diện cho các cấu trúc [với các khóa và/hoặc ký hiệu không được trích dẫn] hoặc các ký tự [với các khóa được trích dẫn và/hoặc được tính toán]. Không trộn lẫn các loại khóa này trong một đối tượng theo nghĩa đen

không được phép

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
33

Điều này cũng mở rộng để chuyển tên thuộc tính cho các hàm, như

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
661. Cụ thể, làm như vậy sẽ phá vỡ mã được biên dịch vì trình biên dịch không thể đổi tên/làm xáo trộn chuỗi ký tự

không được phép

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
34

Điều này được thực hiện tốt nhất như

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
35

5. 3. 4 Tên thuộc tính được tính toán

Tên thuộc tính được tính toán [e. g. ,

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
662] được cho phép và được coi là khóa kiểu chính tả [được trích dẫn] [i. e. , không được trộn lẫn với các khóa không được trích dẫn] trừ khi thuộc tính được tính là ký hiệu [e. g. ,
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
663]. Các giá trị enum cũng có thể được sử dụng cho các khóa được tính toán, nhưng không được trộn lẫn với các khóa không phải enum theo cùng một nghĩa đen

5. 3. 5 Phương pháp tốc ký

Các phương thức có thể được định nghĩa trên các ký tự đối tượng bằng cách sử dụng tốc ký phương thức [

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
664] thay cho dấu hai chấm ngay sau đó là
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
601 hoặc ký tự hàm mũi tên

Thí dụ

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
36

Lưu ý rằng ________ 3666 trong một phương thức tốc ký hoặc

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
601 đề cập đến chính đối tượng theo nghĩa đen trong khi ________ 3666 trong một hàm mũi tên đề cập đến phạm vi bên ngoài đối tượng theo nghĩa đen

Thí dụ

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
37

5. 3. 6 thuộc tính tốc ký

Thuộc tính tốc ký được phép trên đối tượng chữ

Thí dụ

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
38

5. 3. 7 Phá hủy

Các mẫu phá hủy đối tượng có thể được sử dụng ở phía bên trái của một nhiệm vụ để thực hiện phá hủy và giải nén nhiều giá trị từ một đối tượng

Các đối tượng bị hủy cấu trúc cũng có thể được sử dụng làm tham số chức năng, nhưng phải được giữ càng đơn giản càng tốt. một cấp duy nhất của các thuộc tính tốc ký không được trích dẫn. Các cấp độ sâu hơn của các thuộc tính được tính toán và lồng nhau có thể không được sử dụng trong quá trình phá hủy tham số. Chỉ định bất kỳ giá trị mặc định nào ở phía bên trái của tham số đã hủy cấu trúc [

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
669, thay vì
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
670] và nếu bản thân đối tượng đã hủy cấu trúc là tùy chọn, thì đối tượng đó phải được đặt mặc định là
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
581. JSDoc cho tham số bị hủy cấu trúc có thể được đặt bất kỳ tên nào [tên này không được sử dụng nhưng được yêu cầu bởi trình biên dịch]

Thí dụ

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
39

không được phép

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
60

Việc hủy cấu trúc cũng có thể được sử dụng cho các câu lệnh

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
74 và trong trường hợp này không được bao bọc. toàn bộ câu lệnh chiếm một dòng, bất kể nó dài bao nhiêu [xem ??]

5. 3. 8 bảng liệt kê

Việc liệt kê được xác định bằng cách thêm chú thích

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
673 vào một đối tượng theo nghĩa đen. Các thuộc tính bổ sung có thể không được thêm vào một enum sau khi nó được xác định. Enums phải là hằng số và tất cả các giá trị enum phải không thay đổi sâu sắc

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
61

5. 4 lớp

5. 4. 1 nhà xây dựng

Constructor là tùy chọn. Các hàm tạo của lớp con phải gọi

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
674 trước khi đặt bất kỳ trường nào hoặc truy cập vào
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
666. Các giao diện nên khai báo các thuộc tính phi phương thức trong hàm tạo

5. 4. 2 trường

Đặt tất cả các trường của một đối tượng cụ thể [i. e. tất cả các thuộc tính khác với phương thức] trong hàm tạo. Chú thích các trường không bao giờ được gán lại với

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
96 [những trường này không cần phải quá bất biến]. Chú thích các trường không công khai bằng chú thích khả năng hiển thị phù hợp [
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
94,
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
678,
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
679] và kết thúc tên của tất cả các trường
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
94 bằng dấu gạch dưới. Các trường không bao giờ được đặt trên một lớp cụ thể'
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
681

Thí dụ

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
62

Mẹo. Không bao giờ được thêm hoặc xóa các thuộc tính khỏi một phiên bản sau khi hàm tạo kết thúc, vì nó cản trở đáng kể khả năng tối ưu hóa của máy ảo. Nếu cần, các trường được khởi tạo sau này phải được đặt rõ ràng thành

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
645 trong hàm tạo để ngăn thay đổi hình dạng sau này. Thêm
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
683 vào một đối tượng sẽ kiểm tra xem các thuộc tính không được khai báo không được thêm/truy cập. Các lớp có thêm cái này theo mặc định

5. 4. 3 Thuộc tính tính toán

Các thuộc tính được tính chỉ có thể được sử dụng trong các lớp khi thuộc tính là một ký hiệu. Các thuộc tính kiểu chính tả [nghĩa là các khóa không phải ký hiệu được trích dẫn hoặc tính toán, như được định nghĩa trong ??] không được phép. Một phương thức

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
663 nên được xác định cho bất kỳ lớp nào có thể lặp lại một cách hợp lý. Ngoài điều này,
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
685 nên được sử dụng một cách tiết kiệm

Mẹo. hãy cẩn thận khi sử dụng bất kỳ biểu tượng tích hợp nào khác [e. g. ,

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
686] vì chúng không được trình biên dịch điền vào và do đó sẽ không hoạt động trong các trình duyệt cũ hơn

5. 4. 4 phương thức tĩnh

Khi nó không ảnh hưởng đến khả năng đọc, hãy ưu tiên các hàm mô-đun cục bộ hơn các phương thức tĩnh riêng tư

Các phương thức tĩnh chỉ nên được gọi trên chính lớp cơ sở. Các phương thức tĩnh không nên được gọi trên các biến chứa một thể hiện động có thể là hàm tạo hoặc hàm tạo của lớp con [và phải được xác định bằng

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
687 nếu điều này được thực hiện] và không được gọi trực tiếp trên lớp con không xác định

không được phép

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
63

5. 4. 5 Khai báo lớp kiểu cũ

Mặc dù các lớp ES6 được ưu tiên hơn, nhưng có những trường hợp các lớp ES6 có thể không khả thi. Ví dụ

  1. Nếu tồn tại hoặc sẽ tồn tại các lớp con, bao gồm cả các khung tạo ra các lớp con, không thể thay đổi ngay lập tức để sử dụng cú pháp lớp ES6. Nếu một lớp như vậy sử dụng cú pháp ES6, thì tất cả các lớp con xuôi dòng không sử dụng cú pháp lớp ES6 sẽ cần phải được sửa đổi

  2. Các khung yêu cầu giá trị

    /* Poor: the reader has no idea what character this is. */
    const units = '\u03bcs';
    
    666 đã biết trước khi gọi hàm tạo của siêu lớp, vì các hàm tạo với siêu lớp ES6 không có quyền truy cập vào giá trị
    /* Poor: the reader has no idea what character this is. */
    const units = '\u03bcs';
    
    666 của thể hiện cho đến khi lệnh gọi tới
    /* Poor: the reader has no idea what character this is. */
    const units = '\u03bcs';
    
    602 trả về

Trong tất cả các cách khác, hướng dẫn kiểu vẫn áp dụng cho mã này. Tất cả các tham số mặc định, phần còn lại và hàm mũi tên đều nên được sử dụng khi thích hợp

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
634,
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
633

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
693 cho phép định nghĩa giống như lớp tương tự như cú pháp lớp ES6

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
64

Ngoài ra, mặc dù

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
693 nên được ưu tiên cho tất cả mã mới, nhưng cú pháp truyền thống hơn cũng được cho phép

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
65

Các thuộc tính của mỗi cá thể phải được xác định trong hàm tạo sau lệnh gọi hàm tạo siêu lớp, nếu có một siêu lớp. Các phương thức nên được xác định trên nguyên mẫu của hàm tạo

Xác định chính xác hệ thống phân cấp nguyên mẫu của hàm tạo khó hơn so với lần đầu tiên xuất hiện. Vì lý do đó, tốt nhất là sử dụng

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
695 từ Thư viện đóng cửa

5. 4. 6 Không thao tác trực tiếp với
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
681

Từ khóa

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
697 cho phép định nghĩa lớp rõ ràng và dễ đọc hơn so với định nghĩa thuộc tính
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
681. Mã triển khai thông thường không có thao tác với các đối tượng này, mặc dù chúng vẫn hữu ích để định nghĩa các lớp như đã định nghĩa trong ??. Mixins và sửa đổi các nguyên mẫu của các đối tượng dựng sẵn bị cấm rõ ràng

Ngoại lệ. Mã khung [chẳng hạn như Polymer hoặc Angular] có thể cần sử dụng các

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
681 và không nên sử dụng các giải pháp thậm chí còn tệ hơn để tránh làm như vậy

5. 4. 7 Getters và Setters

Không sử dụng các thuộc tính getter và setter của JavaScript. Chúng có khả năng gây ngạc nhiên và khó giải thích và có sự hỗ trợ hạn chế trong trình biên dịch. Thay vào đó hãy cung cấp các phương thức thông thường

Ngoại lệ. có những tình huống không thể tránh khỏi việc xác định getter hoặc setter [e. g. các khung liên kết dữ liệu như Angular và Polymer hoặc để tương thích với các API bên ngoài không thể điều chỉnh]. Chỉ trong những trường hợp này, getters và setters có thể được sử dụng một cách thận trọng, miễn là chúng được xác định bằng các từ khóa phương pháp tốc ký

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
100 và
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
101 hoặc
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
102 [không phải
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
103, cản trở việc đổi tên thuộc tính]. Getters không được thay đổi trạng thái quan sát được

không được phép

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
66

5. 4. 8 Ghi đè lênString

Phương pháp

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
104 có thể bị ghi đè, nhưng phải luôn thành công và không bao giờ có tác dụng phụ có thể nhìn thấy

Mẹo. Đặc biệt, hãy cẩn thận khi gọi các phương thức khác từ toString, vì các điều kiện ngoại lệ có thể dẫn đến các vòng lặp vô hạn

5. 4. 9 giao diện

Các giao diện có thể được khai báo bằng

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
105 hoặc
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
106. Các giao diện được khai báo với
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
106 có thể rõ ràng [i. e. thông qua
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
108] hoặc được triển khai ngầm bởi một lớp hoặc đối tượng theo nghĩa đen

Tất cả các nội dung phương thức không tĩnh trên giao diện phải là các khối trống. Các trường phải được khai báo là thành viên chưa được khởi tạo trong hàm tạo của lớp

Thí dụ

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
67

5. 4. 10 lớp trừu tượng

Sử dụng các lớp trừu tượng khi thích hợp. Các lớp và phương thức trừu tượng phải được chú thích bằng

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
109. Không sử dụng
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
110. Xem các lớp và phương thức trừu tượng

5. 5 chức năng

5. 5. 1 Chức năng cấp cao nhất

Các chức năng cấp cao nhất có thể được xác định trực tiếp trên đối tượng

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
92 hoặc nếu không thì được khai báo cục bộ và xuất tùy chọn. Thấy ??

ví dụ

_______568____569

5. 5. 2 Hàm lồng nhau và bao đóng

Các hàm có thể chứa các định nghĩa hàm lồng nhau. Nếu việc đặt tên cho hàm là hữu ích, thì nó nên được gán cho một

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
633 cục bộ

5. 5. 3 chức năng mũi tên

Hàm mũi tên cung cấp cú pháp hàm ngắn gọn và đơn giản hóa phạm vi

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
666 cho các hàm lồng nhau. Thích các hàm mũi tên hơn từ khóa
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
601, đặc biệt đối với các hàm lồng nhau [nhưng hãy xem ??]

Thích các chức năng mũi tên hơn các phương pháp tiếp cận phạm vi

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
666 khác, chẳng hạn như
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
116,
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
117 và
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
118. Các hàm mũi tên đặc biệt hữu ích để gọi vào các cuộc gọi lại vì chúng cho phép chỉ định rõ ràng tham số nào sẽ chuyển đến cuộc gọi lại trong khi ràng buộc sẽ chuyển qua tất cả các tham số một cách mù quáng

Phía bên trái của mũi tên chứa 0 hoặc nhiều tham số. Dấu ngoặc đơn xung quanh các tham số là tùy chọn nếu chỉ có một tham số không bị hủy cấu trúc. Khi sử dụng dấu ngoặc đơn, các loại tham số nội tuyến có thể được chỉ định [xem ??]

Mẹo. Việc luôn sử dụng dấu ngoặc đơn ngay cả đối với các hàm mũi tên có một tham số có thể tránh được các trường hợp khi thêm tham số nhưng quên thêm dấu ngoặc đơn, có thể dẫn đến mã có thể phân tích cú pháp không còn hoạt động như dự định

Phía bên phải của mũi tên chứa phần thân của hàm. Theo mặc định, phần thân là một câu lệnh khối [không hoặc nhiều câu lệnh được bao quanh bởi dấu ngoặc nhọn]. Phần thân cũng có thể là một biểu thức đơn được trả về hoàn toàn nếu một trong hai. logic chương trình yêu cầu trả về một giá trị hoặc toán tử

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
620 đứng trước một lệnh gọi phương thức hoặc hàm duy nhất [sử dụng
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
620 đảm bảo trả về
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
645, ngăn các giá trị bị rò rỉ và truyền đạt ý định]. Dạng biểu thức đơn được ưu tiên nếu nó cải thiện khả năng đọc [e. g. , cho các biểu thức ngắn hoặc đơn giản]

ví dụ

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
90

không được phép

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
91

5. 5. 4 máy phát điện

Trình tạo cho phép một số trừu tượng hữu ích và có thể được sử dụng khi cần thiết

Khi xác định các hàm tạo, hãy đính kèm

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
631 với từ khóa
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
601 khi có mặt và tách nó bằng khoảng trắng khỏi tên của hàm. Khi sử dụng lợi suất ủy quyền, hãy đính kèm từ khóa
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
631 với từ khóa
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
626

Thí dụ

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
92

5. 5. 5 Tham số và kiểu trả về

Các tham số hàm và kiểu trả về thường phải được ghi lại bằng các chú thích JSDoc. Thấy ??

5. 5. 5. 1 Thông số mặc định

Các tham số tùy chọn được phép sử dụng toán tử bằng trong danh sách tham số. Các tham số tùy chọn phải bao gồm khoảng trắng ở cả hai bên của toán tử bằng, được đặt tên chính xác như các tham số bắt buộc [i. e. , không có tiền tố là

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
126], hãy sử dụng hậu tố
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
127 trong loại JSDoc của chúng, đặt sau các tham số bắt buộc và không sử dụng các trình khởi tạo tạo ra tác dụng phụ có thể quan sát được. Tất cả các tham số tùy chọn cho các chức năng cụ thể phải có giá trị mặc định, ngay cả khi giá trị đó là
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
645. Trái ngược với các hàm cụ thể, các phương thức trừu tượng và giao diện phải bỏ qua các giá trị tham số mặc định

Thí dụ

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
93

Sử dụng các tham số mặc định một cách tiết kiệm. Thích phá hủy [như trong ??] để tạo API có thể đọc được khi có nhiều hơn một số ít tham số tùy chọn không có thứ tự tự nhiên

Ghi chú. Không giống như các tham số mặc định của Python, bạn có thể sử dụng các trình khởi tạo trả về các đối tượng có thể thay đổi mới [chẳng hạn như

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
581 hoặc
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
652] vì trình khởi tạo được ước tính mỗi khi giá trị mặc định được sử dụng, do đó, một đối tượng sẽ không được chia sẻ giữa các lệnh

Mẹo. Mặc dù các biểu thức tùy ý bao gồm các lệnh gọi hàm có thể được sử dụng làm trình khởi tạo, nhưng chúng nên được giữ càng đơn giản càng tốt. Tránh các trình khởi tạo hiển thị trạng thái có thể thay đổi được chia sẻ, vì điều đó có thể dễ dàng tạo ra sự ghép nối ngoài ý muốn giữa các lệnh gọi hàm

5. 5. 5. 2 Thông số nghỉ ngơi

Sử dụng tham số còn lại thay vì truy cập

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
131. Các tham số còn lại được nhập bằng tiền tố
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
651 trong JSDoc của chúng. Tham số còn lại phải là tham số cuối cùng trong danh sách. Không có khoảng cách giữa
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
651 và tên tham số. Không đặt tên cho tham số còn lại
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
134. Không bao giờ đặt tên biến cục bộ hoặc tham số
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
131, điều này làm mờ tên tích hợp một cách khó hiểu

Thí dụ

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
94

5. 5. 6 thuốc gốc

Khai báo các hàm và phương thức chung khi cần thiết với

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
136 trong JSDoc phía trên định nghĩa hàm hoặc phương thức

5. 5. 7 Toán tử trải rộng

Lời gọi hàm có thể sử dụng toán tử trải rộng [______3651]. Ưu tiên toán tử trải rộng hơn là

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
138 khi một mảng hoặc khả năng lặp được giải nén thành nhiều tham số của hàm biến thiên. Không có khoảng trống sau
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
651

Thí dụ

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
95

5. 6 chuỗi ký tự

5. 6. 1 Sử dụng dấu nháy đơn

Chuỗi ký tự thông thường được phân định bằng dấu nháy đơn [

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
140], thay vì dấu nháy kép [
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
141]

Mẹo. nếu một chuỗi chứa một ký tự trích dẫn, hãy cân nhắc sử dụng chuỗi mẫu để tránh phải thoát khỏi trích dẫn

Chuỗi ký tự thông thường không được trải dài trên nhiều dòng

5. 6. 2 Chữ mẫu

Sử dụng các ký tự mẫu [được phân tách bằng

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
142] trên cách nối chuỗi phức tạp, đặc biệt nếu có nhiều ký tự chuỗi liên quan. Mẫu chữ có thể kéo dài nhiều dòng

Nếu một mẫu chữ kéo dài nhiều dòng, thì nó không cần phải tuân theo sự thụt lề của khối kèm theo, mặc dù điều đó có thể xảy ra nếu khoảng trắng được thêm vào không thành vấn đề

Thí dụ

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
96

5. 6. 3 Không tiếp tục dòng

Không sử dụng các phần tiếp theo của dòng [nghĩa là kết thúc một dòng bên trong một chuỗi ký tự bằng dấu gạch chéo ngược] bằng ký tự chuỗi thông thường hoặc chuỗi mẫu. Mặc dù ES5 cho phép điều này, nhưng nó có thể dẫn đến các lỗi phức tạp nếu có bất kỳ khoảng trắng ở cuối nào xuất hiện sau dấu gạch chéo và ít rõ ràng hơn đối với người đọc

không được phép

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
97

Thay vào đó, hãy viết

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
98

5. 7 chữ số

Các số có thể được chỉ định ở dạng thập phân, hex, bát phân hoặc nhị phân. Sử dụng chính xác các tiền tố

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
143,
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
144 và
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
145, với các chữ cái viết thường, tương ứng cho hệ thập lục phân, bát phân và nhị phân. Không bao giờ thêm số 0 ở đầu trừ khi ngay sau nó là
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
146,
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
147 hoặc
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
148

5. 8 Cấu trúc điều khiển

5. 8. 1 Đối với các vòng lặp

Với ES6, ngôn ngữ hiện có ba loại vòng lặp

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
575 khác nhau. Tất cả có thể được sử dụng, mặc dù các vòng lặp
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
575-
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
625 nên được ưu tiên hơn khi có thể

Các vòng lặp

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
575-
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
624 chỉ có thể được sử dụng trên các đối tượng kiểu dict [xem ??] và không được sử dụng để lặp qua một mảng.
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
154 nên được sử dụng trong các vòng lặp
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
575-
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
624 để loại trừ các thuộc tính nguyên mẫu không mong muốn. Ưu tiên
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
575-
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
625 và
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
159 hơn
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
575-
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
624 khi có thể

5. 8. 2 ngoại lệ

Ngoại lệ là một phần quan trọng của ngôn ngữ và nên được sử dụng bất cứ khi nào xảy ra trường hợp ngoại lệ. Luôn ném các lớp

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
563 hoặc lớp con của
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
563. không bao giờ ném chuỗi ký tự hoặc các đối tượng khác. Luôn sử dụng
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
164 khi xây dựng một
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
563

Cách xử lý này mở rộng đến các giá trị từ chối của

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
565 vì
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
167 tương đương với
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
168 trong các hàm không đồng bộ

Các ngoại lệ tùy chỉnh cung cấp một cách tuyệt vời để truyền tải thông tin lỗi bổ sung từ các chức năng. Chúng nên được xác định và sử dụng bất cứ nơi nào loại

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
563 gốc không đủ

Ưu tiên đưa ra các ngoại lệ hơn các phương pháp xử lý lỗi đặc biệt [chẳng hạn như chuyển loại tham chiếu vùng chứa lỗi hoặc trả về một đối tượng có thuộc tính lỗi]

Rất hiếm khi đúng khi không làm gì để đáp lại một ngoại lệ bị bắt. Khi thực sự thích hợp để không thực hiện bất kỳ hành động nào trong một khối bắt, lý do điều này là hợp lý được giải thích trong một nhận xét

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
99

không được phép

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
10

Mẹo. Không giống như ở một số ngôn ngữ khác, các mẫu như trên đơn giản là không hoạt động vì điều này sẽ phát hiện lỗi do

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
170 đưa ra. Sử dụng
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
171 để thay thế

5. 8. 3 Câu lệnh chuyển đổi

Lưu ý thuật ngữ. Bên trong dấu ngoặc nhọn của khối chuyển đổi là một hoặc nhiều nhóm câu lệnh. Mỗi nhóm câu lệnh bao gồm một hoặc nhiều nhãn chuyển đổi [hoặc là

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
172 hoặc là
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
173], theo sau là một hoặc nhiều câu lệnh

5. 8. 3. 1 mùa thu. nhận xét

Trong một khối chuyển đổi, mỗi nhóm câu lệnh hoặc kết thúc đột ngột [với ngoại lệ

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
589,
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
621 hoặc
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
622n] hoặc được đánh dấu bằng một nhận xét để chỉ ra rằng việc thực thi sẽ hoặc có thể tiếp tục trong nhóm câu lệnh tiếp theo. Bất kỳ nhận xét nào truyền đạt ý tưởng về sự thất bại là đủ [thường là
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
177]. Chú thích đặc biệt này không bắt buộc trong nhóm câu lệnh cuối cùng của khối chuyển đổi

Thí dụ

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
115. 8. 3. 2 Trường hợp
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
178 có mặt

Mỗi câu lệnh chuyển đổi bao gồm một nhóm câu lệnh

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
178, ngay cả khi nó không chứa mã. Nhóm tuyên bố
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
178 phải là cuối cùng

5. 9 cái này

Only use

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
666 in class constructors and methods, in arrow functions defined within class constructors and methods, or in functions that have an explicit
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
182 declared in the immediately-enclosing function’s JSDoc

Không bao giờ sử dụng

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
666 để chỉ đối tượng toàn cầu, bối cảnh của một
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
184, mục tiêu của một sự kiện hoặc các chức năng
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
185ed hoặc
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
186ed không cần thiết

5. 10 kiểm tra bình đẳng

Use identity operators [

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
187/
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
188] except in the cases documented below

5. 10. 1 Trường hợp ngoại lệ khi ép buộc là mong muốn

Bắt cả hai giá trị

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
189 và
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
645

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
12

5. 11 tính năng không được phép

5. 11. 1 với

Do not use the

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
191 keyword. Nó làm cho mã của bạn khó hiểu hơn và đã bị cấm ở chế độ nghiêm ngặt kể từ ES5

5. 11. 2 Đánh giá mã động

Không sử dụng

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
184 hoặc hàm tạo
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
193 [ngoại trừ trình tải mã]. These features are potentially dangerous and simply do not work in CSP environments

5. 11. 3 Chèn dấu chấm phẩy tự động

Always terminate statements with semicolons [except function and class declarations, as noted above]

5. 11. 4 Non-standard features

Do not use non-standard features. This includes old features that have been removed [e. g. ,

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
194], new features that are not yet standardized [e. g. , dự thảo làm việc TC39 hiện tại, các đề xuất ở bất kỳ giai đoạn nào hoặc các tiêu chuẩn web được đề xuất nhưng chưa hoàn chỉnh] hoặc các tính năng độc quyền chỉ được triển khai trong một số trình duyệt. Use only features defined in the current ECMA-262 or WHATWG standards. [Lưu ý rằng các dự án viết dựa trên các API cụ thể, chẳng hạn như tiện ích mở rộng của Chrome hoặc Node. js, can obviously use those APIs]. Các "phần mở rộng" ngôn ngữ phi tiêu chuẩn [chẳng hạn như phần mở rộng được cung cấp bởi một số bộ chuyển mã bên ngoài] đều bị cấm

5. 11. 5 đối tượng Wrapper cho các kiểu nguyên thủy

Không bao giờ sử dụng

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
164 trên các trình bao bọc đối tượng nguyên thủy [
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
196,
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
197,
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
198,
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
685], cũng như không đưa chúng vào chú thích loại

không được phép

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
13

Các trình bao bọc có thể được gọi là các hàm để ép buộc [được ưu tiên sử dụng hơn là sử dụng

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
200 hoặc nối chuỗi trống] hoặc tạo ký hiệu

Thí dụ

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
14

5. 11. 6 Sửa đổi các đối tượng dựng sẵn

Never modify builtin types, either by adding methods to their constructors or to their prototypes. Avoid depending on libraries that do this. Note that the JSCompiler’s runtime library will provide standards-compliant polyfills where possible; nothing else may modify builtin objects

Không thêm các ký hiệu vào đối tượng toàn cục trừ khi thực sự cần thiết [e. g. được yêu cầu bởi API của bên thứ ba]

5. 11. 7 Omitting
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
201 when invoking a constructor

Không bao giờ gọi hàm tạo trong câu lệnh

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
164 mà không sử dụng dấu ngoặc đơn
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
201

không được phép

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
15

sử dụng thay thế

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
16

Bỏ qua dấu ngoặc đơn có thể dẫn đến những sai lầm tinh vi. Hai dòng này không tương đương

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
17

6 đặt tên

6. 1 Quy tắc chung cho tất cả các định danh

Identifiers use only ASCII letters and digits, and, in a small number of cases noted below, underscores and very rarely [when required by frameworks like Angular] dollar signs

Đặt tên mô tả càng tốt, trong lý do. Đừng lo lắng về việc tiết kiệm không gian theo chiều ngang vì điều quan trọng hơn nhiều là làm cho mã của bạn dễ hiểu ngay lập tức đối với người đọc mới. Do not use abbreviations that are ambiguous or unfamiliar to readers outside your project, and do not abbreviate by deleting letters within a word

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
18

không được phép

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
19

6. 2 Quy tắc theo loại định danh

6. 2. 1 tên gói

Tên gói đều là

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
501. Ví dụ:
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
205, nhưng không phải
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
206 hoặc
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
207

6. 2. 2 Tên lớp

Tên lớp, giao diện, bản ghi và typedef được viết bằng

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
208. Các lớp chưa được xuất chỉ đơn giản là các lớp cục bộ. chúng không được đánh dấu
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
94 và do đó không được đặt tên với dấu gạch dưới

Tên loại thường là danh từ hoặc cụm danh từ. For example,

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
210,
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
211, or
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
212. Ngoài ra, tên giao diện đôi khi có thể là tính từ hoặc cụm tính từ thay thế [ví dụ:
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
213]

6. 2. 3 Tên phương thức

Method names are written in

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
501. Tên của các phương thức
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
94 phải kết thúc bằng dấu gạch dưới

Tên phương thức thường là động từ hoặc cụm động từ. Ví dụ:

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
216 hoặc
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
217. Các phương thức getter và setter cho các thuộc tính không bao giờ được yêu cầu, nhưng nếu chúng được sử dụng thì chúng nên được đặt tên là
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
218 [hoặc tùy chọn là
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
219 hoặc
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
220 cho booleans] hoặc
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
221 cho setters

Dấu gạch dưới cũng có thể xuất hiện trong tên phương thức thử nghiệm JsUnit để phân tách các thành phần logic của tên. One typical pattern is

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
222, for example
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
223. Không có một cách chính xác nào để đặt tên cho các phương pháp thử nghiệm

6. 2. 4 Enum names

Tên enum được viết bằng

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
208, tương tự như các lớp và thường phải là danh từ số ít. Các mục riêng lẻ trong enum được đặt tên trong
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
225

6. 2. 5 tên không đổi

Constant names use

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
225. tất cả các chữ cái viết hoa, với các từ được phân tách bằng dấu gạch dưới. Không có lý do gì để một hằng số được đặt tên với dấu gạch dưới ở cuối, vì các thuộc tính tĩnh riêng tư có thể được thay thế bằng các cục bộ mô-đun [ngầm riêng tư]

6. 2. 5. 1 Định nghĩa “hằng số”

Mỗi hằng số là một thuộc tính tĩnh

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
96 hoặc một khai báo
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
633 cục bộ mô-đun, nhưng không phải tất cả các thuộc tính tĩnh
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
96 và các
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
633 cục bộ mô-đun đều là hằng số. Trước khi chọn trường hợp không đổi, hãy xem xét liệu trường có thực sự giống như một hằng số bất biến sâu sắc hay không. For example, if any of that instance's observable state can change, it is almost certainly not a constant. Chỉ có ý định không bao giờ thay đổi đối tượng nói chung là không đủ

ví dụ

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
00

Constants’ names are typically nouns or noun phrases

6. 2. 5. 2 Local aliases

Các bí danh cục bộ nên được sử dụng bất cứ khi nào chúng cải thiện khả năng đọc so với các tên đủ điều kiện. Thực hiện theo các quy tắc tương tự như

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
74s [??], giữ nguyên phần cuối của tên bí danh. Bí danh cũng có thể được sử dụng trong các chức năng. Aliases must be
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
633

ví dụ

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
01

6. 2. 6 Tên trường không cố định

Non-constant field names [static or otherwise] are written in

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
501, with a trailing underscore for private fields

Những tên này thường là danh từ hoặc cụm danh từ. Ví dụ:

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
234 hoặc
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
235

6. 2. 7 Parameter names

Tên tham số được viết bằng

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
501. Note that this applies even if the parameter expects a constructor

Không nên sử dụng tên tham số một ký tự trong các phương thức công khai

Ngoại lệ. When required by a third-party framework, parameter names may begin with a

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
237. Ngoại lệ này không áp dụng cho bất kỳ số nhận dạng nào khác [e. g. local variables or properties]

6. 2. 8 Local variable names

Local variable names are written in

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
501, except for module-local [top-level] constants, as described above. Các hằng số trong phạm vi chức năng vẫn được đặt tên trong
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
501. Lưu ý rằng
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
501 được sử dụng ngay cả khi biến chứa một hàm tạo

6. 2. 9 Template parameter names

Tên tham số mẫu phải ngắn gọn, mã định danh một từ hoặc một chữ cái và phải viết hoa toàn bộ, chẳng hạn như

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
241 hoặc
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
242

6. 2. 10 Module-local names

Module-local names that are not exported are implicitly private. Chúng không được đánh dấu

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
94 và không kết thúc bằng dấu gạch dưới. This applies to classes, functions, variables, constants, enums, and other module-local identifiers

6. 3 Camel case. xác định

Đôi khi, có nhiều cách hợp lý để chuyển đổi một cụm từ tiếng Anh thành trường hợp lạc đà, chẳng hạn như khi có từ viết tắt hoặc cấu trúc bất thường như IPv6 hoặc iOS. Để cải thiện khả năng dự đoán, Google Style chỉ định lược đồ xác định [gần như] sau đây

Bắt đầu với hình thức văn xuôi của tên

  1. Chuyển đổi cụm từ thành ASCII đơn giản và xóa mọi dấu nháy đơn. Ví dụ, thuật toán của Müller có thể trở thành thuật toán của Mueller
  2. Chia kết quả này thành các từ, phân tách trên khoảng trắng và bất kỳ dấu câu nào còn lại [thường là dấu gạch nối]
    1. Recommended. if any word already has a conventional camel case appearance in common usage, split this into its constituent parts [e. g. , AdWords becomes ad words]. Note that a word such as iOS is not really in camel case per se; it defies any convention, so this recommendation does not apply
  3. Now lowercase everything [including acronyms], then uppercase only the first character of
    1. … each word, to yield upper camel case, or
    2. … each word except the first, to yield lower camel case
  4. Finally, join all the words into a single identifier

Note that the casing of the original words is almost entirely disregarded

ví dụ

Prose formCorrectIncorrectXML HTTP requestXmlHttpRequestXMLHTTPRequestnew customer IDnewCustomerIdnewCustomerIDinner stopwatchinnerStopwatchinnerStopWatchsupports IPv6 on iOS?supportsIpv6OnIossupportsIPv6OnIOSYouTube importerYouTubeImporterYoutubeImporter*

*Acceptable, but not recommended

Note. Some words are ambiguously hyphenated in the English language. for example nonempty and non-empty are both correct, so the method names checkNonempty and checkNonEmpty are likewise both correct

7 JSDoc

JSDoc is used on all classes, fields, and methods

7. 1 General form

The basic formatting of JSDoc blocks is as seen in this example

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
02

hoặc trong ví dụ một dòng này

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
03

Nếu nhận xét một dòng tràn thành nhiều dòng, thì nhận xét đó phải sử dụng kiểu nhiều dòng với

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
244 và
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
245 trên các dòng riêng của chúng

Many tools extract metadata from JSDoc comments to perform code validation and optimization. Như vậy, những bình luận này phải được hình thành tốt

7. 2 đánh dấu

JSDoc is written in Markdown, though it may include HTML when necessary

Lưu ý rằng các công cụ tự động giải nén JSDoc [e. g. JsDossier] thường sẽ bỏ qua định dạng văn bản thuần túy, vì vậy nếu bạn đã làm điều này

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
04

it would come out like this

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
05

Thay vào đó, hãy viết một danh sách Markdown

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
06

Google style allows a subset of JSDoc tags. Thấy ?? . Hầu hết các thẻ phải chiếm dòng riêng của chúng, với thẻ ở đầu dòng

không được phép

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
07

Các thẻ đơn giản không yêu cầu bất kỳ dữ liệu bổ sung nào [chẳng hạn như

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
94,
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
96,
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
248,
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
249] có thể được kết hợp trên cùng một dòng, cùng với một loại tùy chọn khi thích hợp

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
08

There is no hard rule for when to combine tags, or in which order, but be consistent

For general information about annotating types in JavaScript see Annotating JavaScript for the Closure Compiler and Types in the Closure Type System

7. 4 Line wrapping

Line-wrapped block tags are indented four spaces. Văn bản mô tả được ngắt dòng có thể được xếp thẳng hàng với mô tả trên các dòng trước, nhưng việc căn chỉnh theo chiều ngang này không được khuyến khích

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
09

Không thụt lề khi ngắt dòng mô tả

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
250 hoặc
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
70

Một tệp có thể có tổng quan về tệp cấp cao nhất. Thông báo bản quyền , thông tin tác giả và mức hiển thị mặc định là tùy chọn. File overviews are generally recommended whenever a file consists of more than a single class definition. The top level comment is designed to orient readers unfamiliar with the code to what is in this file. Nếu có, nó có thể cung cấp mô tả về nội dung của tệp và mọi thông tin phụ thuộc hoặc tương thích. Wrapped lines are not indented

Thí dụ

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
10

Classes, interfaces and records must be documented with a description and any template parameters, implemented interfaces, visibility, or other appropriate tags. Mô tả lớp phải cung cấp cho người đọc đủ thông tin để biết cách thức và thời điểm sử dụng lớp, cũng như mọi cân nhắc bổ sung cần thiết để sử dụng lớp đúng cách. Mô tả văn bản có thể được bỏ qua trên hàm tạo.

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
252 and
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
588 annotations are not used with the
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
697 keyword unless the class is being used to declare an
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
105 or it extends a generic class

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
11

All enums and typedefs must be documented with appropriate JSDoc tags [

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
256 or
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
673] on the preceding line. Công khai enums và typedefs cũng phải có một mô tả. Individual enum items may be documented with a JSDoc comment on the preceding line

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
12

Typedefs rất hữu ích để xác định các loại bản ghi ngắn hoặc bí danh cho các liên kết, các hàm phức tạp hoặc các loại chung. Typedefs nên tránh đối với các loại bản ghi có nhiều trường, vì chúng không cho phép ghi lại các trường riêng lẻ, cũng như không sử dụng mẫu hoặc tham chiếu đệ quy. Đối với các loại bản ghi lớn, hãy ưu tiên

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
106

In methods and named functions, parameter and return types must be documented, except in the case of same-signature

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
259s, where all types are omitted. Loại
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
666 phải được ghi lại khi cần thiết. Return type may be omitted if the function has no non-empty
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
621 statements

Các mô tả phương thức, tham số và trả về [nhưng không phải kiểu] có thể bị bỏ qua nếu chúng rõ ràng từ phần còn lại của JSDoc của phương thức hoặc từ chữ ký của nó

Method descriptions begin with a verb phrase that describes what the method does. This phrase is not an imperative sentence, but instead is written in the third person, as if there is an implied This method . trước nó

Nếu một phương thức ghi đè một phương thức của lớp bậc trên, nó phải bao gồm một chú thích

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
259. Các phương thức bị ghi đè kế thừa tất cả các chú thích JSDoc từ phương thức siêu hạng [bao gồm cả các chú thích khả năng hiển thị] và chúng nên được bỏ qua trong phương thức bị ghi đè. However, if any type is refined in type annotations, all
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
263 and
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
264 annotations must be specified explicitly

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
13

Nếu bạn chỉ cần ghi lại thông số và kiểu trả về của hàm, bạn có thể tùy ý sử dụng JSDocs nội tuyến trong chữ ký của hàm. Các JSDoc nội tuyến này chỉ định các loại trả về và thông số không có thẻ

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
14

If you need descriptions or tags, use a single JSDoc comment above the method. For example, methods which return values need a

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
264 tag

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
15
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
16

In anonymous functions annotations are generally optional. If the automatic type inference is insufficient or explicit annotation improves readability, then annotate param and return types like this

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
17

For function type expressions, see ??

Các loại tài sản phải được ghi lại. The description may be omitted for private properties, if name and type provide enough documentation for understanding the code

Publicly exported constants are commented the same way as properties

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
18

7. 10 Loại chú thích

Chú thích loại được tìm thấy trên các thẻ

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
263,
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
264,
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
182 và
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
269 và tùy chọn trên
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
96,
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
249 và bất kỳ thẻ hiển thị nào. Các chú thích loại được đính kèm với các thẻ JSDoc phải luôn được đặt trong dấu ngoặc nhọn

7. 10. 1 Nullability

The type system defines modifiers

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
272 and
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
273 for non-null and nullable, respectively. Các công cụ sửa đổi này phải đứng trước loại

Nullability modifiers have different requirements for different types, which fall into two broad categories

  1. Loại chú thích cho nguyên thủy [
    /* Poor: the reader has no idea what character this is. */
    const units = '\u03bcs';
    
    274,
    /* Poor: the reader has no idea what character this is. */
    const units = '\u03bcs';
    
    275,
    /* Poor: the reader has no idea what character this is. */
    const units = '\u03bcs';
    
    276,
    /* Poor: the reader has no idea what character this is. */
    const units = '\u03bcs';
    
    277,
    /* Poor: the reader has no idea what character this is. */
    const units = '\u03bcs';
    
    645,
    /* Poor: the reader has no idea what character this is. */
    const units = '\u03bcs';
    
    189] và chữ [
    /* Poor: the reader has no idea what character this is. */
    const units = '\u03bcs';
    
    280 và
    /* Poor: the reader has no idea what character this is. */
    const units = '\u03bcs';
    
    281] luôn không thể vô hiệu theo mặc định. Sử dụng công cụ sửa đổi
    /* Poor: the reader has no idea what character this is. */
    const units = '\u03bcs';
    
    273 để biến nó thành null, nhưng bỏ qua phần dư thừa
    /* Poor: the reader has no idea what character this is. */
    const units = '\u03bcs';
    
    272
  2. Reference types [generally, anything in
    /* Poor: the reader has no idea what character this is. */
    const units = '\u03bcs';
    
    208, including
    /* Poor: the reader has no idea what character this is. */
    const units = '\u03bcs';
    
    285] refer to a class, enum, record, or typedef defined elsewhere. Since these types may or may not be nullable, it is impossible to tell from the name alone whether it is nullable or not. Always use explicit
    /* Poor: the reader has no idea what character this is. */
    const units = '\u03bcs';
    
    273 and
    /* Poor: the reader has no idea what character this is. */
    const units = '\u03bcs';
    
    272 modifiers for these types to prevent ambiguity at use sites

Bad

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
19

Good

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
20

7. 10. 2 Type Casts

In cases where the compiler doesn't accurately infer the type of an expression, and the assertion functions in goog. khẳng định không thể khắc phục nó, có thể thắt chặt loại bằng cách thêm nhận xét chú thích loại và đặt biểu thức trong ngoặc đơn. Note that the parentheses are required

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
21

7. 10. 3 Template Parameter Types

Always specify template parameters. This way compiler can do a better job and it makes it easier for readers to understand what code does

Bad

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
22

Good

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
23

Cases when template parameters should not be used

  • /* Poor: the reader has no idea what character this is. */
    const units = '\u03bcs';
    
    650 is used for type hierarchy and not as map-like structure

7. 10. 4 Function type expressions

Terminology Note. function type expression refers to a type annotation for function types with the keyword

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
601 in the annotation [see examples below]

Where the function definition is given, do not use a function type expression. Specify parameter and return types with

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
263 and
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
264, or with inline annotations [see ??]. This includes anonymous functions and functions defined and assigned to a const [where the function jsdoc appears above the whole assignment expression]

Function type expressions are needed, for example, inside

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
256,
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
263 or
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
264. Use it also for variables or properties of function type, if they are not immediately initialized with the function definition

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
24

When using a function type expression, always specify the return type explicitly. Otherwise the default return type is unknown [

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
273], which leads to strange and unexpected behavior, and is rarely what is actually desired

Bad - type error, but no warning given

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
25

Good

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
26

7. 10. 5 Whitespace

Within a type annotation, a single space or line break is required after each comma or colon. Additional line breaks may be inserted to improve readability or avoid exceeding the column limit. Những dấu ngắt này nên được chọn và thụt lề theo hướng dẫn hiện hành [e. g. ?? and ??]. No other whitespace is allowed in type annotations

Good

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
27

Bad

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
28

7. 11 Visibility annotations

Visibility annotations [

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
94,
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
679,
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
678] may be specified in a
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
70 block, or on any exported symbol or property. Do not specify visibility for local variables, whether within a function or at the top level of a module. All
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
94 names must end with an underscore

8 Policies

8. 1 Issues unspecified by Google Style. Be Consistent

For any style question that isn't settled definitively by this specification, prefer to do what the other code in the same file is already doing. If that doesn't resolve the question, consider emulating the other files in the same package

8. 2 Compiler warnings

8. 2. 1 Use a standard warning set

As far as possible projects should use

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
301

8. 2. 2 How to handle a warning

Before doing anything, make sure you understand exactly what the warning is telling you. If you're not positive why a warning is appearing, ask for help

Once you understand the warning, attempt the following solutions in order

  1. First, fix it or work around it. Make a strong attempt to actually address the warning, or find another way to accomplish the task that avoids the situation entirely
  2. Otherwise, determine if it's a false alarm. If you are convinced that the warning is invalid and that the code is actually safe and correct, add a comment to convince the reader of this fact and apply the
    /* Poor: the reader has no idea what character this is. */
    const units = '\u03bcs';
    
    302 annotation
  3. Otherwise, leave a TODO comment. This is a last resort. If you do this, do not suppress the warning. The warning should be visible until it can be taken care of properly

8. 2. 3 Suppress a warning at the narrowest reasonable scope

Warnings are suppressed at the narrowest reasonable scope, usually that of a single local variable or very small method. Often a variable or method is extracted for that reason alone

Thí dụ

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
29

Even a large number of suppressions in a class is still better than blinding the entire class to this type of warning

Mark deprecated methods, classes or interfaces with

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
303 annotations. A deprecation comment must include simple, clear directions for people to fix their call sites

8. 4 Code not in Google Style

You will occasionally encounter files in your codebase that are not in proper Google Style. These may have come from an acquisition, or may have been written before Google Style took a position on some issue, or may be in non-Google Style for any other reason

8. 4. 1 Reformatting existing code

When updating the style of existing code, follow these guidelines

  1. It is not required to change all existing code to meet current style guidelines. Reformatting existing code is a trade-off between code churn and consistency. Style rules evolve over time and these kinds of tweaks to maintain compliance would create unnecessary churn. However, if significant changes are being made to a file it is expected that the file will be in Google Style
  2. Be careful not to allow opportunistic style fixes to muddle the focus of a CL. If you find yourself making a lot of style changes that aren’t critical to the central focus of a CL, promote those changes to a separate CL

8. 4. 2 Newly added code. use Google Style

Các tệp hoàn toàn mới sử dụng Google Style, bất kể lựa chọn kiểu của các tệp khác trong cùng một gói

When adding new code to a file that is not in Google Style, reformatting the existing code first is recommended, subject to the advice in ??

If this reformatting is not done, then new code should be as consistent as possible with existing code in the same file, but must not violate the style guide

8. 5 Local style rules

Teams and projects may adopt additional style rules beyond those in this document, but must accept that cleanup changes may not abide by these additional rules, and must not block such cleanup changes due to violating any additional rules. Beware of excessive rules which serve no purpose. The style guide does not seek to define style in every possible scenario and neither should you

8. 6 Generated code. mostly exempt

Source code generated by the build process is not required to be in Google Style. However, any generated identifiers that will be referenced from hand-written source code must follow the naming requirements. As a special exception, such identifiers are allowed to contain underscores, which may help to avoid conflicts with hand-written identifiers

9 Appendices

9. 1 JSDoc tag reference

JSDoc serves multiple purposes in JavaScript. In addition to being used to generate documentation it is also used to control tooling. The best known are the Closure Compiler type annotations

9. 1. 1 Type annotations and other Closure Compiler annotations

Documentation for JSDoc used by the Closure Compiler is described in Annotating JavaScript for the Closure Compiler and Types in the Closure Type System

9. 1. 2 Documentation annotations

In addition to the JSDoc described in Annotating JavaScript for the Closure Compiler the following tags are common and well supported by various documentation generation tools [such as JsDossier] for purely documentation purposes

You may also see other types of JSDoc annotations in third-party code. These annotations appear in the JSDoc Toolkit Tag Reference but are not considered part of valid Google style

9. 1. 2. 1
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
304 or
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
305 - Not recommended

Not recommended

Syntax.

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
306

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
30

Documents the author of a file or the owner of a test, generally only used in the

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
70 comment. The
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
305 tag is used by the unit test dashboard to determine who owns the test results

9. 1. 2. 2
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
309

Syntax.

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
310

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
31

Indicates what bugs the given test function regression tests

Multiple bugs should each have their own

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
309 line, to make searching for regression tests as easy as possible

9. 1. 2. 3
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
312 - Deprecated. Do not use

Deprecated. Do not use. Use Markdown backticks instead

Syntax.

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
313

Historically,

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
314 was written as
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
315

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
32

Indicates that a term in a JSDoc description is code so it may be correctly formatted in generated documentation

9. 1. 2. 4
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
250

Syntax.

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
317

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
33
9. 1. 2. 5
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
318

Syntax.

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
319

This tag is used to generate cross-reference links within generated documentation

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
34

Historical note. @link tags have also been used to create external links in generated documentation. Đối với các liên kết bên ngoài, hãy luôn sử dụng cú pháp liên kết của Markdown để thay thế

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
35
9. 1. 2. 6
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
320

Syntax.

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
321

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
36

Reference a lookup to another class function or method

9. 1. 2. 7
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
322

Syntax.

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
323

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
37

Used in a fileoverview to indicate what browsers are supported by the file

9. 1. 3 Framework specific annotations

The following annotations are specific to a particular framework

9. 1. 3. 1
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
324 for Angular 1
9. 1. 3. 2
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
325 for Polymer

https. //github. com/google/closure-compiler/wiki/Polymer-Pass

9. 1. 4 Notes about standard Closure Compiler annotations

The following tags used to be standard but are now deprecated

9. 1. 4. 1
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
326 - Deprecated. Do not use

không dùng nữa. Không được dùng. Sử dụng

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
249 và/hoặc
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
687 để thay thế

9. 1. 4. 2
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
329 - Không dùng nữa. Không được dùng

không dùng nữa. Không được dùng. Sử dụng

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
259 để thay thế

9. 2 Quy tắc phong cách thường bị hiểu lầm

Đây là tập hợp các sự kiện ít được biết đến hoặc thường bị hiểu lầm về Google Style cho JavaScript. [Sau đây là những tuyên bố đúng; đây không phải là danh sách những huyền thoại. ]

  • Không yêu cầu tuyên bố bản quyền cũng như tín dụng
    /* Poor: the reader has no idea what character this is. */
    const units = '\u03bcs';
    
    304 trong tệp nguồn. [Cả hai đều không được khuyến nghị rõ ràng. ]
  • Không có quy tắc cứng và nhanh nào quản lý cách sắp xếp thứ tự các thành viên của một lớp [??]
  • Các khối trống thường có thể được biểu diễn ngắn gọn dưới dạng
    /* Poor: the reader has no idea what character this is. */
    const units = '\u03bcs';
    
    581, như chi tiết trong [??]
  • Chỉ thị chính của line-wrapping là. thích ngắt ở cấp độ cú pháp cao hơn [??]
  • Các ký tự không phải ASCII được cho phép ở dạng chuỗi ký tự, nhận xét và JSDoc, và trên thực tế được khuyến nghị khi chúng làm cho mã dễ đọc hơn so với lối thoát Unicode tương đương [??]

Các công cụ sau tồn tại để hỗ trợ các khía cạnh khác nhau của Google Style

9. 3. 1 Trình biên dịch đóng cửa

Chương trình này thực hiện kiểm tra kiểu và các kiểm tra khác, tối ưu hóa và các chuyển đổi khác [chẳng hạn như giảm mã ECMAScript 6 xuống ECMAScript 5]

9. 3. 2
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
571

Chương trình này định dạng lại mã nguồn JavaScript thành Google Style và cũng tuân theo một số phương pháp định dạng nâng cao khả năng đọc không bắt buộc nhưng thường xuyên. Đầu ra do

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
571 tạo ra tuân thủ hướng dẫn về kiểu dáng

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
571 không bắt buộc. Các tác giả được phép thay đổi đầu ra của nó và người đánh giá được phép yêu cầu những thay đổi đó; . Tuy nhiên, các cây con có thể chọn tham gia thực thi như vậy cục bộ

9. 3. 3 Đóng trình biên dịch linter

Chương trình này kiểm tra một loạt các bước sai và chống mẫu

9. 3. 4 Khung tuân thủ

JS Conformance Framework là một công cụ nằm trong Closure Compiler cung cấp cho các nhà phát triển một phương tiện đơn giản để chỉ định một tập hợp các kiểm tra bổ sung sẽ được chạy đối với cơ sở mã của họ trên các kiểm tra tiêu chuẩn. Ví dụ: kiểm tra sự phù hợp có thể cấm truy cập vào một thuộc tính nhất định hoặc lệnh gọi đến một chức năng nhất định hoặc thiếu thông tin loại [không xác định]

Các quy tắc này thường được sử dụng để thực thi các hạn chế quan trọng [chẳng hạn như xác định toàn cầu, có thể phá vỡ cơ sở mã] và các mẫu bảo mật [chẳng hạn như sử dụng

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
184 hoặc gán cho
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
337] hoặc để cải thiện chất lượng mã một cách lỏng lẻo hơn

Để biết thêm thông tin, hãy xem tài liệu chính thức về Khung tuân thủ JS

9. 4 Ngoại lệ cho các nền tảng cũ

9. 4. 1. Tổng quan

Phần này mô tả các ngoại lệ và quy tắc bổ sung cần tuân theo khi cú pháp ECMAScript 6 hiện đại không có sẵn cho tác giả mã. Các ngoại lệ đối với kiểu được đề xuất là bắt buộc khi không thể sử dụng cú pháp ECMAScript 6 và được nêu tại đây

  • Cho phép sử dụng khai báo
    /* Poor: the reader has no idea what character this is. */
    const units = '\u03bcs';
    
    637
  • Cho phép sử dụng
    /* Poor: the reader has no idea what character this is. */
    const units = '\u03bcs';
    
    131
  • Cho phép tham số tùy chọn không có giá trị mặc định

9. 4. 2 Sử dụng
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
637

9. 4. 2. 1 khai báo
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
637 KHÔNG có phạm vi khối

Các khai báo

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
637 nằm trong phạm vi bắt đầu của hàm, tập lệnh hoặc mô-đun kèm theo gần nhất, điều này có thể gây ra hành vi không mong muốn, đặc biệt là với các lần đóng hàm tham chiếu các khai báo
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
637 bên trong các vòng lặp. Đoạn mã sau đưa ra một ví dụ

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
389. 4. 2. 2 Khai báo các biến càng gần với lần sử dụng đầu tiên càng tốt

Mặc dù các khai báo

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
637 nằm trong phạm vi bắt đầu của hàm kèm theo, các khai báo
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
637 phải càng gần càng tốt với lần sử dụng đầu tiên của chúng, vì mục đích dễ đọc. Tuy nhiên, không đặt khai báo
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
637 bên trong khối nếu biến đó được tham chiếu bên ngoài khối. Ví dụ

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
399. 4. 2. 3 Sử dụng @const cho các biến hằng

Đối với các khai báo toàn cầu nơi từ khóa

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
633 sẽ được sử dụng, nếu có, hãy chú thích khai báo
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
637 bằng @const thay thế [đây là tùy chọn cho các biến cục bộ]

9. 4. 3 Không sử dụng khai báo hàm phạm vi khối

Đừng làm điều này

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
40

Mặc dù hầu hết các máy ảo JavaScript được triển khai trước khi ECMAScript 6 hỗ trợ khai báo hàm trong các khối nhưng nó không được chuẩn hóa. Implementations were inconsistent with each other and with the now-standard ECMAScript 6 behavior for block scoped function declaration. ECMAScript 5 trở về trước chỉ cho phép khai báo hàm trong danh sách câu lệnh gốc của tập lệnh hoặc hàm và cấm rõ ràng chúng trong phạm vi khối ở chế độ nghiêm ngặt

Để có được hành vi nhất quán, thay vào đó, hãy sử dụng một

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
637 được khởi tạo với một biểu thức hàm để xác định một hàm trong một khối

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
41

9. 4. 4 Quản lý phụ thuộc với
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
518/
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
74

9. 4. 4. 1. Tóm tắt

CẢNH BÁO. Quản lý phụ thuộc

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
518 không được dùng nữa. Tất cả các tệp mới, ngay cả trong các dự án sử dụng
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
518 cho các tệp cũ hơn, nên sử dụng
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
66. Các quy tắc sau đây chỉ dành cho các tệp
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
518 có sẵn

  • Đặt tất cả các
    /* Poor: the reader has no idea what character this is. */
    const units = '\u03bcs';
    
    518 trước,
    /* Poor: the reader has no idea what character this is. */
    const units = '\u03bcs';
    
    74 thứ hai. Tách cung cấp khỏi yêu cầu bằng một dòng trống
  • Sắp xếp các mục theo thứ tự bảng chữ cái [viết hoa trước]
  • Không bọc các câu lệnh
    /* Poor: the reader has no idea what character this is. */
    const units = '\u03bcs';
    
    518 và
    /* Poor: the reader has no idea what character this is. */
    const units = '\u03bcs';
    
    74. Vượt quá 80 cột nếu cần
  • Chỉ cung cấp các biểu tượng cấp cao nhất

Các câu lệnh

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
518 nên được nhóm lại với nhau và đặt trước. Tất cả các câu lệnh
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
74 phải tuân theo. Hai danh sách phải được phân tách bằng một dòng trống

Tương tự như câu lệnh nhập bằng các ngôn ngữ khác, câu lệnh

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
518 và
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
74 phải được viết trên một dòng, ngay cả khi chúng vượt quá giới hạn độ dài dòng 80 cột

Các dòng nên được sắp xếp theo thứ tự bảng chữ cái, với các chữ cái viết hoa đến trước

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
42

Tất cả các thành viên được xác định trên một lớp phải ở trong cùng một tệp. Only top-level classes should be provided in a file that contains multiple members defined on the same class [e. g. enums, inner classes, etc]

Do this

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
43

Not this

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
44

Members on namespaces may also be provided

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
459. 4. 4. 2 Aliasing with
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
364

WARNING.

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
364 is deprecated. New files should not use
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
364 even in projects with existing
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
364 usage

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
364 may be used to shorten references to namespaced symbols in code using
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
518/
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
74 dependency management

Only one

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
364 invocation may be added per file. Always place it in the global scope

The opening

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
372 invocation must be preceded by exactly one blank line and follow any
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
518 statements,
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
74 statements, or top-level comments. The invocation must be closed on the last line in the file. Append
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
375 to the closing statement of the scope. Separate the comment from the semicolon by two spaces

Similar to C++ namespaces, do not indent under

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
364 declarations. Instead, continue from the 0 column

Only make aliases for names that will not be re-assigned to another object [e. g. , most constructors, enums, and namespaces]. Do not do this [see below for how to alias a constructor]

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
46

Names must be the same as the last property of the global that they are aliasing

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
479. 4. 4. 3
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
525

Prefer to use

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
75 instead of
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
525 to break circular dependencies between files in the same library. Unlike
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
74, a
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
75 statement is allowed to import a namespace before it is defined

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
525 may still be used in legacy code to break circular references spanning across library boundaries, but newer code should be structured to avoid it

/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
525 statements must follow the same style rules as
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
74 and
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
75. The entire block of
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
525,
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
74 and
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
75 statements is sorted alphabetically

Chủ Đề