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
Limiting the amount of function parameters is incredibly important because it
203
-
makes testing your function easier. Having more than three leads to a
204
-
combinatorial explosion where you have to test tons of different cases with
205
-
each separate argument.
200
+
## **Hàm**
201
+
### Đối số của hàm (lý tưởng là ít hơn hoặc bằng 2)
202
+
Giới hạn số lượng param của hàm là một điều cực kì quan trọng bởi vì nó làm cho hàm của bạn trở nên dễ dàng hơn để test. Trường hợp có nhiều hơn 3 params có thể dẫn đến việc bạn phải test hàng tấn test case khác nhau với những đối số riêng biệt.
206
203
207
-
One or two arguments is the ideal case, and three should be avoided if possible.
208
-
Anything more than that should be consolidated. Usually, if you have
204
+
1 hoặc 2 đối số là trường hợp lý tưởng, còn trường hợp 3 đối số thì có thể sử dụng được nhưng chúng ta nên tránh đi là tốt hơn. Những trường hợp khác (từ 3 params trở lên) thì phải cân nhắc thật kỹ lưỡng để sử dụng. Thông thường nếu bạn có nhiều hơn 2 đối số params thì function của bạn thường phải thực hiện nhiều hơn. Trong trường hợp ngược lại, phần lớn thời gian
205
+
#TODO
209
206
more than two arguments then your function is trying to do too much. In cases
210
207
where it's not, most of the time a higher-level object will suffice as an
211
208
argument.
209
+
#ENDTODO
212
210
213
-
Since JavaScript allows you to make objects on the fly, without a lot of class
214
-
boilerplate, you can use an object if you are finding yourself needing a
215
-
lot of arguments.
211
+
Ở Javascript cho phép bạn tạo một object với nhiều đối số, mà không có một class nào có sẵn, bạn có thể sử dụng một object nếu bạn đang tìm kiếm một phương pháp khác thay thế cho việc truyền nhiều đối số.
216
212
217
-
To make it obvious what properties the function expects, you can use the es6
218
-
destructuring syntax. This has a few advantages:
213
+
Để những thuộc tính của chức năng dự kiến trở nên rõ ràng, bạn có thể sử dụng các cấu trúc của ES6 destructuring. Dưới đây là một số ưu điểm:
219
214
220
-
1. When someone looks at the function signature, it's immediately clear what
221
-
properties are being used.
215
+
1. Khi một ai đó nhìn vào chức năng, những thuộc tính sẽ trở nên rõ ràng ngay lập tức.
222
216
2. Destructuring also clones the specified primitive values of the argument
223
217
object passed into the function. This can help prevent side effects. Note:
224
218
objects and arrays that are destructured from the argument object are NOT
225
219
cloned.
226
-
3. Linters can warn you about unused properties, which would be impossible
227
-
without destructuring.
220
+
3. Linter có thể sẽ cảnh báo bạn về những thuộc tính không sử dụng, do đó nó sẽ phải có destructuring
228
221
229
222
**Bad:**
230
223
```javascript
@@ -246,15 +239,11 @@ createMenu({
246
239
cancellable:true
247
240
});
248
241
```
249
-
**[⬆ back to top](#mục-lục)**
242
+
**[⬆ Về đầu trang](#mục-lục)**
250
243
251
244
252
-
### Functions should do one thing
253
-
This is by far the most important rule in software engineering. When functions
254
-
do more than one thing, they are harder to compose, test, and reason about.
255
-
When you can isolate a function to just one action, they can be refactored
256
-
easily and your code will read much cleaner. If you take nothing else away from
257
-
this guide other than this, you'll be ahead of many developers.
245
+
### Chức năng chỉ nên giải quyết một vấn đề
246
+
Đây là một quy định quan trọng của kỹ thuật phần mềm. Khi một hàm thực hiện nhiều hơn 1 vấn đề, chúng sẽ trở nên khó khăn hơn để viết code, test, và .... Khi bạn có thể tách riêng biệt một chức năng cho một action thì chúng có thể được refactor dễ dàng và code của bạn sẽ "sạch sẽ", dễ hiểu hơn. Nếu bạn chỉ cần làm theo hướng dẫn này thôi mà không cần làm gì khác thì bạn cũng đã giỏi hơn nhiều developer khác rồi.
258
247
259
248
**Bad:**
260
249
```javascript
@@ -281,9 +270,9 @@ function isClientActive(client) {
281
270
returnclientRecord.isActive();
282
271
}
283
272
```
284
-
**[⬆ back to top](#mục-lục)**
273
+
**[⬆ Về đầu trang](#mục-lục)**
285
274
286
-
### Function names should say what they do
275
+
### Tên chức năng phải nói ra được những gì chúng làm
287
276
288
277
**Bad:**
289
278
```javascript
@@ -293,7 +282,7 @@ function addToDate(date, month) {
293
282
294
283
constdate=newDate();
295
284
296
-
//It's hard to to tell from the function name what is added
285
+
//Thông qua tên chức năng, chúng ta rất khó để nhận biết rằng nó đã thêm cái gì
297
286
addToDate(date, 1);
298
287
```
299
288
@@ -306,12 +295,10 @@ function addMonthToDate(month, date) {
306
295
constdate=newDate();
307
296
addMonthToDate(1, date);
308
297
```
309
-
**[⬆ back to top](#mục-lục)**
298
+
**[⬆ Về đầu trang](#mục-lục)**
310
299
311
-
### Functions should only be one level of abstraction
312
-
When you have more than one level of abstraction your function is usually
313
-
doing too much. Splitting up functions leads to reusability and easier
314
-
testing.
300
+
### Chức năng chỉ nên có 1 lớp abstract
301
+
Khi bạn có nhiều hơn 1 lớp abstract của chức năng thì thông thường làm rất nhiều. Chia nhỏ các chức năng thì việc tái sử dụng và testing sẽ dễ dàng hơn.
315
302
316
303
**Bad:**
317
304
```javascript
@@ -374,9 +361,9 @@ function parseBetterJSAlternative(code) {
374
361
});
375
362
}
376
363
```
377
-
**[⬆ back to top](#mục-lục)**
364
+
**[⬆ Về đầu trang](#mục-lục)**
378
365
379
-
### Remove duplicate code
366
+
### Xóa những dòng code trùng lặp
380
367
Do your absolute best to avoid duplicate code. Duplicate code is bad because it
381
368
means that there's more than one place to alter something if you need to change
0 commit comments