「漫谈」软件设计的目标和途径是什么?(9)

2023-05-03 来源:飞速影视
7 一些误区
看到这里估计有人要忍不住要批判我了:
可复用性呢?GoF23种设计模式都强调构建可复用性的软件,可复用性跑哪去了?被你吃了啊。可靠性呢?健壮性呢?高可用性呢?等等吧,就像当年软工课程上罗列的各种指标,或者各种的模式和架构等等。其实不是说这些东西不重要,或者我不认可这些东西,我认可,也理解它们的重要性。但是有一点要彻底搞清楚,哪些是我们的目标?哪些是我们的途径?
7.1 可复用性只是一种现象
可复用性难道是我们追求的目标吗?我的回答是:否,我们的目标是软件的可维护性!那么你说复用就会增加可维护性,其实不尽然,不合适的复用反而会降低可维护性,这是一把双刃剑,借用著哥的一句话:“越通用越无用”。那么你说不是目标也是途径吧!那么我的回答是:也不是途径,你这条途径可能会违宪,你觉得它合适吗?也不是目标,也不是途径,那么它到底是什么?答:只是一种现象,如果你落实了上述的5条途径中的某些途径,你会发现你的代码自然而然就可以复用了。
7.2 设计模式源自缺陷
首先我们看一下设计模式是什么: “是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性、程序的重用性。” 也就是说它是经过验证的一些最佳实践的经验性代码。那么问题来了,什么时候才需要最佳实践?,当你对你所使用的工具出现迷惑的时候,不太清楚怎么处理才好的时候,你需要借鉴一下其他人总结出来的比较好的处理方案才能完成你的工作的时候。这个处理方案,就是设计模式。那么此时你想一想,GoF23的设计模式是在弥补什么的缺陷?OO的啊,人家的副标题是“可复用面向对象软件的基础”。
当然设计模式也不是OO的专有的东西,凡是通用的那些已命名的最佳实践,都可以称之为设计模式。
7.3 OOP不是目的
很多时候在讨论代码的时候,看着代码觉得不舒服,一言不合就互相给对方扣上了一顶帽子,你的代码一点也不OO!这其实大可不必,OO是来解决一些问题的,但是它并不能解决全部问题,那么多static的类或者方法,它OO吗?OO只是解决我们问题的一种途径,也不是唯一的途径,千万不可把工具当目的。
7.4 DDD带来的问题比解决的问题更多
DDD自从诞生之初就面临很多争议。DDD本身出发点非常好(软件核心复杂性应对之道)。DDD是基于OO,在OO之上扩充了很多概念,希望借此最大程度的发挥出OO的优势。但是其扩充的概念太多了,而且千人千面,每个人心中的理解都不尽相同,而且可以说南辕北辙的都有,这就使得它非常难以在团队中达成理解上的共识。也就导致实施落地上的种种困难,即使一开始落地了一部分,随着时间的推移,则会变得越来越难以为继,好像侧重点都跑到了我这么写到底符合DDD的思想吗?而对业务的关注的变成了二等公民,这简直是个灾难,这时候代码的可理解性就非常脆弱了。所以根据奥卡姆剃刀原则,剃掉它是最优的选择。
相关影视
合作伙伴
本站仅为学习交流之用,所有视频和图片均来自互联网收集而来,版权归原创者所有,本网站只提供web页面服务,并不提供资源存储,也不参与录制、上传
若本站收录的节目无意侵犯了贵司版权,请发邮件(我们会在3个工作日内删除侵权内容,谢谢。)

www.fs94.org-飞速影视 粤ICP备74369512号