首页 > 代码库 > 软件工程(C编码实践篇)学习总结
软件工程(C编码实践篇)学习总结
刘聪聪 + 原创作品转载请注明出处+ 《软件工程(C编码实践篇)》
MOOC课程http://mooc.study.163.com/course/USTC-1000002006
一、课程心得
经历了一个学期为期九周的视频学习,课程讲座,线下实验的学习,伴随着孟宁老师通俗易懂,方式新颖的教学,软件工程(C编码实践篇)的课程接近尾声,从一开始的陌生到最后的逐渐了解逐渐接受,我已经慢慢喜欢上这种学习方式,获益匪浅!
尤其是在代码层面的学习,孟老师教授我们把代码作为整个工程的一部分,从代码设计规范,模块化思想,子系统的接口可重用,线程安全等多个方面来编写代码。而且孟老师打破了传统软件工程书本教学的方式,而是理论与实践完美的结合起来,每个实验之间都相互关联,实验内容层层深入,实验难度逐步增加,为我们理解软件工程的思想起到了明显的作用。学习完这几周的课程,我对代码从另外一个角度有了一个全新的认识,真的受益颇多!
下面是软件工程(C编码实践篇)课程的部分收获:
(1)在代码的规范上,需要项目组统一格式,函数和变量的命名方式,每个语句前是用tab键还是用4个空格 等等都需要规范!
(2)在设计规范上,要保证代码是高内聚,例如一个函数只做一件事,一个模块只做一类事的,实现功能尽量用库函数;还有要遵循“不和陌生人说话”的原则,以保证除了类提供的接口,别人无法访问类的其他内容。同时要合理使用数据结构、控制结构等来简化代码。
(3)在模块化的思想中,讲究高内聚低耦合,接口要规范,代码要注意通用性。
(4)在处理多线程问题中,需要关注函数是否是可重入的,使用互斥锁,读写锁以保证多线程安全。
(5)在子系统的设计当中,要设计出可重用的接口。
(6)如何设计带参数的函数等。
二、实验报告目录
1.熟悉linux实验环境
【实验一:写一个hello world小程序】
小结:在linux环境下,编写helloworld小程序。本次实验主要是让学生熟悉实验楼的环境,并学习Linux环境下的一些基本操作,如cd,gcc,vim,git等。
2.代码风格规范
【实验二:命令行菜单小程序V1.0】
小结:学习代码风格的原则:简明、易读、无二义性。并注意缩进、命名、注释等代码编排的风格规范。
3.基本的模块化设计
【实验三:内部模块化的命令行菜单小程序V2.0】
小结:学习模块化思想相关的知识,学会将系统抽象为两个层级:菜单业务逻辑和菜单数据存储。
4.重用模块的接口设计
【实验四:用可重用的链表模块来实现命令行菜单小程序V2.5】
小结:学习高内聚低耦合的思想,使代码更具有通用性并且更容易管理。注意接口规范。
5.可重用模块的接口设计(callback函数)
【实验五:用callback增强链表模块来实现命令行菜单小程序V2.8】
小结:利用callback函数参数接口更加通用,注意接口的信息隐藏
6.函数的可重入性(reentrant)及线程安全浅析
小结:知道什么是函数的可重入性,什么是线程安全,以及学习
函数的可重入性与线程安全之间的关系。
7.子系统的可重用设计
【实验七:将menu设计为可重用的子系统】
小结:熟悉使用Makefile文件来简化多个文件的编译命令,学习menu程序的可重用性,学习getopt函数。
三、总结
总的来说,高级软件工程这门课收获是非常多的,不同于其他传统老师上课讲学生下面听的课程,这门自己动手,互相学习的课程使我认识到软件工程对我们今后的开发,面试找工作都有着重大的影响,在一个团队中一个好的设计,好的代码质量将给团队带来巨大的效益。代码风格良好也为程序带来了良好的可读性,同时也便于软件后期的维护和升级。现在自己在编程的时候经常会自动的考虑代码规范性问题,以及要不要模块化,要不要对接口加以改进,这是学习这门课最大的收获。
每一次课每一次实验都有一种新的体验:原来我还可以这样!这是一种思想的前进,思维的提升,相比于两成时间写代码,其余时间维护测试,思维的提升更重要!
我觉得我最大的收获就是在线上实验过程中代码编写能力和质量都有了质的飞跃,而不是在数量上的提升,这种质的飞跃是很难的,谢谢孟宁老师的引导!
最大的遗憾可能就是没能在课上向同学们展示自己的知识总结,看到其他同学分享知识我真的很羡慕!
最后附上孟宁老师课程中送给我们的一句话:书到用时方恨少,事非经过不知难!
软件工程(C编码实践篇)学习总结