`

一个好的设计应当具备哪些要素

阅读更多

  对于一个好的设计,我们往往会说其应当具备可维护性,这是最为基本的要求。其它的要求,比如性能、资源的占用等都应当在满足可维护性的情况下再去考虑的。但可维护性是一个非常笼统的词,可以说一个词包含了很多的东西,比如,可读性、可扩展性等等,都可以当作是可维护性的内容。我在日常工作中,对于一个好的设计,有一些自己的想法,主要是体现在“四性一痛”。

 
    第一,一个好的设计应当具有“一致性”。一致性就是对于相类似的问题采用同样的方法去处理,而不是对于类似的情况,在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设计应当充分利用过往设计的成功经验,并在此基础上不断优化改进。这意味着新产品的MMI设计不仅要保持与旧款产品的一致性,还要在此基础上加入创新元素,以满足用户日益增长的需求。 - **重要性**:...

    用户体验的要素以用户为中心的Web设计

    一个网站在满足您的战略目标的同时,还应该满足您的用户需求。如果没有一个“有凝聚力、统一的用户体验”来支持的话,即使最好的内容和最精密的技术也不能帮助您平衡这些目标。 但是创建用户体验看上去是出乎意料的...

    logo、头像设计理念方案.pdf

    设计的可延伸性体现在设计的可扩展性和可适应性上,一个好的设计应该具备良好的可延伸性,以便能够适应不同的应用场景和环境。这种可延伸性可以帮助设计师更好地应对不同的设计挑战和需求。 这份文件提供了一个完整...

    功率LED驱动器具备的要素.pdf

    功率因数是衡量电能利用效率的一个重要参数,它表示电压和电流波形之间的相位差。理想情况下,功率因数为1,意味着电压与电流的相位差为零,即电能被充分利用,没有能量损耗。然而,在实际应用中,由于电路的非理想...

    成就优秀家纺设计师的八大要素.pdf

    【标题】:成就优秀家纺设计...这些要素相互交织,共同构成了一个优秀家纺设计师的全面素质。通过这样的自我培养和行业推动,中国的家纺设计将有望在国际舞台上展现更大的影响力,进一步提升中国家纺行业的整体竞争力。

    后台界面设计的5个关键要素和10点原则共22页.pdf.z

    本资料“后台界面设计的5个关键要素和10点原则”深入探讨了这一主题,旨在提升设计者对后台界面设计的理解,创建出更加优秀的用户界面。 首先,后台界面设计的5个关键要素包括: 1. 功能性:后台界面应以实现业务...

    论大型体育运动会标志设计要素研究.zip

    最后,创新性和原创性是衡量一个标志设计成功与否的重要标准。设计师需要在传统与创新之间找到平衡,避免模仿,让标志具有独特且不可复制的个性。 总的来说,《大型体育运动会标志设计要素研究》这份文档详尽地阐述...

    如何设计一个合适的电源

    本文将从电源设计的核心要素出发,深入剖析如何设计出一个既高效又稳定的电源系统。 在电源设计的初期阶段,首先要做的就是评估系统的电源需求。这一步骤要求我们对输入和输出电压、电流进行精确的计算,同时还要...

    综合运用视觉要素设计完成简单的网页界面.docx

    在这个实训中,学生需要创建一个2057px宽、2328px高的网页,这是一个常见的响应式设计尺寸,适应不同设备的显示需求。 2. **背景设计**:背景图片和效果可以增强网页的氛围和主题。使用蒙版制作背景分区域效果,...

    信息时代下对视觉传达设计要素及发展趋势的探析.pdf

    最后,挖掘民族设计元素,特别是对于中国这样一个具有悠久历史文化的国家而言,其独特的文化资源为视觉传达设计提供了源源不断的灵感。设计师在创作中应该积极探索传统文化与现代设计的结合,创造出具有民族特色的...

    好设计师是怎样炼成的 谨以此教程,奉献给在家装设计道路上苦苦探索的人们

    因此,优秀的设计师应该具备持续学习的态度,不断提升自己的专业知识和技能,以适应行业的发展。参加培训课程、阅读专业书籍、参与行业交流活动都是提升自我的有效途径。 #### 5. **团队协作与项目管理** 在大型...

    4.1现代图书内在设计的构成要素.docx

    在现代图书设计领域中,内在设计的构成要素是构建图书与读者之间沟通的桥梁,决定着阅读者在翻阅每一页时的视觉体验和心理感受。图书内在设计要素主要包括文字元素和颜色元素,它们共同作用于版面布局,既要保证内容...

    一份好的B端界面设计方案需要满足3个条件共6页.pdf.z

    首先,一个好的B端界面设计必须具备功能性。这包括确保所有功能都能有效地工作,以支持企业用户执行他们的工作任务。功能性的设计不仅意味着各个功能的操作流畅,还意味着设计应与业务流程紧密结合,提供数据输入、...

    情境认知与学习视阈下语文要素深度学习策略.pdf

    因此,语文要素的学习应该强调情境的生成性、建构性和迁移性。 情境生成性强调语文要素是在具体情境中生成的,学习者需要通过体验来理解和掌握。教师应当创设情境,让学生在实际操作中体验语文要素,以增进理解并...

    行业文档-设计装置-一种教室用具备床桌两种功能的可折叠书桌.zip

    总结来说,这种创新设计的多功能教室用书桌,不仅解决了空间利用的挑战,还提升了用户体验,是教育设施设计领域的一个重要案例。通过深入分析这份行业文档,不仅可以获得实际的设计经验,而且可以激发更多关于空间...

    Mentor_桌面 PCB 设计库必须具备的六大要素-综合文档

    总结来说,Mentor桌面PCB设计库应当具备的六大要素包括:一个适用于所有设计任务的统一中心库、一个经过验证的高质量启动库、能够集成网络元器件数据的自动化工具、维护最新元件库的高效机制、方便快捷的封装创建...

    产品设计中的创意与思维.ppt

    此外,一个好的创意不一定规模宏大,一个小巧的亮点也可能让设计熠熠生辉。在产品设计中,如果创意能够引起消费者的共鸣,激发购买欲望,那么这个创意就是成功的。反之,不切实际或者无法触动人心的创意可能会导致...

    广告传媒--标志设计演示

    但一个好的标志设计应该是经得起时间考验的,能够在较长时间内保持其价值和意义。 ### 标志设计过程 #### 1. 需求分析 在设计之前,首先要明确客户的需求及期望,包括品牌定位、目标受众等信息。这些都将直接影响...

    web网页界面设计.rar

    一个优秀的网页设计应该具备清晰的导航结构,让用户能够快速找到所需信息。在这个"植物标本网页"中,可能涉及到不同的页面如首页、植物分类页、详细信息页等,每个页面都需要精心设计以确保信息层次分明,视觉效果...

Global site tag (gtag.js) - Google Analytics