王争《设计模式之美》学习笔记
DRY 原则(Don’t Repeat Yourself)
- DRY 原则,英文描述为:Don’t Repeat Yourself。中文直译为:不要重复自己。将它应用在编程中,可以理解为:不要写重复的代码。
- 三种典型的代码重复情况,它们分别是:实现逻辑重复、功能语义重复和代码执行重复。
实现逻辑重复
- 文中举例,用户身份验证类 UserAuthenticator,其中有两个方法:检查用户名 isValidUsername() 和密码 isValidPassword() 合法性。
- 其中 isValidUsername() 和 isValidPassword() 内部逻辑相同,分别检查了输入是否为空、字符串长度、是否小写、是否只包含合法字符。
- 以上两方法的内部代码完全一致,重复代码十分明显,此为实现逻辑重复。
- 但是没有违背 DRY 原则,也不可以合并成一个方法。因为两个方法的语义不重复,一个是校验用户名一个是校验密码,以后很可能校验逻辑不一致,不可合二为一。
- 此处代码的优化倒是可以将方法内部的逻辑做更细粒度的封装,将每种校验都封装成方法,然后分别在两个方法 isValidUsername() 和 isValidPassword() 中调用。
功能语义重复
- 文中举例,两个判定 IP 地址是否合法的函数ÿ