知识卡片

方法粒度同样适用单一职责

普通读书笔记卡 · 1979.n.3

内容

[[单一职责原则的定义]]也约束方法——一个方法只做一件事。反例是用changeUser配合可变参数, 内部按参数类型分支处理”改用户名”“改地址”等逻辑;正确做法是拆成changeUserName、 changeHomeAddress等职责单一的方法,方法名本身就该说明它做什么。发散:这是”参数驱动分支” 反模式的具体表现,靠参数值切换逻辑分支的方法都值得用SRP重新审视。

参考来源

- 位置:《设计模式之禅(第2版)》第1章《单一职责原则》(源文件:_epub-src/text/part0006.html) - 结论依据:原文对比了changeUser(根据可变参数changeOptions分支修改不同字段)与拆分后的changeUserName/changeHomeAddress/changeOfficeTel,明确指出前者"方法职责不清晰,不单一"。 - 原始内容:单一职责适用于接口、类,同时也适用于方法……如果要修改用户名称,就调用changeUserName方法;要修改家庭地址,就调用changeHomeAddress方法……每个方法的职责非常清晰明确,不仅开发简单,而且日后的维护也非常容易。