使用描述性的长名称

定义函数的时候函数的名称要尽可能描述完整的函数用处,从而增加代码的可读性

  1. // ❌
  2. function email(user){
  3. // implementation
  4. }
  5. // ✔️
  6. function sendEmailToUser(emailAddress){
  7. // implementation
  8. }

避免使用大量参数

限制使用参数数量很有必要,这么做使得测试函数时更加轻松
过多的参数将导致难以采用有效的测试用例

  1. // ❌
  2. function test(arg1, arg2, arg3, arg4){
  3. // implementation
  4. }
  5. // ✔️
  6. let args = {
  7. arg1: 'Sylar',
  8. arg2: 1,
  9. arg3: true,
  10. arg4: 3
  11. }
  12. function test(args){
  13. // implementation
  14. }
  • 应该避免三个以上的参数的函数,
  • 通常来说超过两个参数的函数意味着功能过于复杂,需要重新调优
  • 当确实需要三个以上的参数时,可考虑把这些参数封装为一个对象

    使用默认参数代替条件选择

    目的为了精简代码 ```javascript // ❌ function assignment(name) { let result = name || ‘Sylar’; }

// ✔️ function assignment(name = ‘Sylar’) { … }

  1. <a name="fx4TW"></a>
  2. # 保证函数功能的单一性
  3. 功能不单一的函数导致难以重构、测试和理解。<br />编写函数时,应该保证一个函数只做一件事情。
  4. ```javascript
  5. // ❌
  6. function myDay() {
  7. // eat
  8. // implementation
  9. // sleep
  10. // implementation
  11. // code
  12. // implementation
  13. }
  14. // ✔️
  15. function eat() {
  16. // implementation
  17. }
  18. function eat() {
  19. // implementation
  20. }
  21. function eat() {
  22. // implementation
  23. }
  24. function myDay() {
  25. eat();
  26. sleep();
  27. code();
  28. }

移除重复代码

用CV的方式来代替封装会

  1. 写出很多冗余的代码
  2. 需求更改,要修改所有的方法

应该进行封装,统一调用统一修改

不要使用Flag作为函数参数

使用Flag通常意味函数的功能单一性被破坏,
应该对函数进行功能的再次划分

  1. // ❌
  2. function createFile(name, isPulic) {
  3. if (isPublic) {
  4. fs.create(`./public/${name}`);
  5. } else {
  6. fs.create(name);
  7. }
  8. }
  9. // ✔️
  10. function createFile(name) {
  11. fs.create(name);
  12. }
  13. function createPublicFile(name) {
  14. fs.create(`./public/${name}`);
  15. }

避免修改全局变量

应该以返回一个新的变量,避免污染全局。
应该全局变量是全局都可以访问,有可能在其它地方也会引用到。对全局变量代修改时可能会引起报错或意想不到的问题。

不要写全局函数

污染全局是一个不好的实践,可能会对其它库引起冲突。
要使用模块化