Hướng dẫn horizontal space in javascript - không gian ngang trong javascript
0 Show
Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm. Tôi tự động tạo các nút gửi bằng JavaScript. Tôi muốn biết cách giới thiệu khoảng cách ngang giữa mọi nút khác trong quá trình. Mã của tôi là
Làm thế nào để tôi làm điều này?
Tushar 83.9K21 Huy hiệu vàng154 Huy hiệu bạc173 Huy hiệu đồng21 gold badges154 silver badges173 bronze badges Đã hỏi ngày 22 tháng 6 năm 2015 lúc 9:59Jun 22, 2015 at 9:59
1 Sử dụng CSS thay vì JavaScript. Dù sao, bạn đang thêm một lớp vào tất cả các nút. Sử dụng mã sau:
Đã trả lời ngày 22 tháng 6 năm 2015 lúc 10:01Jun 22, 2015 at 10:01
TushartusharTushar 83.9K21 Huy hiệu vàng154 Huy hiệu bạc173 Huy hiệu đồng21 gold badges154 silver badges173 bronze badges 2 Đã hỏi ngày 22 tháng 6 năm 2015 lúc 9:59 50Sử dụng CSS thay vì JavaScript. Dù sao, bạn đang thêm một lớp vào tất cả các nút. Sử dụng mã sau:
Đã trả lời ngày 22 tháng 6 năm 2015 lúc 10:01Jun 22, 2015 at 10:12
1. Giới thiệuTài liệu này đóng vai trò là định nghĩa đầy đủ về các tiêu chuẩn mã hóa Google Google cho mã nguồn trong ngôn ngữ lập trình JavaScript. Một tệp nguồn JavaScript được mô tả là theo kiểu Google khi và chỉ khi nó tuân thủ các quy tắc trong tài liệu này.complete definition of Google’s coding standards for source code in the JavaScript programming language. A JavaScript source file is described as being in Google Style if and only if it adheres to the rules herein. Giống như các hướng dẫn phong cách lập trình khác, các vấn đề bao gồm khoảng thời gian không chỉ các vấn đề thẩm mỹ của định dạng, mà cả các loại quy ước hoặc tiêu chuẩn mã hóa khác. Tuy nhiên, tài liệu này tập trung chủ yếu vào các quy tắc khó và nhanh mà chúng tôi tuân theo phổ biến và tránh đưa ra lời khuyên không thể thực thi rõ ràng (dù là con người hay công cụ). 1.1 Ghi chú thuật ngữTrong tài liệu này, trừ khi có được làm rõ khác:
Các ghi chú thuật ngữ khác sẽ thỉnh thoảng xuất hiện trong suốt tài liệu. 1.2 Ghi chú hướng dẫnMã ví dụ trong tài liệu này là không quy phạm. Đó là, trong khi các ví dụ theo kiểu Google, chúng có thể không minh họa cách duy nhất phong cách để đại diện cho 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.non-normative. That is, while the examples are in Google Style, they may not illustrate the only stylish way to represent the code. Optional formatting choices made in examples must not be enforced as rules. 2 Khái niệm cơ bản về tệp nguồn2.1 Tên tệpTên tệp phải là tất cả các chữ thường và có thể bao gồm dấu gạch dưới ( 52) hoặc dấu gạch ngang ( 53), 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. Tiện ích mở rộng của FileNames phải là 54.2.2 Mã hóa tệp: UTF-8Các tập tin nguồn được mã hóa trong UTF-8.UTF-8. 2.3 ký tự đặc biệt2.3.1 ký tự khoảng trắngNgoài trình tự kết thúc dòng, ký tự không gian ngang ASCII (0x20) là ký tự khoảng trắng duy nhất xuất hiện ở bất cứ đâu trong tệp nguồn. Điều này ngụ ý rằng
2.3.2 Trình tự thoát đặc biệtĐối với bất kỳ ký tự nào có trình tự thoát đặc biệt ( 55, 56, 57, 58, 59, 60, 61, 62, 63) Legacy Octal Escapes không bao giờ được sử dụng.2.3.3 Các 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ế (ví dụ: 67) hoặc thoát Hex hoặc unicode tương đương (ví dụ: 68) được sử dụng, chỉ tùy thuộc vào đó làm cho mã dễ đọc và hiểu hơn.easier to read and understand.Mẹo: Trong trường hợp Escape Escape, và đôi khi ngay cả khi các ký tự Unicode thực tế được sử dụng, một nhận xét giải thích có thể rất hữu ích.
Mẹo: Không bao giờ làm cho mã của bạn không thể đọc được chỉ đơn giản là vì sợ rằng một số chương trình có thể không xử lý các ký tự không phải ASCII đúng cách. Nếu điều đó xảy ra, những chương trình đó bị phá vỡ và chúng phải được sửa.broken and they must be fixed. 3 cấu trúc tệp nguồnTất cả các tệp nguồn mới phải là tệp 69 (một tệp chứa cuộc gọi 69) hoặc mô -đun ECMAScript (ES) (sử dụng các câu lệnh 71 và 72). Các tệp bao gồm các tệp sau, theo thứ tự:in order:
Chính xác một dòng trống phân tách mỗi phần có mặt, ngoại trừ việc triển khai của tệp, có thể đi trước 1 hoặc 2 dòng trống. separates each section that is present, except the file's implementation, which may be preceded by 1 or 2 blank lines. 3.1 giấy phép hoặc thông tin bản quyền, nếu có mặtNếu giấy phép hoặc thông tin bản quyền thuộc về một tệp, nó thuộc về đây. 3.2 .submitButton { margin: 0 10px; } 73 JSDOC, nếu có mặtNhìn thấy ?? cho các quy tắc định dạng. 3.3 .submitButton { margin: 0 10px; } 69 Tuyên bốTất cả các tệp 69 phải khai báo chính xác một tên 69 trên một dòng duy nhất: các dòng chứa khai báo 69 không được gói và do đó là một ngoại lệ đối với giới hạn 80 cột.Toàn bộ đối số với goog.module là những gì xác định một không gian tên. Đó là tên gói (một định danh phản ánh đoạn của cấu trúc thư mục nơi mã sống) cộng với, tùy chọn, lớp chính/enum/giao diện mà nó xác định được liên kết đến cuối. Thí dụ
3.3.1 Phân cấpKhông gian tên mô -đun có thể 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. Disallowed:
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, do đó trẻ em được nuôi sâu hơn là các thư mục con của các thư mục phụ huynh 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ẹ của cha mẹ nhất thiết phải nhận thức được tất cả các không gian tên trẻ em, vì chúng tồn tại trong cùng một thư mục. 3.3.2 .submitButton {
margin: 0 10px;
}
|
Hình thức văn xuôi | Chính xác | Không đúng |
---|---|---|
Yêu cầu XML HTTP | Xmlhttprequest | Xmlhttprequest |
ID khách hàng mới | Newcustomerid | Newcustomerid |
Đồng hồ bấm giờ bên trong | InnStopWatch | InnStopWatch |
Hỗ trợ IPv6 trên iOS? | Hỗ trợsipv6onios | Hỗ trợsipv6onios |
Nhà nhập khẩu YouTube | YouTubeImporter | YouTubeImporter* |
*Có thể chấp nhận, nhưng không được khuyến nghị.
Lưu ý: Một số từ bị gạch nối mơ hồ trong ngôn ngữ tiếng Anh: ví dụ: không bình thường và không trống đều chính xác, vì vậy tên phương thức CheckNonempty và CheckNonempty đều đúng.
7 JSDOC
JSDOC được sử dụng trên tất cả các lớp, trường và phương thức.
7.1 Mẫu chung
Định dạng cơ bản của các khối JSDOC được thấy trong ví dụ này:
.submitButton {
margin: 0 10px;
}
04hoặc trong ví dụ một dòng này:
.submitButton {
margin: 0 10px;
}
05Nếu một nhận xét một dòng tràn vào nhiều dòng, nó phải sử dụng kiểu đa dòng với
goog.module('foo.bar'); // 'foo.bar.qux' would be fine, though
goog.module('foo.bar.baz');
47 và goog.module('foo.bar'); // 'foo.bar.qux' would be fine, though
goog.module('foo.bar.baz');
48 trên các dòng của riêng họ.Nhiều công cụ trích xuất siêu dữ liệu từ các bình luận của JSDOC để thực hiện xác thực và tối ưu hóa mã. Như vậy, những ý kiến này phải được hình thành tốt.must be well-formed.
7.2 Markdown
JSDOC được viết bằng Markdown, mặc dù nó có thể bao gồm HTML khi cần thiết.
Lưu ý rằng các công cụ tự động trích xuất JSDOC (ví dụ: Jsdossier) thường sẽ bỏ qua định dạng văn bản đơn giản, vì vậy nếu bạn đã làm điều này:
.submitButton {
margin: 0 10px;
}
06Nó sẽ ra như thế này:
.submitButton {
margin: 0 10px;
}
07Thay vào đó, hãy viết một danh sách đánh dấu:
.submitButton {
margin: 0 10px;
}
087.3 Thẻ JSDOC
Google Style cho phép một tập hợp con của các thẻ JSDOC. Nhìn thấy ?? cho danh sách đầ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.
Disallowed:
.submitButton {
margin: 0 10px;
}
09Cá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ư
.submitButton {
margin: 0 10px;
}
97, .submitButton {
margin: 0 10px;
}
99, goog.module('foo.bar'); // 'foo.bar.qux' would be fine, though
goog.module('foo.bar.baz');
51, goog.module('foo.bar'); // 'foo.bar.qux' would be fine, though
goog.module('foo.bar.baz');
55) 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..submitButton {
margin: 0 10px;
}
10Không có quy tắc khó cho khi nào nên kết hợp các thẻ, hoặc theo thứ tự nào, nhưng phải nhất quán.
Để biết thông tin chung về các loại chú thích trong JavaScript, hãy xem chú thích JavaScript cho trình biên dịch đóng và các loại trong hệ thống loại đóng.
7,4 Line Gói
Thẻ khối được bọc dòng được thụt vào bốn không gian. Văn bản mô tả được bọc có thể được xếp hàng với mô tả trên các dòng trước, nhưng sự liên kết ngang này không được khuyến khích.
.submitButton {
margin: 0 10px;
}
11Không thụt vào khi gói mô tả
goog.module('foo.bar'); // 'foo.bar.qux' would be fine, though
goog.module('foo.bar.baz');
53 hoặc .submitButton {
margin: 0 10px;
}
73.Một tập tin 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. Tổng quan về tệp thường được đề xuất bất cứ khi nào một tệp bao gồm nhiều hơn một định nghĩa lớp. Nhận xét cấp cao nhất được thiết kế để định hướng độc giả không quen thuộc với mã theo những gì trong tệp này. Nếu có, nó có thể cung cấp mô tả về nội dung của tệp và bất kỳ phụ thuộc hoặc thông tin tương thích nào. Các dòng được bọc không được thụt vào.
Example:
.submitButton {
margin: 0 10px;
}
12Các lớp, giao diện và bản ghi phải được ghi lại với mô tả và bất kỳ tham số mẫu nào, giao diện được triển khai, khả năng hiển thị hoặc các thẻ thích hợp khác. Mô tả lớp sẽ 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ư bất kỳ cân nhắc bổ sung nào cần thiết để sử dụng chính xác lớp. Mô tả văn bản có thể được bỏ qua trên hàm tạo. Các chú thích
goog.module('foo.bar'); // 'foo.bar.qux' would be fine, though
goog.module('foo.bar.baz');
55 và /* Best: perfectly clear even without a comment. */
const units = 'μs';
/* Allowed: but unnecessary as μ is a printable character. */
const units = '\u03bcs'; // 'μs'
/* Good: use escapes for non-printable characters with a comment for clarity. */
return '\ufeff' + content; // Prepend a byte order mark.
91 không được sử dụng với từ khóa goog.module('search.urlHistory.UrlHistoryService');
00 trừ khi lớp được sử dụng để khai báo goog.module('search.urlHistory.UrlHistoryService');
08 hoặc nó mở rộng một lớp chung..submitButton {
margin: 0 10px;
}
137.7 Nhận xét về Enum và typedef
Tất cả các enum và typedefs phải được ghi lại bằng các thẻ JSDOC thích hợp (
goog.module('foo.bar'); // 'foo.bar.qux' would be fine, though
goog.module('foo.bar.baz');
59 hoặc /* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
76) trên dòng trước. Enums và typedefs công khai cũng phải có một mô tả. Các mục enum cá nhân có thể được ghi lại với nhận xét JSDOC về dòng trước..submitButton {
margin: 0 10px;
}
14Typedefs rất hữu ích để xác định các loại bản ghi ngắn hoặc bí danh cho các công đoàn, chức năng phức tạp hoặc các loại chung. Nên tránh đánh máy cho các loại hồ sơ với 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 các mẫu hoặc tham chiếu đệ quy. Đối với các loại hồ sơ lớn, thích
goog.module('search.urlHistory.UrlHistoryService');
09.7.8 Phương pháp và nhận xét chức năng
Trong các phương thức và các hàm được đặt tên, tham số và loại trả về phải được ghi lại, ngoại trừ trong trường hợp có cùng chữ ký
goog.module('foo.bar'); // 'foo.bar.qux' would be fine, though
goog.module('foo.bar.baz');
62s, trong đó tất cả các loại bị bỏ qua. Loại /* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
69 nên được ghi lại khi cần thiết. Loại trả về có thể bị bỏ qua nếu hàm không có câu lệnh /* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
24 không trống.
Phương thức, tham số và mô tả trả về (nhưng không phải loại) có thể bị bỏ qua nếu chúng rõ ràng từ phần còn lại của phương thức JSDOC hoặc từ chữ ký của nó.
Mô tả phương thức bắt đầu bằng một cụm động từ mô tả những gì phương thức làm. Cụm từ này không phải là một câu bắt buộc, mà thay vào đó được viết ở người thứ ba, như thể có một phương pháp này ngụ ý ... trước nó.
Nếu một phương thức ghi đè một phương thức siêu lớp, nó phải bao gồm một chú thích
goog.module('foo.bar'); // 'foo.bar.qux' would be fine, though
goog.module('foo.bar.baz');
62. Các phương thức ghi đè kế thừa tất cả các chú thích JSDOC từ phương thức siêu lớp (bao gồm các chú thích khả năng hiển thị) và chúng nên được bỏ qua trong phương thức ghi đè. Tuy nhiên, nếu bất kỳ loại nào được tinh chỉnh trong các chú thích loại, tất cả các chú thích goog.module('foo.bar'); // 'foo.bar.qux' would be fine, though
goog.module('foo.bar.baz');
66 và goog.module('foo.bar'); // 'foo.bar.qux' would be fine, though
goog.module('foo.bar.baz');
67 phải được chỉ định rõ ràng..submitButton {
margin: 0 10px;
}
15Nếu bạn chỉ cần ghi lại các loại tham số và trả về của một 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 JSDocs nội tuyến này chỉ định các loại trả về và các loại param mà không có thẻ.
.submitButton {
margin: 0 10px;
}
16Nếu bạn cần mô tả hoặc thẻ, hãy sử dụng một nhận xét JSDOC duy nhất ở trên phương thức. Ví dụ: các phương thức trả về giá trị cần thẻ
goog.module('foo.bar'); // 'foo.bar.qux' would be fine, though
goog.module('foo.bar.baz');
67..submitButton {
margin: 0 10px;
}
17.submitButton {
margin: 0 10px;
}
18Trong các chú thích chức năng ẩn danh thường là tùy chọn. Nếu suy luận loại tự động không đủ hoặc chú thích rõ ràng sẽ cải thiện khả năng đọc, thì hãy chú thích các loại tham số và trả về như thế này:
.submitButton {
margin: 0 10px;
}
19Đối với biểu thức loại chức năng, xem ??.
Các loại tài sản phải được ghi lại. Mô tả có thể được bỏ qua cho các thuộc tính riêng tư, nếu tên và loại cung cấp đủ tài liệu để hiểu mã.
Các hằng số xuất khẩu công khai được bình luận giống như các thuộc tính.
.submitButton {
margin: 0 10px;
}
207.10 Loại chú thích
Các chú thích loại được tìm thấy trên
goog.module('foo.bar'); // 'foo.bar.qux' would be fine, though
goog.module('foo.bar.baz');
66, goog.module('foo.bar'); // 'foo.bar.qux' would be fine, though
goog.module('foo.bar.baz');
67, goog.module('search.urlHistory.UrlHistoryService');
85 và goog.module('foo.bar'); // 'foo.bar.qux' would be fine, though
goog.module('foo.bar.baz');
72 và tùy chọn trên .submitButton {
margin: 0 10px;
}
99, goog.module('foo.bar'); // 'foo.bar.qux' would be fine, though
goog.module('foo.bar.baz');
52 và bất kỳ thẻ khả năng hiển thị nào. Loại chú thích gắn liền với các thẻ JSDOC phải luôn được đặt trong niềng răng.7.10.1 Khả năng vô hiệu
Hệ thống loại xác định các sửa đổi
goog.module('foo.bar'); // 'foo.bar.qux' would be fine, though
goog.module('foo.bar.baz');
75 và goog.module('foo.bar'); // 'foo.bar.qux' would be fine, though
goog.module('foo.bar.baz');
76 cho không có null và nullable, tương ứng. Những sửa đổi này phải đi trước loại.Bộ điều chỉnh khả năng vô hiệu hóa có các yêu cầu khác nhau cho các loại khác nhau, thuộc hai loại rộng:
- Loại chú thích cho các nguyên thủy (
77,goog.module('foo.bar'); // 'foo.bar.qux' would be fine, though goog.module('foo.bar.baz');
78,goog.module('foo.bar'); // 'foo.bar.qux' would be fine, though goog.module('foo.bar.baz');
79,goog.module('foo.bar'); // 'foo.bar.qux' would be fine, though goog.module('foo.bar.baz');
80,goog.module('foo.bar'); // 'foo.bar.qux' would be fine, though goog.module('foo.bar.baz');
48,/* Poor: the reader has no idea what character this is. */ const units = '\u03bcs';
92) và các chữ (goog.module('search.urlHistory.UrlHistoryService');
83 vàgoog.module('foo.bar'); // 'foo.bar.qux' would be fine, though goog.module('foo.bar.baz');
84) luôn không thể chấp nhận được theo mặc định. Sử dụng công cụ sửa đổigoog.module('foo.bar'); // 'foo.bar.qux' would be fine, though goog.module('foo.bar.baz');
76 để làm cho nó vô hiệu hóa, nhưng bỏ quagoog.module('foo.bar'); // 'foo.bar.qux' would be fine, though goog.module('foo.bar.baz');
75 dự phòng.goog.module('foo.bar'); // 'foo.bar.qux' would be fine, though goog.module('foo.bar.baz');
- Các loại tham chiếu (nói chung, bất cứ điều gì trong
11, bao gồmgoog.module('foo.bar'); // 'foo.bar.qux' would be fine, though goog.module('foo.bar.baz');
88) đề cập đến một lớp, enum, bản ghi hoặc typedef được xác định ở nơi khác. Vì các loại này có thể hoặc không thể vô hiệu hóa, nên không thể biết từ tên đó cho dù nó có thể không có được hay không. Luôn luôn sử dụng các sửa đổigoog.module('foo.bar'); // 'foo.bar.qux' would be fine, though goog.module('foo.bar.baz');
76 vàgoog.module('foo.bar'); // 'foo.bar.qux' would be fine, though goog.module('foo.bar.baz');
75 rõ ràng cho các loại này để ngăn chặn sự mơ hồ tại các trang web sử dụng.goog.module('foo.bar'); // 'foo.bar.qux' would be fine, though goog.module('foo.bar.baz');
Bad:
.submitButton {
margin: 0 10px;
}
21Good:
.submitButton {
margin: 0 10px;
}
227.10.2 loại đúc
Trong trường hợp trình biên dịch không suy ra chính xác loại biểu thức và các chức năng khẳng định trong goog.asserts 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. Lưu ý rằng dấu ngoặc đơn được yêu cầu.
.submitButton {
margin: 0 10px;
}
237.10.3 Các loại tham số mẫu
Luôn chỉ định tham số mẫu. Bằng cách này, trình biên dịch có thể làm một công việc tốt hơn và nó giúp người đọc dễ hiểu hơn về mã.
Bad:
.submitButton {
margin: 0 10px;
}
24Good:
.submitButton {
margin: 0 10px;
}
25Các trường hợp không nên sử dụng tham số mẫu: không nên sử dụng:
53 được sử dụng cho phân cấp loại và không như cấu trúc giống như bản đồ./* Poor: the reader has no idea what character this is. */ const units = '\u03bcs';
7.10.4 Biểu thức loại chức năng
Thuật ngữ Lưu ý: Biểu thức loại chức năng đề cập đến một chú thích loại cho các loại chức năng với từ khóa
04 trong chú thích (xem ví dụ bên dưới).: 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';
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
04 in the annotation (see examples below).Trong đó định nghĩa hàm được đưa ra, không sử dụng biểu thức loại chức năng. Chỉ định tham số và các loại trả về với
goog.module('foo.bar'); // 'foo.bar.qux' would be fine, though
goog.module('foo.bar.baz');
66 và goog.module('foo.bar'); // 'foo.bar.qux' would be fine, though
goog.module('foo.bar.baz');
67 hoặc với các chú thích nội tuyến (xem ??). Điều này bao gồm các hàm và hàm ẩn danh được xác định và gán cho một const (trong đó hàm JSDOC xuất hiện trên toàn bộ biểu thức gán).Các biểu thức loại chức năng là cần thiết, ví dụ, bên trong
goog.module('foo.bar'); // 'foo.bar.qux' would be fine, though
goog.module('foo.bar.baz');
59, goog.module('foo.bar'); // 'foo.bar.qux' would be fine, though
goog.module('foo.bar.baz');
66 hoặc goog.module('foo.bar'); // 'foo.bar.qux' would be fine, though
goog.module('foo.bar.baz');
67. Sử dụng nó cũng cho các biến hoặc thuộc tính của loại chức năng, nếu chúng không được khởi tạo ngay lập tức với định nghĩa hàm. .submitButton {
margin: 0 10px;
}
26Khi sử dụng biểu thức loại chức năng, luôn chỉ định loại trả về một cách rõ ràng. Mặt khác, loại trả lại mặc định không rõ (
goog.module('foo.bar'); // 'foo.bar.qux' would be fine, though
goog.module('foo.bar.baz');
76), dẫn đến hành vi kỳ lạ và bất ngờ, và hiếm khi những gì thực sự mong muốn.Xấu - loại lỗi, nhưng không có cảnh báo nào được đưa ra:
.submitButton {
margin: 0 10px;
}
27Good:
.submitButton {
margin: 0 10px;
}
287.10.5 Whitespace
Trong một chú thích loại, cần có một khoảng trống hoặc ngắt dòng sau mỗi dấu phẩy hoặc đại tràng. Các lần ngắt dòng bổ sung có thể được chèn để cải thiện khả năng đọc hoặc tránh vượt quá giới hạn cột. Những lần nghỉ này nên được chọn và thụt vào theo các hướng dẫn hiện hành (ví dụ: ?? và ??). Không có khoảng trắng nào khác được phép trong các chú thích loại.
Good:
.submitButton {
margin: 0 10px;
}
29Bad:
.submitButton {
margin: 0 10px;
}
307.11 Chú thích khả năng hiển thị
Chú thích khả năng hiển thị (
.submitButton {
margin: 0 10px;
}
97, /* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
82, /* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
81) có thể được chỉ định trong một khối .submitButton {
margin: 0 10px;
}
73 hoặc trên bất kỳ biểu tượng hoặc thuộc tính được xuất nào. Không chỉ định khả năng hiển thị cho các biến cục bộ, cho dù trong một hàm hoặc ở cấp cao nhất của mô -đun. Tất cả các tên .submitButton {
margin: 0 10px;
}
97 phải kết thúc với một dấu gạch dưới.8 chính sách
8.1 Các vấn đề không được xác định bởi Google Style: Hãy nhất quán!
Đối với bất kỳ câu hỏi phong cách nào không được giải quyết dứt khoát bởi đặc điểm kỹ thuật này, thích làm những gì mã khác trong cùng một tệp đã làm. Nếu điều đó không giải quyết được câu hỏi, hãy xem xét mô phỏng các tệp khác trong cùng một gói.
8.2 Cảnh báo trình biên dịch
8.2.1 Sử dụng bộ cảnh báo tiêu chuẩn
Càng xa các dự án có thể nên sử dụng
goog.module('my.test.helpers');
goog.module.declareLegacyNamespace();
goog.setTestOnly();
04.8.2.2 Cách xử lý cảnh báo
Trước khi làm bất cứ điều gì, hãy chắc chắn rằng bạn hiểu chính xác những gì cảnh báo đang nói với bạn. Nếu bạn không tích cực tại sao một cảnh báo xuất hiện, hãy yêu cầu giúp đỡ.
Khi bạn hiểu cảnh báo, hãy thử các giải pháp sau theo thứ tự:
- Đầu tiên, sửa nó hoặc làm việc xung quanh nó. Thực hiện một nỗ lực mạnh mẽ để thực sự giải quyết cảnh báo, hoặc tìm một cách khác để hoàn thành nhiệm vụ hoàn toàn tránh được tình huống. Make a strong attempt to actually address the warning, or find another way to accomplish the task that avoids the situation entirely.
- Nếu không, hãy xác định xem đó có phải là báo động sai hay không. Nếu bạn bị thuyết phục rằng cảnh báo là không hợp lệ và mã thực sự an toàn và chính xác, hãy thêm một nhận xét để thuyết phục người đọc về thực tế này và áp dụng chú thích
05. 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 thegoog.module('my.test.helpers'); goog.module.declareLegacyNamespace(); goog.setTestOnly();
05 annotation.goog.module('my.test.helpers'); goog.module.declareLegacyNamespace(); goog.setTestOnly();
- Nếu không, để lại một bình luận todo. Đây là một phương sách cuối cùng. Nếu bạn làm điều này, đừng đàn áp cảnh báo. Cảnh báo nên được nhìn thấy cho đến khi nó có thể được chăm sóc đúng cách. 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 Bị cảnh báo ở phạm vi hợp lý hẹp nhất
Các cảnh báo bị triệt tiêu ở phạm vi hợp lý hẹp nhất, thường là của một biến cục bộ hoặc phương pháp rất nhỏ. Thường thì một biến hoặc phương pháp được trích xuất chỉ vì lý do đó.
Thí dụ
.submitButton {
margin: 0 10px;
}
31Ngay cả một số lượng lớn các đàn áp trong một lớp vẫn tốt hơn so với việc làm mờ toàn bộ lớp với loại cảnh báo này.
8.3 Khấu hao
Đánh dấu các phương thức, lớp hoặc giao diện không dùng nữa với các chú thích
goog.module('my.test.helpers');
goog.module.declareLegacyNamespace();
goog.setTestOnly();
06. Một bình luận không nhận được bao gồm các hướng đơn giản, rõ ràng để mọi người sửa chữa các trang web cuộc gọi của họ.8.4 Mã không theo kiểu Google
Thỉnh thoảng bạn sẽ gặp các tệp trong cơ sở mã không có phong cách Google thích hợp. Những điều này có thể đến từ việc mua lại, hoặc có thể đã được viết trước khi Google Style có một vị trí về một số vấn đề hoặc có thể theo phong cách không google vì bất kỳ lý do nào khác.
8.4.1 Định dạng lại mã hiện có
Khi cập nhật phong cách của mã hiện có, hãy làm theo các hướng dẫn này.
- Không bắt buộc phải thay đổi tất cả các mã hiện có để đáp ứng các hướng dẫn kiểu hiện tại. Định dạng lại mã hiện tại là sự đánh đổi giữa mã hóa và tính nhất quán. Các quy tắc phong cách phát triển theo thời gian và các loại điều chỉnh này để duy trì sự tuân thủ sẽ tạo ra sự khuấy động không cần thiết. Tuy nhiên, nếu những thay đổi đáng kể đang được thực hiện đối với một tệp, dự kiến rằng tệp sẽ theo kiểu Google.
- Hãy cẩn thận để không cho phép các sửa chữa phong cách cơ hội để xử lý sự tập trung của CL. Nếu bạn thấy mình thực hiện nhiều thay đổi về phong cách mà không quan trọng đối với trọng tâm của CL, hãy thúc đẩy những thay đổi đó thành một CL riêng biệt.
8.4.2 Mã mới được thêm vào: Sử dụng 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.
Khi thêm mã mới vào một tệp không có theo kiểu Google, việc định dạng lại mã hiện tại trước tiên được khuyến nghị, theo lời khuyên trong ??.
Nếu định dạng lại này không được thực hiện, thì mã mới sẽ nhất quán nhất có thể với mã hiện có trong cùng một tệp, nhưng không được vi phạm hướng dẫn kiểu.
8.5 Quy tắc phong cách địa phương
Các nhóm và dự án có thể áp dụng các quy tắc phong cách bổ sung ngoài các quy tắc trong tài liệu này, nhưng phải chấp nhận rằng các thay đổi dọn dẹp có thể không tuân thủ các quy tắc bổ sung này và không được chặn các thay đổi dọn dẹp đó do vi phạm bất kỳ quy tắc bổ sung nào. Cẩn thận với các quy tắc quá mức mà không có mục đích. Hướng dẫn phong cách không tìm cách xác định phong cách trong mọi kịch bản có thể và bạn cũng không nên.
8.6 Mã được tạo: Chủ yếu là được miễn trừ
Mã nguồn được tạo bởi quy trình xây dựng không bắt buộc phải theo kiểu Google. Tuy nhiên, bất kỳ định danh được tạo nào sẽ được tham chiếu từ mã nguồn viết tay phải tuân theo các yêu cầu đặt tên. Là một ngoại lệ đặc biệt, các định danh như vậy được phép chứa dấu gạch dưới, điều này có thể giúp tránh xung đột với các định danh viết tay.
9 Phụ lục
9.1 Tham khảo thẻ JSDOC
JSDOC phục vụ nhiều mục đích trong JavaScript. Ngoài việc được sử dụng để tạo tài liệu, nó cũng được sử dụng để kiểm soát dụng cụ. Được biết đến nhiều nhất là chú thích loại trình biên dịch đóng cửa.
9.1.1 Chú thích loại và các chú thích trình biên dịch đóng khác
Tài liệu cho JSDOC được sử dụng bởi trình biên dịch đóng được mô tả trong chú thích JavaScript cho trình biên dịch đóng và các loại trong hệ thống loại đóng.
9.1.2 Chú thích tài liệu
Ngoài JSDOC được mô tả trong chú thích JavaScript cho trình biên dịch đóng, các thẻ sau đây là phổ biến và được hỗ trợ tốt bởi các công cụ tạo tài liệu khác nhau (như JSDossier) cho mục đích tài liệu thuần túy.
Bạn cũng có thể thấy các loại chú thích JSDOC khác trong mã của bên thứ ba. Các chú thích này xuất hiện trong tham chiếu thẻ bộ công cụ JSDOC nhưng không được coi là một phần của Google Style hợp lệ.
9.1.2.1 goog.module('my.test.helpers');
goog.module.declareLegacyNamespace();
goog.setTestOnly();
07 hoặc goog.module('my.test.helpers');
goog.module.declareLegacyNamespace();
goog.setTestOnly();
08 - không được khuyến nghị.
goog.module('my.test.helpers');
goog.module.declareLegacyNamespace();
goog.setTestOnly();
goog.module('my.test.helpers');
goog.module.declareLegacyNamespace();
goog.setTestOnly();
Không được khuyến khích.
Cú pháp:
goog.module('my.test.helpers');
goog.module.declareLegacyNamespace();
goog.setTestOnly();
09.submitButton {
margin: 0 10px;
}
32Tài liệu là tác giả của một tệp hoặc chủ sở hữu của một bài kiểm tra, thường chỉ được sử dụng trong nhận xét
.submitButton {
margin: 0 10px;
}
73. Thẻ goog.module('my.test.helpers');
goog.module.declareLegacyNamespace();
goog.setTestOnly();
08 được sử dụng bởi bảng điều khiển kiểm tra đơn vị để xác định ai sở hữu kết quả kiểm tra.9.1.2.2 goog.module('my.test.helpers');
goog.module.declareLegacyNamespace();
goog.setTestOnly();
12
goog.module('my.test.helpers');
goog.module.declareLegacyNamespace();
goog.setTestOnly();
Cú pháp:
goog.module('my.test.helpers');
goog.module.declareLegacyNamespace();
goog.setTestOnly();
13.submitButton {
margin: 0 10px;
}
33Cho biết những gì các lỗi Các thử nghiệm hồi quy chức năng thử nghiệm đã cho.
Mỗi lỗi nên có dòng
goog.module('my.test.helpers');
goog.module.declareLegacyNamespace();
goog.setTestOnly();
12 của riêng mình, để làm cho việc tìm kiếm các bài kiểm tra hồi quy dễ dàng nhất có thể.9.1.2.3 goog.module('my.test.helpers');
goog.module.declareLegacyNamespace();
goog.setTestOnly();
15 - Không dùng nữa. Không được dùng.
goog.module('my.test.helpers');
goog.module.declareLegacyNamespace();
goog.setTestOnly();
Phản đối. Không được dùng. Sử dụng dấu backticks Markdown thay thế.
Cú pháp:
goog.module('my.test.helpers');
goog.module.declareLegacyNamespace();
goog.setTestOnly();
16Trong lịch sử,
goog.module('my.test.helpers');
goog.module.declareLegacyNamespace();
goog.setTestOnly();
17 được viết là goog.module('my.test.helpers');
goog.module.declareLegacyNamespace();
goog.setTestOnly();
18..submitButton {
margin: 0 10px;
}
34Chỉ ra rằng một thuật ngữ trong mô tả JSDOC là mã để nó có thể được định dạng chính xác trong tài liệu được tạo.
9.1.2.4 goog.module('foo.bar'); // 'foo.bar.qux' would be fine, though
goog.module('foo.bar.baz');
53
goog.module('foo.bar'); // 'foo.bar.qux' would be fine, though
goog.module('foo.bar.baz');
Cú pháp:
goog.module('my.test.helpers');
goog.module.declareLegacyNamespace();
goog.setTestOnly();
20.submitButton {
margin: 0 10px;
}
359.1.2.5 goog.module('my.test.helpers');
goog.module.declareLegacyNamespace();
goog.setTestOnly();
21
goog.module('my.test.helpers');
goog.module.declareLegacyNamespace();
goog.setTestOnly();
Cú pháp:
goog.module('my.test.helpers');
goog.module.declareLegacyNamespace();
goog.setTestOnly();
22Thẻ này được sử dụng để tạo các liên kết tham chiếu chéo trong tài liệu được tạo.
.submitButton {
margin: 0 10px;
}
36Lưu ý lịch sử: Các thẻ @link cũng đã được sử dụng để tạo các liên kết bên ngoài trong tài liệu được tạo. Đối với các liên kết bên ngoài, thay vào đó, hãy luôn sử dụng cú pháp liên kết của Markdown: thay vào đó: @link tags have also been used to create external links in generated documentation. For external links, always use Markdown's link syntax instead:
.submitButton {
margin: 0 10px;
}
379.1.2.6 goog.module('my.test.helpers');
goog.module.declareLegacyNamespace();
goog.setTestOnly();
23
goog.module('my.test.helpers');
goog.module.declareLegacyNamespace();
goog.setTestOnly();
Cú pháp:
goog.module('my.test.helpers');
goog.module.declareLegacyNamespace();
goog.setTestOnly();
24.submitButton {
margin: 0 10px;
}
38Tham chiếu Tra cứu chức năng hoặc phương thức lớp khác.
9.1.2.7 goog.module('my.test.helpers');
goog.module.declareLegacyNamespace();
goog.setTestOnly();
25
goog.module('my.test.helpers');
goog.module.declareLegacyNamespace();
goog.setTestOnly();
Cú pháp:
goog.module('my.test.helpers');
goog.module.declareLegacyNamespace();
goog.setTestOnly();
26.submitButton {
margin: 0 10px;
}
39Được sử dụng trong tệp FileOverView để cho biết trình duyệt nào được hỗ trợ bởi tệp.
9.1.3 Khung chú thích cụ thể
Các chú thích sau đây là cụ thể cho một khung cụ thể.
9.1.3.1 goog.module('my.test.helpers');
goog.module.declareLegacyNamespace();
goog.setTestOnly();
27 cho góc 1
goog.module('my.test.helpers');
goog.module.declareLegacyNamespace();
goog.setTestOnly();
9.1.3.2 goog.module('my.test.helpers');
goog.module.declareLegacyNamespace();
goog.setTestOnly();
28 cho polymer
goog.module('my.test.helpers');
goog.module.declareLegacyNamespace();
goog.setTestOnly();
https://github.com/google/closure-compiler/wiki/Polymer-Pass
9.1.4 Ghi chú về chú thích trình biên dịch đóng tiêu chuẩn
Các thẻ sau đây được sử dụng là tiêu chuẩn nhưng hiện không được chấp nhận.
9.1.4.1 goog.module('my.test.helpers');
goog.module.declareLegacyNamespace();
goog.setTestOnly();
29 - Khấu hao. Không được dùng.
goog.module('my.test.helpers');
goog.module.declareLegacyNamespace();
goog.setTestOnly();
Phản đối. Không được dùng. Thay vào đó, sử dụng
52 và/hoặc goog.module('foo.bar'); // 'foo.bar.qux' would be fine, though
goog.module('foo.bar.baz');
90./* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
9.1.4.2 goog.module('my.test.helpers');
goog.module.declareLegacyNamespace();
goog.setTestOnly();
32 - Khấu hao. Không được dùng.
goog.module('my.test.helpers');
goog.module.declareLegacyNamespace();
goog.setTestOnly();
Phản đối. Không được dùng. Sử dụng
62 thay thế.goog.module('foo.bar'); // 'foo.bar.qux' would be fine, though
goog.module('foo.bar.baz');
9.2 Quy tắc phong cách thường bị hiểu lầm
Dưới đây là một tập hợp các sự thật ít được biết đến hoặc thường bị hiểu lầm về phong cách Google cho JavaScript. (Sau đây là những câu nói thực; đây không phải là danh sách các huyền thoại.)
- Cả tuyên bố bản quyền và tín dụng
07 đều không được yêu cầu trong một tệp nguồn. (Cả hai cũng không được đề xuất rõ ràng.)goog.module('my.test.helpers'); goog.module.declareLegacyNamespace(); goog.setTestOnly();
- Không có quy tắc cứng và nhanh điều chỉnh cách đặt hàng 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 chính xác là
84, như chi tiết trong (??)./* Best: perfectly clear even without a comment. */ const units = 'μs'; /* Allowed: but unnecessary as μ is a printable character. */ const units = '\u03bcs'; // 'μs' /* Good: use escapes for non-printable characters with a comment for clarity. */ return '\ufeff' + content; // Prepend a byte order mark.
- Chỉ thị chính của việc bao bọc dòng là: thích phá vỡ ở cấp độ cú pháp cao hơn (??).
- Các ký tự không phải ASCII được cho phép trong các chuỗi chữ, 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 Escape unicode tương đương sẽ (??).
Các công cụ sau đây 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
Chương trình này thực hiện kiểm tra loại và các kiểm tra, tối ưu hóa khác và các phép biến đổi khác (chẳng hạn như hạ thấp mã ECMAScript 6 đến ECMAScript 5).
9.3.2 /* Best: perfectly clear even without a comment. */
const units = 'μs';
/* Allowed: but unnecessary as μ is a printable character. */
const units = '\u03bcs'; // 'μs'
/* Good: use escapes for non-printable characters with a comment for clarity. */
return '\ufeff' + content; // Prepend a byte order mark.
74
/* Best: perfectly clear even without a comment. */
const units = 'μs';
/* Allowed: but unnecessary as μ is a printable character. */
const units = '\u03bcs'; // 'μs'
/* Good: use escapes for non-printable characters with a comment for clarity. */
return '\ufeff' + content; // Prepend a byte order mark.
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ố thực tiễn định dạng không có khả năng yêu cầu nhưng thường xuyên có khả năng đọc. Đầu ra được sản xuất bởi
/* Best: perfectly clear even without a comment. */
const units = 'μs';
/* Allowed: but unnecessary as μ is a printable character. */
const units = '\u03bcs'; // 'μs'
/* Good: use escapes for non-printable characters with a comment for clarity. */
return '\ufeff' + content; // Prepend a byte order mark.
74 tuân thủ hướng dẫn kiểu./* Best: perfectly clear even without a comment. */
const units = 'μs';
/* Allowed: but unnecessary as μ is a printable character. */
const units = '\u03bcs'; // 'μs'
/* Good: use escapes for non-printable characters with a comment for clarity. */
return '\ufeff' + content; // Prepend a byte order mark.
74 là 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 đó; Tranh chấp được thực hiện theo cách thông thường. Tuy nhiên, Subtrees có thể chọn chọn tham gia vào việc thực thi như vậy tại địa phương.9.3.3 Linter trình biên dịch đóng cửa
Chương trình này kiểm tra một loạt các sai lầm và chống lại.
9.3.4 Khung phù hợp
Khung tuân thủ JS là một công cụ là một phần của trình biên dịch đóng cung cấp cho các nhà phát triển một phương tiện đơn giản để chỉ định một bộ kiểm tra bổ sung để chạy so 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 gọi đến một chức năng nhất định hoặc thiếu thông tin loại (chưa biết).
Các quy tắc này thường được sử dụng để thực thi các hạn chế quan trọng (như xác định toàn cầu, có thể phá vỡ cơ sở mã) và các mẫu bảo mật (như sử dụng
goog.module('search.urlHistory.UrlHistoryService');
87 hoặc gán cho goog.module('my.test.helpers');
goog.module.declareLegacyNamespace();
goog.setTestOnly();
40) hoặc lỏng lẻo hơn để cải thiện chất lượng mã.Để biết thêm thông tin, hãy xem Tài liệu chính thức cho Khung tuân thủ JS.
9.4 Ngoại lệ cho các nền tảng kế thừa
9.4.1 Tổng quan
Phần này mô tả các ngoại lệ và các quy tắc bổ sung sẽ được tuân thủ khi cú pháp ECMAScript 6 hiện đại không có sẵn cho các tác giả mã. Các trường hợp ngoại lệ cho kiểu được đề xuất là không cần thiết khi ECMAScript 6 cú pháp là không thể và được phác thảo ở đây:
- Việc sử dụng các khai báo
40 được cho phép/* Poor: the reader has no idea what character this is. */ const units = '\u03bcs';
- Sử dụng
34 được cho phépgoog.module('search.urlHistory.UrlHistoryService');
- Các tham số tùy chọn mà không có giá trị mặc định được cho phép
9.4.2 Sử dụng /* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
40
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
9.4.2.1 /* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
40 Khai báo không được bao gồm
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
Các khai báo
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
40 được bắt đầu đến đầu hàm, tập lệnh hoặc mô -đun kèm theo gần nhất, có thể gây ra hành vi bất ngờ, đặc biệt là với các đóng chức chức năng tham chiếu các khai báo ____340 bên trong các vòng lặp. Mã sau đây đưa ra một ví dụ:.submitButton {
margin: 0 10px;
}
409.4.2.2 Khai báo các biến càng gần càng tốt để sử dụng đầu tiên
Mặc dù các khai báo
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
40 được bắt đầu đến khi bắt đầu hàm kèm theo, các khai báo /* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
40 phải càng gần càng tốt với mục đích sử dụng đầu tiên của chúng, cho 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';
40 bên trong một khối nếu biến đó được tham chiếu bên ngoài khối. Ví dụ:.submitButton {
margin: 0 10px;
}
419.4.2.3 Sử dụng @const cho các biến hằng số
Đối với các khai báo toàn cầu trong đó từ khóa
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
36 sẽ được sử dụng, nếu có sẵn, hãy chú thích khai báo /* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
40 với @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 các chức năng phạm vi khối
Không làm điều này:not do this:
.submitButton {
margin: 0 10px;
}
42Trong khi hầu hết các máy ảo JavaScript được triển khai trước các khai báo chức năng hỗ trợ ECMAScript 6 trong các khối, nó không được tiêu chuẩn hóa. Việc triển khai không phù hợp với nhau và với hành vi ECMAScript 6 tiêu chuẩn hiện nay đối với khai báo chức năng phạm vi khối. ECMAScript 5 và trước chỉ cho phép khai báo chức năng trong danh sách câu lệnh gốc của tập lệnh hoặc hàm và cấm chúng một cách rõ rà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
/* Poor: the reader has no idea what character this is. */
const units = '\u03bcs';
40 được khởi tạo bằng biểu thức chức năng để xác định hàm trong một khối:.submitButton {
margin: 0 10px;
}
439.4.4 Quản lý phụ thuộc với ________ 221/________ 177
9.4.4.1 Tóm tắt
CẢNH BÁO: Quản lý phụ thuộc
21 bị phản đối. Tất cả các tệp mới, ngay cả trong các dự án sử dụng /* Best: perfectly clear even without a comment. */
const units = 'μs';
/* Allowed: but unnecessary as μ is a printable character. */
const units = '\u03bcs'; // 'μs'
/* Good: use escapes for non-printable characters with a comment for clarity. */
return '\ufeff' + content; // Prepend a byte order mark.
21 cho các tệp cũ hơn, nên sử dụng /* Best: perfectly clear even without a comment. */
const units = 'μs';
/* Allowed: but unnecessary as μ is a printable character. */
const units = '\u03bcs'; // 'μs'
/* Good: use escapes for non-printable characters with a comment for clarity. */
return '\ufeff' + content; // Prepend a byte order mark.
69. Các quy tắc sau chỉ dành cho các tệp .submitButton {
margin: 0 10px;
}
21 đã tồn tại trước. All new files, even in projects using /* Best: perfectly clear even without a comment. */
const units = 'μs';
/* Allowed: but unnecessary as μ is a printable character. */
const units = '\u03bcs'; // 'μs'
/* Good: use escapes for non-printable characters with a comment for clarity. */
return '\ufeff' + content; // Prepend a byte order mark.
/* Best: perfectly clear even without a comment. */
const units = 'μs';
/* Allowed: but unnecessary as μ is a printable character. */
const units = '\u03bcs'; // 'μs'
/* Good: use escapes for non-printable characters with a comment for clarity. */
return '\ufeff' + content; // Prepend a byte order mark.
21 for older files, should use .submitButton {
margin: 0 10px;
}
69. The following rules are for pre-existing /* Best: perfectly clear even without a comment. */
const units = 'μs';
/* Allowed: but unnecessary as μ is a printable character. */
const units = '\u03bcs'; // 'μs'
/* Good: use escapes for non-printable characters with a comment for clarity. */
return '\ufeff' + content; // Prepend a byte order mark.
21 files only.- Đặt tất cả
21S đầu tiên,/* Best: perfectly clear even without a comment. */ const units = 'μs'; /* Allowed: but unnecessary as μ is a printable character. */ const units = '\u03bcs'; // 'μs' /* Good: use escapes for non-printable characters with a comment for clarity. */ return '\ufeff' + content; // Prepend a byte order mark.
77s thứ hai. Cung cấp riêng biệt từ yêu cầu với một dòng trống..submitButton { margin: 0 10px; }
- Sắp xếp các mục theo thứ tự bảng chữ cái (chữ hoa đầu tiên).
- Đừng bao bọc các câu lệnh
21 và/* Best: perfectly clear even without a comment. */ const units = 'μs'; /* Allowed: but unnecessary as μ is a printable character. */ const units = '\u03bcs'; // 'μs' /* Good: use escapes for non-printable characters with a comment for clarity. */ return '\ufeff' + content; // Prepend a byte order mark.
77. Vượt quá 80 cột nếu cần thiết..submitButton { margin: 0 10px; }
- Chỉ cung cấp các biểu tượng cấp cao nhất.
Các câu lệnh
/* Best: perfectly clear even without a comment. */
const units = 'μs';
/* Allowed: but unnecessary as μ is a printable character. */
const units = '\u03bcs'; // 'μs'
/* Good: use escapes for non-printable characters with a comment for clarity. */
return '\ufeff' + content; // Prepend a byte order mark.
21 nên được nhóm lại với nhau và đặt đầu tiên. Tất cả các tuyên bố .submitButton {
margin: 0 10px;
}
77 nên tuân theo. Hai danh sách nên được phân tách bằng một dòng trống.Tương tự như các câu lệnh nhập trong các ngôn ngữ khác, các câu lệnh
/* Best: perfectly clear even without a comment. */
const units = 'μs';
/* Allowed: but unnecessary as μ is a printable character. */
const units = '\u03bcs'; // 'μs'
/* Good: use escapes for non-printable characters with a comment for clarity. */
return '\ufeff' + content; // Prepend a byte order mark.
21 và .submitButton {
margin: 0 10px;
}
77 nên được viết trong 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 phải được sắp xếp theo thứ tự bảng chữ cái, với các chữ cái viết hoa đầu tiên:
.submitButton {
margin: 0 10px;
}
44Tất cả các thành viên được xác định trên một lớp phải nằm trong cùng một tệp. Chỉ các lớp cấp cao nhất nên được cung cấp trong một tệp chứa nhiều thành viên được xác định trên cùng một lớp (ví dụ: các lớp enum, lớp bên trong, v.v.).
Làm cái này:
.submitButton {
margin: 0 10px;
}
45Không phải cái này:
.submitButton {
margin: 0 10px;
}
46Các thành viên trên các không gian tên cũng có thể được cung cấp:
.submitButton {
margin: 0 10px;
}
479.4.4.2 Bí danh với goog.module('my.test.helpers');
goog.module.declareLegacyNamespace();
goog.setTestOnly();
67
goog.module('my.test.helpers');
goog.module.declareLegacyNamespace();
goog.setTestOnly();
CẢNH BÁO:
67 bị phản đối. Các tệp mới không nên sử dụng goog.module('my.test.helpers');
goog.module.declareLegacyNamespace();
goog.setTestOnly();
67 ngay cả trong các dự án có cách sử dụng goog.module('my.test.helpers');
goog.module.declareLegacyNamespace();
goog.setTestOnly();
67 hiện có. New files should not use goog.module('my.test.helpers');
goog.module.declareLegacyNamespace();
goog.setTestOnly();
goog.module('my.test.helpers');
goog.module.declareLegacyNamespace();
goog.setTestOnly();
67 even in projects with existing goog.module('my.test.helpers');
goog.module.declareLegacyNamespace();
goog.setTestOnly();
67 usage.goog.module('my.test.helpers');
goog.module.declareLegacyNamespace();
goog.setTestOnly();
67 có thể được sử dụng để rút ngắn các tham chiếu đến các ký hiệu theo tên trong mã bằng cách sử dụng ________ 221/________ 177 Quản lý phụ thuộc.Chỉ có thể thêm một lời mời
goog.module('my.test.helpers');
goog.module.declareLegacyNamespace();
goog.setTestOnly();
67 cho mỗi tệp. Luôn luôn đặt nó trong phạm vi toàn cầu.Lời cầu khẩn
goog.module('my.test.helpers');
goog.module.declareLegacyNamespace();
goog.setTestOnly();
75 mở đầu phải được đi trước bằng chính xác một dòng trống và tuân theo bất kỳ câu lệnh /* Best: perfectly clear even without a comment. */
const units = 'μs';
/* Allowed: but unnecessary as μ is a printable character. */
const units = '\u03bcs'; // 'μs'
/* Good: use escapes for non-printable characters with a comment for clarity. */
return '\ufeff' + content; // Prepend a byte order mark.
21 nào, các câu lệnh .submitButton {
margin: 0 10px;
}
77 hoặc nhận xét cấp cao nhất. Việc gọi phải được đóng trên dòng cuối cùng trong tệp. Nối goog.module('my.test.helpers');
goog.module.declareLegacyNamespace();
goog.setTestOnly();
78 vào câu lệnh đóng của phạm vi. Tách xét nhận xét từ dấu chấm phẩy bằng hai không gian.Tương tự như các không gian tên C ++, không thụt vào trong các khai báo
goog.module('my.test.helpers');
goog.module.declareLegacyNamespace();
goog.setTestOnly();
67. Thay vào đó, hãy tiếp tục từ cột 0.Chỉ tạo bí danh cho các tên sẽ không được gán lại cho một đối tượng khác (ví dụ: hầu hết các hàm tạo, enum và không gian tên). Không làm điều này (xem bên dưới để biết cách làm bí danh một hàm tạo):
.submitButton {
margin: 0 10px;
}
48Tên phải giống như tài sản cuối cùng của toàn cầu mà chúng là bí danh.
.submitButton {
margin: 0 10px;
}
499.4.4.3 /* Best: perfectly clear even without a comment. */
const units = 'μs';
/* Allowed: but unnecessary as μ is a printable character. */
const units = '\u03bcs'; // 'μs'
/* Good: use escapes for non-printable characters with a comment for clarity. */
return '\ufeff' + content; // Prepend a byte order mark.
28
/* Best: perfectly clear even without a comment. */
const units = 'μs';
/* Allowed: but unnecessary as μ is a printable character. */
const units = '\u03bcs'; // 'μs'
/* Good: use escapes for non-printable characters with a comment for clarity. */
return '\ufeff' + content; // Prepend a byte order mark.
Thích sử dụng
.submitButton {
margin: 0 10px;
}
78 thay vì /* Best: perfectly clear even without a comment. */
const units = 'μs';
/* Allowed: but unnecessary as μ is a printable character. */
const units = '\u03bcs'; // 'μs'
/* Good: use escapes for non-printable characters with a comment for clarity. */
return '\ufeff' + content; // Prepend a byte order mark.
28 để phá vỡ các phụ thuộc tròn giữa các tệp trong cùng một thư viện. Không giống như .submitButton {
margin: 0 10px;
}
77, câu lệnh .submitButton {
margin: 0 10px;
}
78 được phép nhập không gian tên trước khi được xác định./* Best: perfectly clear even without a comment. */
const units = 'μs';
/* Allowed: but unnecessary as μ is a printable character. */
const units = '\u03bcs'; // 'μs'
/* Good: use escapes for non-printable characters with a comment for clarity. */
return '\ufeff' + content; // Prepend a byte order mark.
28 vẫn có thể được sử dụng trong mã di sản để phá vỡ các tài liệu tham khảo tròn kéo dài qua các ranh giới thư viện, nhưng mã mới hơn nên được cấu trúc để tránh nó.Các tuyên bố
/* Best: perfectly clear even without a comment. */
const units = 'μs';
/* Allowed: but unnecessary as μ is a printable character. */
const units = '\u03bcs'; // 'μs'
/* Good: use escapes for non-printable characters with a comment for clarity. */
return '\ufeff' + content; // Prepend a byte order mark.
28 phải tuân theo các quy tắc kiểu tương tự như .submitButton {
margin: 0 10px;
}
77 và .submitButton {
margin: 0 10px;
}
78. Toàn bộ khối /* Best: perfectly clear even without a comment. */
const units = 'μs';
/* Allowed: but unnecessary as μ is a printable character. */
const units = '\u03bcs'; // 'μs'
/* Good: use escapes for non-printable characters with a comment for clarity. */
return '\ufeff' + content; // Prepend a byte order mark.
28, .submitButton {
margin: 0 10px;
}
77 và .submitButton {
margin: 0 10px;
}
78 được sắp xếp theo thứ tự bảng chữ cái.