程序员如何输出高质量设计?

程序员为什么要做设计?

作为一名程序员,最理想的状态当然是,产品提需求,UI给设计,程序员哐哐哐敲完代码就完事。然而事实并非如此,要想成为一名工程师,所具备的能力不止于此,不仅仅只是代码的搬运工,还应培养提升自己的综合能力

  • “软件设计”一词意味着去构思、创造和发明一套方案,把一份计算机软件的需求规格说明书转变为可实际运行的软件。
  • 设计就是把需求分析和编码调试连在一起的活动。
  • 而在现实世界里,设计者工作的一个关键内容便是去衡量彼此冲突的各项设计特性,并尽力在其中寻求平衡。
  • 设计的要点,一部分是在创造可能发生的事情,而另一部分又是在限制可能发生的事情。

好的设计应该具有什么样的特征?

  • 最小复杂度 设计的首要目标就是要让复杂度最小。要避免做出“聪明的”设计,因为“聪明的”设计常常都是难以理解的。应该做出简单且易于理解的设计。
  • 易于维护 意味着在设计时为做维护工作的程序员着想。请时刻想着这些维护程序员可能会就你写的代码而提出的问题。把这些程序员当成你的听众,进而设计出能自明的(self-explanatory)系统来。
  • 松散耦合 意味着在设计时让程序的各个组成部分之间关联最小。通过应用类接口中的合理抽象、封装性及信息隐藏等原则,设计出相互关联尽可能最少的类。减少关联也就减少了集成、测试与维护时的工作量。
  • 可扩展性 是说你能增强系统的功能而无须破坏其底层结构。你可以改动系统的某一部分而不会影响到其他部分。越是可能发生的改动,越不会给系统造成什么破坏。
  • 可重用性 意味着所设计的系统的组成部分能在其他系统中重复使用。
  • 高扇入(high fan-in)就是说让大量的类使用某个给定的类。这意味着设计出的系统很好地利用了在较低层次上的工具类(utility classes)。
  • 低扇出(low fan-out)就是说让一个类里少量或适中地使用其他的类。高扇出(超过约 7 个)说明一个类使用了大量其他的类,因此可能变得过于复杂。
  • 可移植性 是说应该这样设计系统,使它能很方便地移植到其他环境中。
  • 精简性 意味着设计出的系统没有多余的部分。伏尔泰曾说,一本书的完成,不在它不能再加入任何内容的时候,而在不能再删去任何内容的时候。在软件领域中,这一观点就更正确,因为任何多余的代码也需要开发、复审和测试,并且当修改了其他代码之后还要重新考虑它们。软件的后续版本也要和这些多余代码保持向后兼容。要问这个关键的问题: “这虽然简单,但把它加进来之后会损害什么呢?
  • 层次性 意味着尽量保持系统各个分解层的层次性,使你能在任意的层面上观察系统,并得到某种具有一致性的看法。设计出来的系统应该能在任意层次上观察而不需要进入其他层次。
  • 标准技术 一个系统所依赖的外来的、古怪的东西越多,别人在第一次想要理解它的时候就越是头疼。要尽量用标准化的、常用的方法,让整个系统给人一种熟悉的感觉。

设计模板

当拿到一个功能时,应该从哪些方面去书写设计?笔者结合自己的经验给出一个设计模板:如果没有思路或者无从下手时,可以参考该模板
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/m0_46627407/article/details/127196475