软件设计自学教程入门(如何做软件设计一些思考和感悟)

100次浏览     发布时间:2024-11-18 10:37:27    

入行20多年了,做首席架构师/CTO也十多年了,对于如何做软件设计,有一些自己的思考和感悟,这里先记录下几条,跟大家一起来思考。

一:设计的基本技巧

软件设计当中,一个基本的技巧就是:发现和分离变化,并对他们进行抽象和封装,从而实现高内聚和低耦合。

我们做功能设计的时候,会特别强调:要分析出变与不变的地方,只有你找到变和不变的地方,才能够对它进行合理的抽象和封装,从而使得这个系统实现高内聚和低耦合,这样才会有更好的可扩展性、可维护性等。

这个技巧说起来很简单,就是要发现并封装变化,但关键的问题在于:

第一:你怎么才能找到变化的地方

第二:找到了变化的地方过后,你如何封装它才是更好的?

这些都是需要大家在实践当中逐渐去摸索和思考的问题。

二:设计是一种危险的平衡艺术

实际上,做一个好的设计,就是尽可能的找到那个最佳平衡点,但事实上是否真的找到,其实我们也没有把握。

为什么这么说?就拿咱们谈的这个功能设计来说,需要考虑很多方面,而有些方面,相互是有冲突的。比如说你为了让系统扩展性更好,可维护性更好,你设计的程序结构可能复杂度就上升了,至少开发的复杂度就上升了;或者,你为了让你这个系统的结构更合理,可能就会导致性能会略有下降;可能你为了让你这个系统性能更好,又可能会导致利用的这个资源,消耗的比较大等等的,不一而足。

所以在实际的软件系统设计当中,需要我们去综合考虑这各种因素,然后尽量找到一个折中的解决方案。比如让这个系统性能尽可能的好一点,然后让这个资源消耗又不要那么大,这个时候,你要找一些平衡点,这就是刚刚提到的:设计是一种危险的平衡艺术。

实际上,一个好的解决方案,他一定是在综合兼顾、综合考虑各个方面的要求过后,来找到一个相对组合起来较优或者是最优的这么一个方案,所以你从某一点上去看,这个设计方案并不一定是最优的,因为他还要考虑别的方面。

三:没有完美的设计,设计总是在不断演变当中

对于软件设计,没有人能够说自己设计的是完美的。因为这个设计,就算你感觉在当前的这个情况下,已经完美无缺了。

但是,业务是在变化的,功能是在变化的,技术也是在不断变化的,也就是这些外在的东西都在不断变化中,你的设计不可能说一直保持着是最优的,或者说是最完美的,你的软件设计,也必须伴随着这些东西不断去演变。

四:设计是没有标准答案的,只要能更好的实现功能,更好的满足软件设计的评价标准,就是好的设计

软件设计中,并没有说设计一定要这么做而不能那么做,这就跟咱们解决问题一样,有很多种解决方案,只是在不同的场合、不同的场景下,还有,考虑问题的角度不一样,最后选择的方案不一样,这很正常。

所以,设计是没有标准答案的,也不存在放之四海而皆准的设计方案。也就是说,不太可能出现,某个设计,在这个系统里是这么做,到了其它系统还这么做,一点都没啥变化。软件设计,要具体问题具体分析。

五:不要过度设计,不等于不设计,而是更要精巧的设计

不要过度设计并不是说不设计,其潜台词,是更要精巧的设计。

“不要过度设计”这句话有点被某些人用烂了,当你看到某个系统做的比较烂,可能会说,为什么这么做,为什么这儿不设计一下,为什么这个地方不提炼一下等等的。有的人会振振有词的给来句“不要过度设计“。

这个,其实真的就跟一个遮羞布一样,不要过度设计,不是叫你不设计,不是叫你瞎做,这个大家一定要正确的认识。事实上不要过度设计,他要求的是:你更要精巧的去思考,你设计出来的东西还要精巧的去取舍,很精细的取舍,哪些东西现在要做进来,哪些东西不要做进来,实际上对你的设计要求更高,而不是叫你直接什么都不做。

事实上,通过精巧的设计,既满足了现有的功能要求,也考虑到了今后的变化,所以,以后变化的地方实际上加入对位置是留好了的,这才叫不要过度设计。

不要过度的本意是说:你不要太过于超前的去设计,就比方说你现在,本来只需要实现三个功能,就算再考虑上变化,可能也就只需要实现四个五个功能,这就足够了。

但是有些人设计能力很强,他说,我想到了这个功能,今后可能有20种变化,那我要不要把这20种变化,现在全部都做上来呢?当然不要了,如果你把这20种都整上来,这就叫过度的设计。也就是说,你往后多看一两步,多做一两步就行了,你不要说,我能看到十步远,我就把十步全做上来,这个就过度了。

因为,随着业务的变化,你现在看到的,以后并不一定会朝那个方向走,现在做太多了,也没有这个必要。所以不要过度,不是说叫你不设计,而是要去思考更精巧的设计。

相关文章
  • 鸡蛋为什么白双层(鸡蛋分几层??)
    鸡蛋的结构,可能很多朋友都觉得那还不简单,不就是蛋壳、蛋清、蛋黄三部分组成吗?还真不是,首先鸡蛋的外面有一层天然的保护膜,这个膜是从蛋鸡的身体里带来的,膜的下面就是我们看得见的蛋壳,蛋壳的主要成分是碳酸钙。蛋壳再往里有两层像白纸一样的膜,一层紧贴着蛋壳,是蛋壳的内膜,另外一层紧贴着蛋清,它叫蛋清膜。
    2025-05-05 06:02:16
  • 红木为什么会掉色(红木家具褪色了怎么办?)
    红木家具有优良的木材,但当他们第一次听到红木会褪色时,大多数刚接触过红木的消费者会认为他们买的不是红木质地或材料差的红木家具木材感觉。事实上,其他硬木和软木通常不会褪色,深红酸枝、大叶红木和小叶红木依次褪色程度较深。褪色是木制家具的材料特性,属于正常现象。随着使用年限的增长,褪色现象会减弱甚至消失。
    2025-05-05 03:41:17
  • 为什么造下沉式庭院(卧室放盆栽,会影响睡眠吗?)
    卧室里适合养什么样的植物?有人认为,在卧室内养花会使夜间空气混浊,含氧量降低,由此而造成的弊端会影响人的寿命,因此主张不应在卧房中养花。其实,这不过是一般的推论,既忽略了对植物生命活动过程中物质变换的量的分析,又忽略了花卉在夜间还会放出一些有益人类健康的物质的现象。原来,一切植物包括花卉在内,它们虽
    2025-05-04 07:12:14
  • 香皂是用什么做的(自制香皂秘籍大公开)
    在日常生活中,香皂是我们必不可少的清洁用品。然而,市面上的香皂种类繁多,质量参差不齐,有些甚至含有对皮肤有害的化学成分。为了追求更天然、更健康的清洁体验,越来越多的人开始尝试自己动手制作香皂。今天,就为大家分享一种简单的民间香皂制作方法,让你在家就能轻松制作出属于自己的天然香皂。材料准备:橄榄油-
    2025-05-04 03:33:01
  • 为什么零线带电(零线带电的原因有哪些?)
    零线带电的原因有哪些?你知道吗?一分钟让您搞懂零线带电原因!建议收藏备用起来!以备不时之需!学无止境活到老,学到老!
    2025-05-03 04:33:08