[译]Tell, Don't Ask
原文链接:Tell, Don't Ask
Alec Sharp在其最近的书Smalltalk by Example[1]中指出了一个极有价值的观点:
过程化的代码获取信息并做出决定。面向对象的代码只是告诉对象去做。
— Alec Sharp
这意味着,你应该尝试直接告诉对象你希望他们去做什么,而不是询问他们的状态,做出决定,再告诉他们去做什么。
这样做的问题是,作为调用者,你不应该根据你获得的被调用对象的状态来做决定, 然后再去改变对象的状态。你实现的这部分逻辑很可能是被调用对象的职责,而不...
codethink.me1 min read