陈康荣 +《软件工程(C编码实践篇)》MOOC课程http://mooc.study.163.com/course/USTC-1000002006
学习心得:
转眼间,软件工程这门课程就要结束了,忽然有种怅然若失的感觉。刚开始接触这门课的时候,感觉仿佛置身于知识的海洋,如鱼儿一般畅快遨游;置身于学术的天空,似鸟儿那样自由飞翔;置身于代码的花园,像花苗一样汲取阳光。人生有幸,得遇良师。
实验报告:
实验一:写一个hello world小程序
https://www.shiyanlou.com/courses/reports/1271055
首次实验要求相对简单,主要在于熟悉实验楼的实验环境,了解linux和VIM的基础指令。
实验二:命令行菜单小程序V1.0
https://www.shiyanlou.com/courses/reports/1271762
实验二要求实现命令菜单小程序,本实验老师要求重视实验代码规范,并且以后的实验代码都要规范,主要的代码规范包括:缩进4个空格、所有的“{“和”}”要独占一行,上下之间成对的“{}”要对其等等,养成良好的代码习惯,不仅有助于我们自己看代码,也有助于其他程序员阅读代码,好的代码习惯将对我们受用一生。
实验三:内部模块化的命令行菜单小程序V2.0
https://www.shiyanlou.com/courses/reports/1273670
实验三在实验二的基础上,要求将程序内部进行模块化,使逻辑更加清晰,实验中要求重视一个函数或者方法只做一件事,也即“keep it simple and stupid”,设计和实现要保持一致,以及“不要和陌生人说话原则”,一定要有错误处理,并且用数据结构简化代码。
实验四:用可重用的链表模块来实现命令行菜单小程序V2.5
https://www.shiyanlou.com/courses/reports/1275199
实验四要求用可重用的链表模块来实现命令行菜单小程序,以前命令菜单小程序的功能保持不变,但在之前的要求上更进了一步,要求链表模块的接口设计要足够通用,将通用的linktable模块集成到menu程序中,在实验中要注意接口的规范。
实验五:用callback增强链表模块来实现命令行菜单小程序V2.8
https://www.shiyanlou.com/courses/reports/1276383
本次实验,沿用了之前的模块化思想和基本的代码内容,并且新增了一些脚本指令。通过这次学习,加深了对链表的认识,也更熟悉了开发环境的代码操作,并实现callback增强链表模块。在通常情况下,我们提供给用户的,只是一部分必要的信息,为了保护自己的信息,我们需要重视接口信息的隐藏。
实验七:将menu设计为可重用的子系统
https://www.shiyanlou.com/courses/reports/1278213
本次实验,为menu子系统设计接口,并写用户范例代码来实现原来的功能;使用make和make clean来编译程序和清理自动生成的文件;使menu子系统支持带参数的复杂命令,并在用户范例代码中自定义一个带参数的复杂命令;可以使用getopt函数获取命令行参数。
学习总结:
收获:通过本次学习我学习了很多关于软件工程的思想,其中在学习这门课程的过程中我最大的收获是学到了一种系统的分析设计并实现一个软件项目的方法,而且通过实践加深了对这种方法的理解。callback机制和函数指针的运用对我有很大启发。
遗憾:美中不足的是,命令行程序毕竟是一个体量不够大的小项目,不会遇到过于复杂的问题。如果能延长这门课程的时间,并提供一个更复杂、更庞大的软件项目供同学们练习,想必会令更多的人收获更多。