CS逍遥剑仙 - 原创作品转载请注明出处 - 《软件工程(C编码实践篇)》MOOC课程http://mooc.study.163.com/course/USTC-1000002006
个人觉得,软件工程就是用工程化的思想去写代码,使得代码更加高效,这个高效不是指性能好,而是指提高开发效率,降低开发团队的成本。以前的编程的重心往往在算法的复杂度,较少考虑代码结构、通用性、可复用性、可读性等,其实,如果想写出高质量的代码,软件工程思想必不可少。
这学期的高级软件课程分为线上和线下,线上课程循循善诱,线下课程围绕《Software Engineering at Google》展开,通过学习Google程序员的软件工程思想并学以致用,而非学习过时的传统教材,是一种大胆的创新。课后实验需要自学Go语言并实现线上功能,对线上课程的学习起到了很好的巩固作用。
”我们写的不仅仅是代码!我们实现一个C语言小项目,通过其演化来呈现无设计代码、模块化设计的代码、可复用的代码和回调函数等接口设计,以及可重入函数、线程安全等较深入的设计问题“。通过学习C编码实践篇,使我认识到代码层面的软件工程可以分为4个方面:代码风格、模块化、可重用性、线程安全
序号 | 实验主题 | 实验内容 | 报告链接 |
---|---|---|---|
实验1 | 熟悉Linux实验环境 | 写一个hello world小程序 (了解Linux下的一些基本的操作,实验报告采用markdown进行书写) | https://www.shiyanlou.com/courses/reports/1270860 |
实验2 | 代码风格规范 | 命令行菜单小程序V1.0 (代码风格规范) | https://www.shiyanlou.com/courses/reports/1272145 |
实验3 | 基本的模块化设计 | 内部模块化的命令行菜单小程序V2.0 (KISS、不要和陌生人说话原则等) | https://www.shiyanlou.com/courses/reports/1273305 |
实验4 | 可重用模块的接口设计 | 用可重用的链表模块来实现命令行菜单小程序V2.5 | https://www.shiyanlou.com/courses/reports/1275052 |
实验5 | 可重用模块的接口设计(callback函数) | 用callback增强链表模块来实现命令行菜单小程序V2.8 | https://www.shiyanlou.com/courses/reports/1276114 |
实验6 | 函数的可重入性(reentrant)及线程安全浅析 | 线程相关知识学习,函数可重入性、线程安全及两者之间的关系,线程安全问题的处理 | 线上测试 |
实验7 | 子系统的可重用设计 | 将menu设计为可重用的子系 | https://www.shiyanlou.com/courses/reports/1277992 |
软件工程是研究和应用如何以系统性的、规范化的、可定量的过程化方法去开发和维护软件的一门科学,代码的设计不仅是为了使程序可运行,可实现需要的功能,在代码的规范、设计的规范、模块化思想、线程的安全性、子系统的可重用性上都有所要求。
孟老师说:”写代码要小步快跑不断迭代,罗马不是一天建成的“,软件工程是一门实践性很强的学科,大量的实践才能有所感悟,写出高质量的代码,而通过软件工程这门课程的学习,可以使我们避免走很多前人走过的弯路。
孟老师课程中提到:”夫事未有不生于微而成于著,圣人之虑远,故能谨其微而治之,众人之识近,故必待其著而后救之;治其微则用力寡而功多,救其著则竭力而不能及也“,这句话我感触很深,同样的,学习软件工程也需要我们站在一个更高的高度去看待代码,从细微处提高代码质量。