日历

September 2020
M T W T F S S
 123456
78910111213
14151617181920
21222324252627
282930  

Reply To: 迪米特法则

Home Forums 《冒号课堂》讨论区 迪米特法则 Reply To: 迪米特法则

#1305
hui
Keymaster

用Number作例子是不恰当的,如果这个Number是基本类型的话。相反,如果Number包含足够的业务逻辑,那么magic number的处理正应该是Number的职责。

一个通俗的tell, don’t ask的例子是:要一只狗跑,不是dog.getLegs().run(),而是dog.run(),即不是指挥狗的腿来跑,而是由狗自己负责调用腿来跑。事实上,指挥者根本不在乎狗有没有腿,只在乎它能不能跑。至于它用腿跑,还是聪明到能用嘴控制某个机动车来跑,则是狗的职责,不是指挥者的职责。因此“tell, don’t ask”是一种良好的职责分工原则,能使代码保持合理的抽象层次划分。

可以这么理解:tell代表一个抽象的命令,而ask代表(被命令对象的)具体执行方法或步骤。

 请您评分1星(很差)2星(不行)3星(一般)4星(不错)5星(很棒)