`
soleghost
  • 浏览: 42016 次
  • 性别: Icon_minigender_1
  • 来自: 未知
社区版块
存档分类
最新评论

大道至简与过度设计

阅读更多

前段时间,由于系统需要扩展一下发送事件通知,一个服务可以发送多个通知,而且通知里需要有一些逻辑判断。冥思苦想后,在抽象模板方法中增加了一个扩展点,又通过interceptor拦截服务的方法名,当时还在为自己高深的设计窃喜。

1. 找了一位同事帮我review下代码。大概1分钟之后,给出的评价是设计比较抽象,太复杂了。
回头好好想了想,软件系统中的设计是干嘛的?搞的那么花花稍稍,真的可以通过花哨的设计来提高软件的可维护性吗?可以通过抽象来解耦合吗?软件是用来的维护的,维护就需要人来读懂,太过抽象的设计并不利于软件的维护。一个功能的实现也许有很多方法,但是真正适合我们的不是最抽象的,而是实实在在的、易读的、易维护的设计。想起了以前读过的X核心和Y核心的代码,X核心以JBPM的工作流状态为核心,几乎任何的操作服务都要经过状态变更,几十个方法都要经过业务引擎的才能完成任务,导致很多业务都只能在业务引擎中增加代码,越来越难读,越来越难维护;还有那个产品模型,据说是伯克利大学的一个什么东西,hoho,看起来真的很累,最后只能是越来越臃肿;而Y核心以计价模型为中心,但是我们现在的业务只涉及到计价模型的1/3,初读者看起来会很痛苦,这也是过度设计吗?也许是还没有两位架构的功底,也许是确实有点过度设计,也许更多的是需要时间和经验去评判吧。

2.按照同事建议,花了一个晚上重构了代码。其中涉及到一个对象的深拷贝,网上搜搜,用java序列化的方法实现了深拷贝。接着又请教了另外一位同事,给出的意见是大道至简,这种深拷贝平时用到很少,而只是需要这个拷贝对象的个别属性,不需要搞这么复杂。

突然想起来刚来公司的《大道至简》的作者周爱民,此君已报道几个月,作为业务架构师异常低调,想起刚加入公司时tony的原话“这里的技术不简单,这里的业务很复杂”,看来就算大师来了也得熟悉熟悉咱公司的情况。牛人尚且如此啊,咱小菜鸟还需努力啊

分享到:
评论

相关推荐

    周爱民大道至简pdf

    1. **简约原则**:周爱民提倡"大道至简",即在设计和实现软件时,应追求简洁、直观。避免过度设计,以降低系统的复杂性,提高代码的可读性和可维护性。这与敏捷开发理念中的"YAGNI(You Aren't Gonna Need It,你...

    大道至简读书笔记

    - **倡导简单化**:提倡在软件工程实践中追求简单性和高效性,避免过度设计和复杂化,从而提高项目的成功率和可持续性。 #### 四、读者受益点 - **提升思维层次**:帮助读者理解软件开发不仅仅是技术和工具的应用...

    大道至简-软件工程实践者的思想

    《大道至简——软件工程实践者的思想》是周爱民(Aimingoo)撰写的一部关于软件工程哲学与实践的专著。不同于传统意义上的技术手册或编程指南,本书更侧重于探讨软件工程的内在逻辑和核心理念,旨在引导读者理解软件...

    结束语-大道至简_For_vip_user_0011

    【标题】:“结束语-大道至简_For_vip_user_0011”与C#相关的知识总结 【描述】:作者李兵在结束专栏时分享了写作过程中的感悟,强调了“大道至简”的原则在技术写作和学习中的重要性。 【标签】:“C#” 【部分...

    大道至简——软件工程实践者的思想

    2. **简约哲学**:"大道至简"的概念强调了在软件设计中避免过度复杂性的重要性。书中可能讨论了如何通过简化设计、减少冗余代码以及选择适当的架构来实现这一目标。 3. **需求管理**:有效的需求管理是软件项目成功...

    名大于实的大道至简之作.pdf

    《名大于实的大道至简之作》这本书主要探讨的是投资领域的知识,特别是针对证券市场的投机策略。书中强调了几个核心观点: 1. **专业化和持续努力**:投资证券市场如同医生和律师一样,是一个需要专业知识和经验...

    大道至简,“简”之有道.pdf

    过度依赖或过于复杂的课件可能会限制教师的灵活性,同时也可能分散学生的注意力。比如在教授《去图书馆》的路线时,实体公仔和黑板上的模拟演示往往比动态课件更有效,能更好地引导学生参与和记忆。 **策略四:精心...

    简单思路,但实用,线上买入,线下卖出,大道至简通达信指标公式源码.doc

    这个指标公式的设计思路是寻找短期内成交量持续放大、价格波动幅度增加且相对历史高点的成交量显著上升,同时价格波动幅度控制在一定范围内的情况,这样的组合可能预示着市场即将反转,是买入的好时机。当股价跌破...

    软件工程学习

    在软件工程中,这意味着开发者应关注软件设计与实现的核心原理,避免过度复杂化,力求以最少的代码、最清晰的结构实现功能,从而提高软件的可维护性、可扩展性和效率。 #### 实践与理论的统一 周爱民在书中强调,...

    自动化测试用例和大道至

    “大道至简”意味着在设计自动化测试时,我们应该追求简单而有效的方法。这可能包括: 1. 使用合适的技术栈:选择与项目需求匹配的自动化测试框架,避免过度复杂。 2. 模块化设计:将测试代码分解为可重用的模块,...

    今天你的ppt扁平化了吗PPT模板.pptx

    【大道至简的设计哲学】:扁平化设计体现了“大道至简”的设计理念,即通过最简单的方式传达最复杂的信息。在PPT设计中,这意味着去除不必要的装饰,让内容和信息成为设计的中心。 【陈华创意】:提到的“陈华创意...

    技术架构设计原则

    在设计技术架构时,有几大核心原则需要特别关注:大道至简、分轴扩展、正确工具的选择、奥卡姆剃刀原理、缓存的重要性以及以史为鉴等。 首先,“大道至简”这一概念源自“如无必要,勿增实体”的奥卡姆剃刀原理。在...

    软件工程实践者的思想

    《大道至简:软件工程实践者的思想》这篇文章深入探讨了软件工程领域中实践者的核心理念与思维方式。在软件工程的世界里,实践者不仅是编写代码的工程师,更是问题解决者、项目管理者和技术引领者。他们的思想构成了...

    ShenNiusFramework:一款基于Asp.net core3.1的极简模块化开发框架,追求“简单”,“高效”,“实用”,总之秉承大道至简的原则开发,坚持业务模块最低复杂度复用,只要会C#,再会点Asp.NetCore基础知识,极易上手。适合小白入门进阶,更适用(实用)老手上路干活。顺手做了个简单的后台权限管理做为入门例子

    坚决反对" 简单的事情复杂干 "," 大量代码在应用层过度层层封装 ",反对" 过度设计 "的原则下进行开发。如果你有这个习惯,并且也想找一款迷你型、上手快,不用学习太多东西的框架,那么它就适合你,只要你会dotnet...

    大型微服务框架设计实践.docx

    3. 大道至简:大型微服务框架的设计要点 - **全局视角**:设计时需考虑整体架构的稳定性和可扩展性,确保每个微服务能独立部署和升级,同时保证整体系统的协调一致。 - **设计目标**:提高开发效率,降低维护成本...

    UNIQUE PPT-蓝-PPT模板.pptx

    "UNIQUE PPT-蓝-PPT模板.pptx" 提供了一个简约风格的PPT模版,强调了"大道至简"的设计理念,以下是一些关于PPT设计的关键知识点: 1. **封面设计**:封面上应包含主题,如"个人简历",以及日期和主讲人信息。同时,...

Global site tag (gtag.js) - Google Analytics