设计项目的过程中,要考虑的一个关键点,就是项目的复杂度了。
那什么是复杂度呢?
复杂度顾名思义就是一个项目的复杂程度。
这个概念要解决一个什么问题呢?
现实中存在的情况是:因为人的大脑容量有限,心智能处理的信息有限。俗话说,做事不能三心二意。想想,如果你一边打游戏,一边和别人聊技术,还一边想着昨天和妹子聊天,这种情况下效率一定会非常低。
程序员软件开发过程中,也会遇到类似的问题。一边写代码,却要顾虑调用别人的接口是否可靠。查bug时,因为很难读懂别人的代码而浪费大量的时间。
因此软件设计中,如果能降低复杂度,那么我们开发设计的软件就能做到更容易维护,更稳定,更容易扩展。但是对于常用的软件设计中的一些方法论,比如DRY原则,正交性,分治迭代,单一职责在这篇文章中,我就不讲了。大家平时看文章,多少了解一些。但是如果想有个系统化的了解,还是推荐大家看《代码大全》。
在此,我说说如何降低软件的复杂度。如果没有办法测度软件的复杂度,那么降低复杂度到底有没有效果,就只能凭感觉了。如果软件复杂度的降低,对项目的实际效果没办法测度的话,那么就没办法展现自己的成绩了。(笑)关于软件复杂度的测试以及某个软件的复杂度的降低带来的效果,请看《代码大全》P458页(笑)
在项目设计中,对于软件复杂度的降低,我的经验如下:
1、通过命名规范,方法封装,单一功能,接口参数,分治,熟练数据库设计等等这种项目具体实现的技术和方法论来降低复杂度。
2、通过接口输入参数检查,提供测试用例以及文档,命名规范来降低接口的沟通成本。
3、设计项目中,通过对业务的深度理解,以及和产品更明确的沟通来降低与产品之间的沟通成本。
4、遇到问题,多找几个方案进行比较,和专业人士一起探讨下。
5、将不变的业务和变化的业务区分开来。将访问量大的业务和访问量小的业务区分开来,将经常增删改和不经常增删改的数据区分开来。
备注:之前因为不懂得度量,所以出现掌握的经验也大多是个人感受了。如果要对复杂度进行定量分析,还得先了解如何测度复杂度。然后再看看很多具体的方式,对复杂度产生的影响。
网友评论