对于一个好的设计,我们往往会说其应当具备可维护性,这是最为基本的要求。其它的要求,比如性能、资源的占用等都应当在满足可维护性的情况下再去考虑的。
但可维护性是一个非常笼统的词,可以说一个词包含了很多的东西,比如,可读性、可扩展性等等,都可以当作是可维护性的内容。我在日常工作中,对于一个好的
设计,有一些自己的想法,主要是体现在“四性一痛”。
第一,一个好的设计应当具有“一致性”。
一致性就是对于相类似的问题采用同样的方法去处理,而不是对于类似的情况,在case1中采用的是设计A,而在
case2中采用的是设计B。对于这种设计,其往往很难维护。
需要说明的一点是,一致性可以包括设计方法的一致性、函数命名的一致性、注释书写格式的一致
性等等
。在一致性上一个好的例子是:UNIX/LINUX中对于文件和设备的处理都是采用open()/close()/ioctl()/read()
/write()这五个函数来实现的,当我们在UNIX/LINUX上编程时,只要说到打开设备或是文件,我们就知道应当如何做了。再来看看一致性不好的
一个例子:比如CLIB中的malloc()/free(),这是一对用于分配和释放内存(Heap)的函数,在函数的命名上应当说其一致性并不好,在我
看来malloc()/mfree()就要比它好些,不同之处就是在free()函数名的前面加了一个m。一致性好的软件,不论是维护或是阅读都让人觉得
舒服和自然,这一点是非常重要的!
第二,一个好的设计应当具有“完整性”。
打一个比方,比如我们的程序需要写一个模块用于管理某种类型的资源,因此,我们写了一个allocate()函数
用于对这一资源进行分配。从完整性的角度来看有allocate()就应当有free()或是release()。因此,我们的设计应当包含free()
或是release()。完整性好的设计往往给模块的使用者带来某种程度的灵活性和便利性。
第三,模块之间的“正交性”。
正交性体现在模块之间不应当存在功能重叠的部分,对于模块之间存在重叠的部分,往往表明我们需要抽象出另一个模块,从而将重叠的部分转移到这一新模块中。
第四,设计的“简单性”。
这里的简单不是指我们考虑欠缺,而是指在我们将问题考虑周全后,找出一种简单的设计和实现方法。简单性包括代码逻辑的简单性和代码语句的简单性。简单意味着容易维护、理解,简单本身就是一种美!
最后,我想对于一个好的设计,作者可以问问自己:我在设计这个模块时“痛苦”过了吗?如果没有,那存在两种可能;一是问题很简单或是我们自己的水平很高,
所以不需要更多的思考去实现它;另一种可能就是这一设计有可能是一个“头痛治头,脚痛治脚”的设计。好的设计,我们往往需要在很多方面进行权衡,在设计初
期是非常痛苦的一件事,但随着设计的完善,我们会发现“这一设计就是我想要的、就应当是这个样子的”,到时自己会觉得这个设计很舒服,真的体现了“苦尽甘
来”。
对于上面所提到的一些好的设计的特点,在我们的工作中可能不是一次性设计到位的,但是我们必须将这些特点记在心中,并随着工作的进展最后实现它们。
本文出自 “李云
” 博客,请务必保留此出处http://yunli.blog.51cto.com/831344/168867
分享到:
相关推荐
继承性是指MMI设计应当充分利用过往设计的成功经验,并在此基础上不断优化改进。这意味着新产品的MMI设计不仅要保持与旧款产品的一致性,还要在此基础上加入创新元素,以满足用户日益增长的需求。 - **重要性**:...
【标题】:成就优秀家纺设计...这些要素相互交织,共同构成了一个优秀家纺设计师的全面素质。通过这样的自我培养和行业推动,中国的家纺设计将有望在国际舞台上展现更大的影响力,进一步提升中国家纺行业的整体竞争力。
本文将从电源设计的核心要素出发,深入剖析如何设计出一个既高效又稳定的电源系统。 在电源设计的初期阶段,首先要做的就是评估系统的电源需求。这一步骤要求我们对输入和输出电压、电流进行精确的计算,同时还要...
本资料“后台界面设计的5个关键要素和10点原则”深入探讨了这一主题,旨在提升设计者对后台界面设计的理解,创建出更加优秀的用户界面。 首先,后台界面设计的5个关键要素包括: 1. 功能性:后台界面应以实现业务...
最后,创新性和原创性是衡量一个标志设计成功与否的重要标准。设计师需要在传统与创新之间找到平衡,避免模仿,让标志具有独特且不可复制的个性。 总的来说,《大型体育运动会标志设计要素研究》这份文档详尽地阐述...
例如,如果你正在从事一个.NET项目,那么熟悉.NET框架是非常重要的;而对于那些更倾向于Web开发的人来说,则可能需要更加深入地了解PHP。 ### 2. 开发丰富的互联网应用(Rich Internet Applications, RIA) 随着...
总结来说,这种创新设计的多功能教室用书桌,不仅解决了空间利用的挑战,还提升了用户体验,是教育设施设计领域的一个重要案例。通过深入分析这份行业文档,不仅可以获得实际的设计经验,而且可以激发更多关于空间...
首先,一个好的B端界面设计必须具备功能性。这包括确保所有功能都能有效地工作,以支持企业用户执行他们的工作任务。功能性的设计不仅意味着各个功能的操作流畅,还意味着设计应与业务流程紧密结合,提供数据输入、...
3. **开放文化**:鼓励员工提出新想法,营造一个开放包容的工作环境。 ##### (四)科技专才入阁 为了更好地推进数字化转型,银行需要吸引并培养一批具备深厚技术背景的专业人才。这些人才不仅需要掌握最新的信息...
一个好的转向系统应当具备高灵敏度、低回转圈数、合适的转向力和良好的路感反馈。这些性能的实现,除了依赖于转向系统本身的设计与构造,也与车辆的悬挂系统、车轮定位、以及轮胎的状况等因素密切相关。 为了确保...
总结来说,Mentor桌面PCB设计库应当具备的六大要素包括:一个适用于所有设计任务的统一中心库、一个经过验证的高质量启动库、能够集成网络元器件数据的自动化工具、维护最新元件库的高效机制、方便快捷的封装创建...
语文要素作为语文训练的基本元素,其核心是语文知识和能力,具备方法性特征,源于并应用于语文实践。因此,语文要素的学习应该强调情境的生成性、建构性和迁移性。 情境生成性强调语文要素是在具体情境中生成的,...
此外,一个好的创意不一定规模宏大,一个小巧的亮点也可能让设计熠熠生辉。在产品设计中,如果创意能够引起消费者的共鸣,激发购买欲望,那么这个创意就是成功的。反之,不切实际或者无法触动人心的创意可能会导致...
表达方式包括图示、模型、文字和语言,而一个好的建筑师应当具备良好的表达能力、系统化思维和丰富的想象力。 建筑设计的任务涵盖了从规划设计到施工图设计的全过程,包括总体规划、控制性详细规划、城市设计、单体...
一个设计得当的玄关,不仅能成为迎接访客的温馨起点,还能反映出主人的品味与对居家环境的追求。在本文中,我们将深入探讨玄关在装饰中的配搭要素,以期为您打造一个兼具实用性和美观性的高品质家居空间提供参考。 ...
在这种情况下,如何设计出既符合技术要求又能满足用户需求的产品成为了一个关键问题。 #### 三、案例分析:DTU产品的用户体验对比 DTU作为一种重要的工业互联网协议互联节点,它使得不同协议的设备能够通过统一的...
一个良好的UI设计应具备以下几个关键要素: 1. 易用性:操作简单,按钮命名清晰,避免模糊不清的描述。设计应具备引导性,即使不查看帮助文档,用户也能顺利完成操作。 2. 完整性:所有必要的功能和元素都应包含...
优秀的论文首先要有一个明确的研究目标,并阐述该研究的重要性与意义。这要求作者在撰写论文前,需要对研究领域有深入的理解,并能够清晰地界定研究问题及其在现有知识体系中的位置。例如,在生物学领域,双螺旋结构...
可行性报告作为项目启动的第一个里程碑,承担着评估项目是否具备实施条件的重要角色。在此阶段,技术团队需要考虑项目的技术可行性,比如所依赖技术的成熟度、可获得性以及是否有技术上的重大突破。经济可行性分析...