Một số gợi ý convention khi viết Nodejs
Bài đăng này đã không được cập nhật trong 4 năm
Nếu như các developer trong cùng 1 dự án, mỗi người một phong cách code khác nhau thì đôi khi có thể tạo ra vấn đề khi phát sinh khi phát triển như người này phải đọc code người kia để hiểu và làm tiếp hoặc để fixbug. Để tránh những vấn đề như vậy khi làm việc theo nhóm, hầu hết các cộng đồng ngôn ngữ lập trình đều tuân theo bộ coding convention riêng. Bằng cách tuân theo các quy tắc này, mọi developer đều có thể viết code mà team của họ đọc có thể hiểu được mà không mất nhiều thời gian.
Bài viết này hướng dẫn viết code Node.js nhất quán và đẹp mắt về mặt thẩm mỹ, các bạn có thể tham khảo.
1. Formatting
- 4 spaces for indentation
Sử dụng 4 dấu cách để thụt đầu dòng code của bạn và hãy chắc chắn không bao giờ trộn các tab và dấu cách - một loại địa ngục đặc biệt đang chờ đợi^^.
- No trailing white space
Giống như bạn đánh răng sau mỗi bữa ăn, bạn hãy làm sạch bất kỳ khoảng trắng thừa nào trong các tệp .js của mình trước khi commit. Hãy cứ tưởng tượng những khoảng trắng thừa đó như mùi thối rữa của thức ăn, chính mùi đó sẽ xua đuổi những người cùng team với bạn hoặc đồng nghiệp bạn.
- 80 characters per line
Giới hạn dòng của bạn nên ở 80 ký tự. Vâng, màn hình đã lớn hơn nhiều trong vài năm qua, nhưng bộ não của bạn thì không. Sử dụng thêm chỗ để chia đôi màn hình, trình soạn thảo của bạn hỗ trợ điều đó, phải không?
- Use single quotes
Sử dụng dấu ngoặc kép, trừ khi bạn đang viết JSON. Điều này giúp bạn tách chuỗi đối tượng của mình khỏi chuỗi bình thường.
Right:
var foo = ‘bar’;
Wrong:
var foo = “bar”;
- Opening braces go on the same line
Dấu ngoặc nhọn mở đầu của bạn đi cùng dòng với câu lệnh.
Right:
if (true) {
console.log(‘winning’);
}
Wrong:
if (true)
{
console.log(‘losing’);
}
Ngoài ra, hãy lưu ý việc sử dụng khoảng trắng trước và sau câu lệnh điều kiện. Điều gì xảy ra nếu bạn muốn viết ‘else’ hoặc ‘else if’ cùng với ‘if’…
Right:
if (true) {
console.log(‘winning’);
} else if (false) {
console.log(‘this is good’);
} else {
console.log(‘finally’);
}
Wrong:
if (true)
{
console.log(‘losing’);
}
else if (false)
{
console.log(‘this is bad’);
}
else
{
console.log(‘not good’);
}
- Declare one variable per var/let/constant statement
Khai báo một biến cho mỗi câu lệnh var/let/constant, nó giúp sắp xếp lại các dòng dễ dàng hơn.
Right:
var keys = [‘foo’, ‘bar’];
var values = [23, 42];
var object = {};
Wrong:
var keys = [‘foo’, ‘bar’],
values = [23, 42],
object = {},
key;
2. Naming Conventions
- Use lowerCamelCase for variables, properties and function names
Các variables, properties và tên function nên sử dụng lowerCamelCase. Chúng cũng phải mang tính mô tả. Thường nên tránh các biến ký tự đơn và các chữ viết tắt không phổ biến.
Right:
var adminUser = db.query(‘SELECT * FROM users …’);
Wrong:
var admin_user = db.query(‘SELECT * FROM users …’);
- Use UpperCamelCase for class names
Tên class phải được viết hoa bằng cách sử dụng UpperCamelCase.
Right:
function BankAccount() {
//
}
Wrong:
function bank_Account() {
//
}
- Use UPPERCASE for Constants
Hằng số nên được khai báo dưới dạng biến thông thường hoặc static class properties, sử dụng tất cả các chữ cái viết hoa.
Right:
var SECOND = 1 * 1000;
function File() {
}
File.FULL_PERMISSIONS = 0777;
Wrong:
const SECOND = 1 * 1000;
function File() {
}
File.fullPermissions = 0777;
Variables
- Object / Array creation
Sử dụng dấu phẩy ở cuối và đặt các khai báo ngắn gọn trên một dòng.
Right:
var a = ['hello', 'world'];
var b = {
good: 'code',
'is generally': 'pretty',
};
Wrong:
var a = [
'hello', 'world'
];
var b = {"good": 'code'
, is generally: 'pretty'
};
Conditionals
- Use the === operator
Lập trình không phải để ghi nhớ các quy tắc ngu ngốc. Sử dụng triple equality operator và nó sẽ hoạt động như mong đợi.
Right:
var a = 0;
if (a !== '') {
console.log('winning');
}
Wrong:
var a = 0;
if (a == '') {
console.log('losing');
}
- Use descriptive conditions
Mọi điều kiện non-trivial nên được gán cho một biến hoặc hàm có tên mô tả:
Right:
var isValidPassword = password.length >= 4 && /^(?=.*\d).{4,}$/.test(password);
if (isValidPassword) {
console.log('winning');
}
Wrong:
if (password.length >= 4 && /^(?=.*\d).{4,}$/.test(password)) {
console.log('losing');
}
Functions
- Write small functions
Giữ cho các function của bạn thật ngắn gọn. Mỗi function chỉ làm 1 việc
- Return early from functions
Để tránh lồng sâu các câu lệnh if, hãy luôn trả về giá trị của hàm càng sớm càng tốt.
Right:
function isPercentage(val) {
if (val < 0) {
return false;
}
if (val > 100) {
return false;
}
return true;
}
Wrong:
function isPercentage(val) {
if (val >= 0) {
if (val < 100) {
return true;
} else {
return false;
}
} else {
return false;
}
}
Hoặc đối với ví dụ cụ thể này, bạn cũng có thể rút ngắn mọi thứ hơn nữa:
function isPercentage(val) {
var isInRange = (val >= 0 && val <= 100);
return isInRange;
}
Comments
- Use slashes for comments
Sử dụng dấu gạch chéo cho cả comments một dòng và nhiều dòng. Cố gắng chỉ viết comment giải thích ở những phần logic phức tạp.
Right:
// 'ID_SOMETHING=VALUE' -> ['ID_SOMETHING=VALUE',
// 'SOMETHING', 'VALUE']
var matches = item.match(/ID_([^\n]+)=([^\n]+)/));
// This function has a nasty side effect where a failure to
// increment a redis counter used for statistics will
// cause an exception. This needs to be fixed in a later iteration.
function loadUser(id, cb) {
// ...
}
var isSessionValid = (session.expires < Date.now());
if (isSessionValid) {
// ...
}
Wrong:
// Execute a regex
var matches = item.match(/ID_([^\n]+)=([^\n]+)/);
// Usage: loadUser(5, function() { ... })
function loadUser(id, cb) {
// ...
}
// Check if the session is valid
var isSessionValid = (session.expires < Date.now());
// If the session is valid
if (isSessionValid) {
// ...
}
Cảm ơn bạn vì đã đọc!
Link bài viết gốc: https://medium.com/swlh/node-js-coding-style-guidelines-74a20d00c40b
All rights reserved