袁果 原创作品转载请注明出处 + 《软件工程(C编码实践篇)》MOOC课程http://mooc.study.163.com/course/USTC-1000002006
1. 课程总结
上学期并没有选上高级软件工程这门课程,终于在这学期修了,非常有幸和孟宁老师学习这一门课程。如果学习软件工程这门课程不实际动手,就相当是政治课一样。仅仅是一些条条框框,只有实际动手,才能领会到精髓。以前对软件工程并不陌生,但孟宁老师在教授这门课程,还是给我不一样的感受。无论是线上课程和线下课程,都受益匪浅。回顾线上课程,从开始的最简单的menu起,到最终的具有一定可重用性的menu菜单小程序,在这个由浅入深的过程中,让我了解学习到了作为一名程序员要写什么风格的代码、如何写出高质量的代码、写代码时要考虑什么问题等一系列之前忽视或者没接触到的问题。
2. 实验总结
实验目录
- 实验一:写一个hello world小程序
- 实验二:命令行菜单小程序V1.0
- 实验三:内部模块化的命令行菜单小程序V2.0
- 实验四:用可重用的链表模块来实现命令行菜单小程序V2.5
- 实验五:用callback增强链表模块来实现命令行菜单小程序V2.8
- 实验六:函数的可重入性(reentrant)及线程安全
- 实验七:将menu设计为可重用的子系统
实验一:写一个hello world小程序
实验主要是了解了git版本控制工具,如何用gcc编译运行。为以后的实验打下基础
实验二:命令行菜单小程序V1.0
实验二主要是做了代码风格的控制,通过简单的menu小程序引导我们书写代码注意缩进、命名、注释等代码编排的风格规范,写出简明、易读、无二义性的代码。
实验三:内部模块化的命令行菜单小程序V2.0
实验在上次实验的基础上,运用模块化的思想,使之包容功能的变化,使代码的书写和设计更加合理。
实验四:用可重用的链表模块来实现命令行菜单小程序V2.5
实验四中,要求使用用可重用的链表模块来实现命令行菜单小程序,执行某个命令时调用一个特定的函数作为执行动作,链表模块能够简化对于命令行菜单小程序的功能调用,如果在遇到较大规模的软件,可重用链表模块能够使得整体结构更加清晰。
实验五:用callback增强链表模块来实现命令行菜单小程序V2.8
实验五是在上一实验的基础上改进的,主要是为了学习callback函数,它是一种实现模块通用性的实现机制,能够实现模块解耦功能,利用callback函数参数使Linktable的查询接口更加通用,同时我们也必须要注意接口的信息隐藏。
实验六:函数的可重入性(reentrant)及线程安全
这一部分主要是写代码要考虑线程安全问题。
实验七:将menu设计为可重用的子系统
这一部分主要是:
- 为menu子系统设计接口,并写用户范例代码来实现原来的功能;
- 使用make和make clean来编译程序和清理自动生成的文件;
- 使menu子系统支持带参数的复杂命令,并在用户范例代码中自定义一个带参数的复杂命令;
- 可以使用getopt函数获取命令行参数。
3. 课程总结
在学习完这门课程之前,我很少意识到编码的规范问题,代码风格也几乎不会考虑,主要是实现相应的功能需求,这样能写代码吗?貌似也能,但是写出的代码很难维护,难免会走很多很多的弯路。通过学习这门课程,我不仅学习了git,熟悉了linux环境,还有了软件工程的思想,对软件工程有了宏观的认识,这种视野对今后的软件开发是大有裨益的。学习的道路还很长,需要了解的还有很多很多。
对于学习完这门课程后最大的遗憾,可能就是自己真正缺乏实际开发项目的经验吧,所以可能对有些软件工程的思想理解还比较肤浅。在以后的工作学习中,我会刻意练习这种思想,一定能螺旋上升,真正理解软件工程。
最后感谢孟宁老师,感谢助教