红宝书第五十四讲:设计原则SOLID与DRY:写出优雅代码的秘密

编程原则 = 可维护性 + 可扩展性,让代码像积木一样灵活组合。用参考资料中的案例解释核心概念:

资料取自《JavaScript高级程序设计(第5版)》
查看总目录:红宝书学习大纲


一、DRY原则(不要重复自己)

核心思想:同样的代码不要重复写!
案例演示(基于资料6的代码拆分建议)1

// ❌重复代码(违反DRY)
function calcAreaCircle(r) {
  return 3.14 * r * r;
}
function calcVolumeSphere(r) {
  return (4/3) * 3.14 * r * r * r;
}

// ✅遵循DRY:把重复的π提取为常量
const PI = 3.14;  
function calcAreaCircle(r) {
  return PI * r * r;
}
function calcVolumeSphere(r) {
  return (4/3) * PI * r * r * r;
}

二、SOLID原则(五大模块化设计)

重点掌握两个核心(结合资料中的代码组织实践1):

  1. 单一职责原则(S)
    每个模块只做一件事(资料6建议每个对象分到独立文件1):

    flowchart TB
     用户模块 --> 只处理用户数据
     订单模块 --> 只处理订单逻辑
     登录模块 --> 只处理认证逻辑  
  2. 开闭原则(O)
    扩展而非修改已有代码(示例基于资料2的可维护性思路2):

    // ✅通过继承扩展功能,避免修改原类
    class Animal {
      makeSound() { /* 基础声音 */ }
    }
    class Dog extends Animal {
      makeSound() { /* 狗的叫声 */ } 
    }

实际场景对比

未遵循原则的代码

// 一个函数处理多个任务(违反单一职责)
function processUser(user) {
  validateUser(user); // 验证
  saveToDB(user);     // 存数据库
  sendEmail(user);    // 发邮件
}

遵循SOLID的代码

// 拆分职责(每个函数做一件事)
validateUser(user);
saveUserToDB(user);
sendWelcomeEmail(user);

关键原则总结

原则目标参考资料关联
DRY减少重复代码,提升维护性资料6的代码拆分建议 1
SOLID(SRP)每个模块单一职责,解耦代码资料6的文件组织结构 1
SOLID(OCP)扩展而不修改原有代码基于资料2的可维护性思路 2

目录:总目录
上篇文章:红宝书第五十三讲:Google JavaScript代码规范(简化版):让代码像乐高一样整齐

下篇文章:红宝书第五十五讲:文档生成(JSDoc vs ESDoc):像写笔记一样自动生成说明书

脚注


  1. 《JavaScript高级程序设计(第5版)》建议分文件避免代码冗余,促进单一职责
  2. 《JavaScript高级程序设计(第5版)》强调可读性对维护性的重要性

kovli
13 声望7 粉丝