`
feipigwang
  • 浏览: 746462 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

直观而简单的解决方案--软件设计的永恒追求

 
阅读更多
人们都善于用直观简单的方式来理解事物,我也坚信,所有优秀的解决方案都是直观而简单的,我喜欢直观而简单的解决方案,也许在找到直观简单的解决方案之前,我们已经尝试了用很多复杂费解的方式来解决问题。如果你不能把我们程序的解决方案用通俗易懂的方式给隔壁卖青菜的阿伯解释清楚的话,说明,这个解决方案还不够好――还不够简单和直观。宇宙够复杂了吧,可是霍金却创作《时间简史》系列的科普读物,既然是科普,它的读者就是广大的普通老百姓,不一定非要是物理学或天文学的博士。

在软件解决方案上,为了追求直观而简单的解决方案,我们发明了面向对象,之后又是N层架构、面向组件、AOP,又到现在比较热门的MDAWebService等等。我们所做的一切,都是为了将复杂的问题简单化,这个过程是一个进化的过程,随着这个过程的演进,事物越来越接近它自己的本质。比如,将数据和操作数据的动作放在一起变成了类,这样,各个类之间就有了界限,就像自然界中的一个个独立的实体,这就向事物的本质靠近了一步。在类的基础上,我们又根据共同的语义将共同的行为剥离出来,形成接口,这就像自然界中的生物的系/族,这向事物的本质又靠近了一步。整个自然界或者说整个人类社会最美好的未来在于每个个体都能规范自己的行为,都能自己管理自己,对自己的行为负责,友好地向外界发布自己的信息。这个个体不就是一个优秀设计的类吗?为了这个美好的未来,我们为类加入了属性和事件,以使其在发布自己信息的同时,不对外界的其它个体产生干扰;我们为类加入元数据和反射能力,使其和外界都能方便的得到自己详细身份信息。再后来,我们将业务与基础服务分离(所谓基础服务就是像事务、线程安全等内容),将业务与基础服务分离有很多好处,首先基础服务可以在不同的项目/应用中复用,这通常可以通过AOP或组件的方式进行复用;其次,业务和基础服务分离开后,它们之间的关系更清晰,我们更容易将焦点集中到业务上,这也会使事情变得更简单,因为我们不用在实现某一业务逻辑的时候还需要考虑在什么地方插入加锁代码来确保这个逻辑是线程安全的。

我们应该都有这样的经历,在对多线程、网络、数据库这些基础服务都不熟悉的时候,编写一个应用服务器,难度会是多大?我们经常都是不知如何下手,更别谈什么结构设计了。在我们慢慢的熟悉这些概念并实践了多次之后,我们就有信心来实现我们应用程序的业务功能。如果现在我们完全不用关心这些基础服务,只需关心业务逻辑,那么我们的信心不就是更大了吗?这是因为我们能有更多的精力去分析理解我们的业务,对我们的业务分析的越透彻,我们的设计就会越直接、越简单。这就是我们的目标。

为了获得简单直接的设计,我们通常要注意以下几个方面:

(1) 组件之间的耦合度小。每个组件应该自解释、自描述、并且是自给自足的。

(2) 类图简单。请注意类的体积,把太庞大的类分解为多个,把耦合太紧的类融合为一个。

(3) 交互图简单。如果不是特别需要,推荐使用事件机制来解决类间的交互。

(4) 使用合适的设计模式。能沉淀下来的总是精华!

(5) 重构、重构、再重构……,这是我最大的法宝!!!

(5) 重构、重构、再重构……,这是我最大的法宝!!!

(4) 使用合适的设计模式。能沉淀下来的总是精华!

(5) 重构、重构、再重构……,这是我最大的法宝!!!

(5) 重构、重构、再重构……,这是我最大的法宝!!!

(3) 交互图简单。如果不是特别需要,推荐使用事件机制来解决类间的交互。

(4) 使用合适的设计模式。能沉淀下来的总是精华!

(5) 重构、重构、再重构……,这是我最大的法宝!!!

(5) 重构、重构、再重构……,这是我最大的法宝!!!

(4) 使用合适的设计模式。能沉淀下来的总是精华!

(5) 重构、重构、再重构……,这是我最大的法宝!!!

(5) 重构、重构、再重构……,这是我最大的法宝!!!

(2) 类图简单。请注意类的体积,把太庞大的类分解为多个,把耦合太紧的类融合为一个。

(3) 交互图简单。如果不是特别需要,推荐使用事件机制来解决类间的交互。

(4) 使用合适的设计模式。能沉淀下来的总是精华!

(5) 重构、重构、再重构……,这是我最大的法宝!!!

(5) 重构、重构、再重构……,这是我最大的法宝!!!

(4) 使用合适的设计模式。能沉淀下来的总是精华!

(5) 重构、重构、再重构……,这是我最大的法宝!!!

(5) 重构、重构、再重构……,这是我最大的法宝!!!

(3) 交互图简单。如果不是特别需要,推荐使用事件机制来解决类间的交互。

(4) 使用合适的设计模式。能沉淀下来的总是精华!

(5) 重构、重构、再重构……,这是我最大的法宝!!!

(5) 重构、重构、再重构……,这是我最大的法宝!!!

(4) 使用合适的设计模式。能沉淀下来的总是精华!

(5) 重构、重构、再重构……,这是我最大的法宝!!!

(5) 重构、重构、再重构……,这是我最大的法宝!!!

分享到:
评论

相关推荐

    软件设计方案--软件设计方案

    软件设计方案 用户界面设计规范 用户界面:又称人机界面,实现用户与计算机之间的通信,以控制计算机或进行用户与计算机之间的数据传送的系统部件。 GUI:即图形用户界面,一种可视化的用户界面,它使用图形界面...

    自然资源信息化顶层设计解决方案-2.zip

    方案中包含的WORD文档详细说明了项目的背景、目标、实施步骤和预期效果,而PPT演示文稿则用于直观展示解决方案的优势和关键特点。这些材料都经过精心设计,旨在帮助潜在客户理解如何通过实施这一解决方案来提升他们...

    广东联通旅游行业解决方案-170731.zip

    广东联通旅游行业解决方案-170731.zip是一个针对旅游行业的大数据解决方案文档。该文档旨在为旅游行业提供全面的数据分析和解决方案,以帮助企业更好地了解市场趋势、客户需求和业务机会。通过利用大数据技术,该...

    安科瑞电能管理解决方案-李亚俊

    Acrel-3000WEB电能管理解决方案通过对用户端用电情况进行细分和统计,以直观的数据和图表向管理人员或决策层展示各分项用电的使用消耗情况,便于找出高耗能点或不合理的耗能习惯,有效节约电能,为用户进一步节能...

    产品技术开发项目-软件架构设计模板

    目的:软件架构设计,可以帮我们直观的熟悉整个架构的设计和拓展实现。 本文档作为产品的架构设计说明书,对系统整体进行了架构设计,指导后续的设计与开发。并为网站后续版本的架构参考。 本文内容面向产品经理,...

    最新-多媒体教室设计方案-精品.docx

    最新-多媒体教室设计方案-精品全文共5页,当前为第1页。最新-多媒体教室设计方案-精品全文共5页,当前为第1页。多媒体教室设计方案 最新-多媒体教室设计方案-精品全文共5页,当前为第1页。 最新-多媒体教室设计方案-...

    大数据BI智能分析平台解决方案-商业版

    平台支持通过所见即所得的可视化拖拽、配置的简单操作就可实现报表的快速生成。通过拖拽、配置、右键菜单和工具条,利用丰富的组件库、事件库等,通过熟悉且直观的交互方式,快速构建分类、钻取、旋转的交叉表和图形...

    湿空气焓湿图设计软件 ID-DiaGram

    湿空气焓湿图设计软件(以下简称ID-DiaGram)是作为暖通设计辅助工具,可广泛应用于各类需要计算湿空气状态参数及显示湿空气处理过程的场合。湿空气的含湿量d,焓h,干球温度t,相对湿度ψ等诸多状态参数都集中显示在该...

    图解直观数学译丛 - 麦克斯韦方程直观

    图解直观数学译丛 - 麦克斯韦方程直观

    AutomationStudio多功能仿真软件-液,汽,电实验解决方案

    作为一个独特的软件解决方案Automation StudioTM广泛运用子成千上万的学校,以易用的环境提供直观的设计、演示、模拟和电路分析功能。 Automation Studio是十分适合不同的课程应用及教学,不同的科技工程学科都...

    SQL Server 2008商业智能完美解决方案 3/3

    《SQL Server 2008商业智能完美解决方案》结合专家团队提供的实际示例和丰富经验进行介绍,让读者能够直观轻松地掌握构建商业智能(BI)解决方案的概念、工具和技术,是一本不可多得的商业智能开发参考指南。...

    瑞星杀毒软件网络版企业防病毒解决方案

    它解决了以往网络防病毒软件在安装、设置、管理以及升级时遇到的不方便与不及时等问题,全新的查杀毒技术、直观友好的操作界面、强大的Internet与Intranet防病毒能力、及时周到的技术服务,使之成为各行业推行企业防...

    《网站测试解决方案》(Empirix e Test Suite 8.01 )英文[ISO]

    E-Test是一款功能强大、简单易用的网站测试解决方案,可有效确保企业级Web应用程序、.NET应用程序、Java应用程序、Web Service,以及如Siebel, PeopleSoft 等公司出品的应用程序的性能和可靠性。E-TEST使你更加自信...

    SQL Server 2008商业智能完美解决方案 1/3

    《SQL Server 2008商业智能完美解决方案》结合专家团队提供的实际示例和丰富经验进行介绍,让读者能够直观轻松地掌握构建商业智能(BI)解决方案的概念、工具和技术,是一本不可多得的商业智能开发参考指南。...

    SQL Server 2008商业智能完美解决方案 2/3

    《SQL Server 2008商业智能完美解决方案》结合专家团队提供的实际示例和丰富经验进行介绍,让读者能够直观轻松地掌握构建商业智能(BI)解决方案的概念、工具和技术,是一本不可多得的商业智能开发参考指南。...

    SQL Server 2008 商业智能完美解决方案(3)

    《SQL Server 2008商业智能完美解决方案》结合专家团队提供的实际示例和丰富经验进行介绍,让读者能够直观轻松地掌握构建商业智能(BI)解决方案的概念、工具和技术,是一本不可多得的商业智能开发参考指南。...

    大数据+智慧医疗-解决方案2017.zip

    大数据与智慧医疗结合的解决方案文档“大数据+智慧医疗-解决方案2017.zip”旨在通过大数据分析技术,实现对海量医疗数据的高效管理和利用,进而提高医疗服务质量和效率。该方案涵盖了数据收集、存储、处理、分析和...

    学籍管理系统软件设计说明书

    本软件的组成程序为汉语成语设计语言,组构均较简单,直观意义上的较独立。因此,给予电子化的所构成的硬件的简单可维护的特点,决定了该软件的简单可维护性。 3.10.4 可转移、可转换性 可转移的环境是奔腾133、16兆...

    最好的3d max教程!!

    卫生间设计方案 1 卫生间设计-1 卫生间设计-2 卫生间设计-3 卫生间设计-4 卫生间设计-5 卫生间设计-6 卫生间设计-7 卫生间设计-8 卫生间设计-9 卫生间设计方案 2 卫生间设计-1 卫生间设计-2 卫生间设计-3 卫生间设计...

Global site tag (gtag.js) - Google Analytics