龙仔 2020-5-26 15:17
我最近看了Bob大叔《架构整洁之道》里面的图,记得您上课说过什么or和er类属于假OO,貌似书里这样的图还不少,您怎么看
UMLChina潘加宇
我书里相关内容的截图是这样的
Robert C. Martin这本书我也看过,毕竟他说的是“服务”不是类,这样命名也不是不可以。
不过借题发挥一下:Robert C. Martin写的书里面(包括《敏捷软件开发...》等)很多地方,类也都是这种er、or类,没有属性,全是操作,然后SRP、OCP什么的喊一通,名头又响,误导很多人,以为这样就掌握了“面向对象设计”了。
下面是我画的一个和Robert C. Martin图中类似领域的类图
显然,下面的图需要更深入的思考,不过也正因为如此,上面类似Robert C. Martin书中的图更受欢迎,因为不用动脑子就可以得到一堆正确而无用的废话来充工作量。谁负责分配车辆?车辆分配器,怎么分配,我有一个车辆分配算法……,巧妙地把问题的困难之处躲过去了。
网上很多“领域驱动设计”的文章也是如此,发明创造一堆“新”词汇,结果整篇文章一个稍微复杂点的领域类图都没有,整个就是一一对应的功能分解的翻版,但也同样因为不需要太多思考,就可以得到一大堆正确而无用的废话来充工作量,也很受欢迎。
不需要付出比绝大数人更深入的思考就可以得到的答案,可能是错误的答案。
就像高考一样,前面几道题学渣和学霸都可以拍脑袋就答,越往后题目越来越难,学渣如果还以为拍脑袋给出答案就能得分,那就太天真了。
毕竟学渣占多数,如果有人“发明”一种不需要太多思考的答题“新”方法,例如三长一短选最短,两长两短就选B,参差不齐就选C,学渣就扑上去“拥抱敏捷”了。
现实中竞争如此激烈,能给我们带来利润的问题,往往是比“高考题”还残酷的“竞赛题”,如果你想的答案傻子也想得到,要么这个问题不值钱,要么你的答案是错的。