首页 > 代码库 > 软件工程

软件工程

    软件工程,英文名Software Engineering,是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科。它提出了软件的生命周期并把软件开发的过程分成几个阶段,分别是定义规划、需求分析、软件设计、程序编码、软件测试和运行维护。

说实话,在本科阶段我已经学过软件工程这门课,对里面的很多概念也耳熟能详。但我总是感觉不到软件工程对我编码所带来的变化,它不像是设计模式,学过之后我就能用上。以前怎么编码,学过之后該怎麼辦还是怎么编。他给我的感觉就是内容挺多的,但却有点脱离实践,不能很好的和程序编码联系起来,额。。。可能是我编码太渣了吧。。。。

    好了,废话少说,开始今天的正题。今天我有幸去上了孟宁老师的高级软件工程的课程,同样是软件工程,但是却给人一种很实在的感觉,不再是那种“高大上”的空洞的理论。他是把课程分为三个阶段,第一个阶段,强化实践能力,如下:wKioL1QcCZ2wBzj5AAI-00KWzZc608.jpg

    第二阶段才是对传统软件工程的一些讲解。通过第一阶段的具体的讲解就让人有了一种很很具体的能和实际的编码相联系的感觉。

代码设计之六大原则:

wKioL1QcDsyyRg6_AAEJnUY0hfc552.jpg

    首先是Modularity,即模块化。把把系统按照系统级、功能模块及代码级划分module,然后为module设计接口,在设计接口的时候注意information hiding。最后根据module之间的依赖关系确定incremental development顺序。在module划分和interface设计的时候还要注意abstraction和generality。



    但是,就算是我们采用上述顺序来设计代码,其中肯定还会有很多不足。这个时候就需要重构了,重构主要是将代码的重构以及怎么消除这些代码中的坏味道。其实在代码编写的整个过程中都应该不断地重构。

首先代码中的坏味道主要有:

1、重复代码

2、过长函数

3、过大的类

4、过长参数列

5、发散式变化

6、散弹式修改

7、依恋情结

8、数据泥团

9、基本类型偏执

10、switch惊悚现身

11、平行继承体系

12、冗赘类

13、夸夸其谈未来性

14、暂时字段

15、过度耦合消息链

16、中间人

17、狎昵关系

18、异曲同工类

19、不完美库类

20、纯稚数据类

21、被拒绝的遗赠

22、过多注释

接下来的过程中我们会不断讨论上述提到的代码的坏味道,并提出相对应的解决办法。

软件工程