这是我在DDD Yahoo!上发布的内容重新发布的.组.
一切都相同,你写phone.dial(phoneNumber)或phoneNumber.dialOn(电话)?请记住可能的未来要求(除电话号码外的帐号,除电话外的计算器).
这个选择倾向于说明信息专家,单一责任原则和Tell Do Not Ask的成语是如何相互矛盾的.
phoneNumber.dialOn(电话)支持信息专家和告诉不要问,而phone.dial(phoneNumber)支持单一责任原则.
如果您熟悉Ken Pugh在Prefactoring中的工作,那就是电子表格难题 ; 你添加行或列?
phone.dial()
,因为它是拨打电话的电话.
Actor.Verb(输入) - >输出.
Meh - User.Dial(数字).在给定的环境中,手机毫无意义.SOL(大声说出来)是一个很好的方式来思考这个(成语和原则除外):
手机有表盘.他们无法拨打自己的电话.电话号码是数字.用户在电话拨号上拨打电话号码.