You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: 1-js/03-code-quality/04-ninja-code/article.md
+11-9
Original file line number
Diff line number
Diff line change
@@ -7,9 +7,9 @@ Học mà không suy nghĩ thì vô ích; suy nghĩ mà không học thì nguy h
7
7
8
8
Các lập trình viên ninja trong quá khứ đã sử dụng những thủ thuật này để mài giũa tâm trí của những người bảo trì mã.
9
9
10
-
Các chuyên gia đánh giá mã tìm kiếm chúng trong các nhiệm vụ kiểm tra.
10
+
Các chuyên gia đánh giá mã tìm kiếm chúng trong các tác vụ kiểm thử.
11
11
12
-
Các nhà phát triển mới làm quen đôi khi sử dụng chúng thậm chí còn tốt hơn cả các lập trình viên ninja.
12
+
Các nhà lập trình viên ít kinh nghiệm đôi khi sử dụng chúng thậm chí còn tốt hơn cả các lập trình viên ninja.
13
13
14
14
Hãy đọc kỹ chúng và tìm hiểu xem bạn là ai -- một ninja, một người mới hay có thể là một người đánh giá mã?
15
15
@@ -77,17 +77,17 @@ Trong khi chọn tên, hãy cố gắng sử dụng từ trừu tượng nhất.
77
77
78
78
-**Tên lý tưởng cho một biến là `data`.** Sử dụng nó ở mọi nơi bạn có thể. Thật vậy, mọi biến đều chứa *dữ liệu*, phải không?
79
79
80
-
...Nhưng phải làm gì nếu `data` đã được sử dụng? Hãy thử `value`, nó cũng phổ biến. Xét cho cùng, một biến cuối cùng sẽ nhận được *giá trị*.
80
+
...Nhưng phải làm gì nếu `data` đã được sử dụng? Hãy thử `value`, nó cũng phổ biến. Xét cho cùng, một biến cuối cùng sẽ nhận được *giá trị*.
81
81
82
82
-**Đặt tên biến theo kiểu: `str`, `num`...**
83
83
84
-
Cung cấp cho họ một thử. Một người mới bắt đầu có thể thắc mắc - những cái tên như vậy có thực sự hữu ích cho một ninja không? Thật sự, chúng có!
84
+
Hãy thử chúng. Một người mới bắt đầu có thể thắc mắc - những cái tên như vậy có thực sự hữu ích cho một ninja không? Thật sự, chúng có!
85
85
86
-
Chắc chắn, tên biến vẫn có ý nghĩa gì đó. Nó cho biết những gì bên trong biến: một chuỗi, một số hoặc thứ gì đó khác. Nhưng khi một người ngoài cuộc cố gắng hiểu mã, họ sẽ ngạc nhiên khi thấy rằng thực tế không có thông tin gì cả! Và cuối cùng sẽ không thể thay đổi mã được suy nghĩ kỹ lưỡng của bạn.
86
+
Chắc chắn, tên biến vẫn có ý nghĩa gì đó. Nó cho biết những gì bên trong biến: một chuỗi, một số hoặc thứ gì đó khác. Nhưng khi một người ngoài cuộc cố gắng hiểu mã, họ sẽ ngạc nhiên khi thấy rằng thực tế không có thông tin gì cả! Và cuối cùng họ sẽ thất bại trong việc thay đổi đoạn code mà bạn đã suy nghĩ kỹ lưỡng để viết ra
87
87
88
-
Loại giá trị rất dễ tìm ra bằng cách gỡ lỗi. Nhưng ý nghĩa của biến là gì? Nó lưu trữ chuỗi/số nào?
88
+
Kiểu giá trị rất dễ tìm ra bằng cách gỡ lỗi. Nhưng ý nghĩa của biến là gì? Nó lưu trữ chuỗi/số nào?
89
89
90
-
Không có cách nào để tìm ra nếu không có một sự suy ngẫm tốt!
90
+
Không có cách nào để tìm ra nếu không có một sự suy ngẫm tốt!
91
91
92
92
-**...Nhưng nếu không còn những tên như vậy nữa thì sao?** Chỉ cần thêm một số: `data1, item2, elem5`...
93
93
@@ -141,6 +141,8 @@ Trong một hàm, hãy cố gắng chỉ sử dụng các biến được truy
141
141
142
142
**Một biến thể nâng cao của phương pháp này là ngầm (!) thay thế giá trị bằng giá trị tương tự ở giữa vòng lặp hoặc hàm.**
143
143
144
+
Ví dụ:
145
+
144
146
```js
145
147
functionninjaFunction(elem) {
146
148
// 20 dòng code làm việc với elem
@@ -192,7 +194,7 @@ function render() {
192
194
}
193
195
```
194
196
195
-
Một lập trình viên nhảy vào bên trong `render` có thể sẽ không nhận thấy rằng có một `người dùng` cục bộ che khuất cái bên ngoài.
197
+
Một lập trình viên nhảy vào bên trong `render` có thể sẽ không nhận thấy rằng có một `user` cục bộ che khuất cái bên ngoài.
196
198
197
199
Sau đó, họ sẽ cố gắng làm việc với `user` với giả định rằng đó là biến bên ngoài, kết quả của `authenticateUser()`... Cái bẫy đã bung ra! Xin chào, trình gỡ lỗi...
198
200
@@ -227,7 +229,7 @@ Các hành động bổ sung không nên rõ ràng từ tên hàm. Một lập t
227
229
228
230
**Kết hợp nhiều hành động thành một để bảo vệ mã của bạn không bị sử dụng lại.**
229
231
230
-
Hãy tưởng tượng, một nhà phát triển khác chỉ muốn kiểm tra email và không xuất bất kỳ thông báo nào. Hàm `validateEmail(email)` của bạn thực hiện cả hai sẽ không phù hợp với họ. Vì vậy, họ sẽ không phá vỡ thiền định của bạn bằng cách hỏi bất cứ điều gì về nó.
232
+
Hãy tưởng tượng, một nhà phát triển khác chỉ muốn kiểm tra email và không xuất bất kỳ thông báo nào. Hàm `validateEmail(email)` của bạn thực hiện cả hai sẽ không phù hợp với họ. Vì vậy, họ sẽ không phá vỡ tâm trí của bạn bằng cách hỏi bất cứ điều gì về nó.
0 commit comments