RSS DEV 社区
关注
SRP 与英雄之旅:如绝地大师般编写代码
作者讲述了一次与复杂遗留代码库的经历:一个单一的 User 类承担了验证、密码哈希、发送邮件、数据库持久化以及报告生成等职责。这个过载的类使得即便是微小的改动也变得充满风险,犹如蒙眼拆除炸弹。管理此类代码以及让新开发者融入团队的困难,凸显了需要一种更优方法的必要性,从而引出了单一职责原则(SRP)的发现。SRP 指出,一个类应当只有一个引起其变化的理由。应用 SRP 会带来诸多益处,包括提升清晰度、简化测试、增强灵活性以及提高安全性。文章随后对比了设计不良的“上帝”类与遵循 SRP 重构后的版本。初始的 User 类表现出多种变更动机、难以测试以及紧密耦合。相比之下,重构后的版本将这些职责分解为更小、更专注的类:User、UserValidator、PasswordHasher、UserRepository、EmailService 和 ReportGenerator。这种分离使得每个类都只具备单一目的,从而更容易理解、测试和独立修改。例如,更改哈希算法仅需更新 PasswordHasher 类。遵循 SRP 最终能够加快开发速度、减少缺陷、提升团队可扩展性,并使系统更具面向未来的适应性。作者鼓励读者在自己的项目中识别并重构具有多重职责的类。