知识卡片
方法粒度同样适用单一职责
内容
[[单一职责原则的定义]]也约束方法——一个方法只做一件事。反例是用changeUser配合可变参数, 内部按参数类型分支处理”改用户名”“改地址”等逻辑;正确做法是拆成changeUserName、 changeHomeAddress等职责单一的方法,方法名本身就该说明它做什么。发散:这是”参数驱动分支” 反模式的具体表现,靠参数值切换逻辑分支的方法都值得用SRP重新审视。
参考来源
- 位置:《设计模式之禅(第2版)》第1章《单一职责原则》(源文件:_epub-src/text/part0006.html)
- 结论依据:原文对比了changeUser(根据可变参数changeOptions分支修改不同字段)与拆分后的changeUserName/changeHomeAddress/changeOfficeTel,明确指出前者"方法职责不清晰,不单一"。
- 原始内容:单一职责适用于接口、类,同时也适用于方法……如果要修改用户名称,就调用changeUserName方法;要修改家庭地址,就调用changeHomeAddress方法……每个方法的职责非常清晰明确,不仅开发简单,而且日后的维护也非常容易。