天天看点

C编码实践篇学习总结

SA17225385 王振宇 原创作品转载请注明出处

《软件工程(C编码实践篇)》MOOC课程http://mooc.study.163.com/course/USTC-1000002006

对软件工程的理解及学习软件工程(C编码实践篇)的心得:

通过和孟老师学习的这段时间,不仅仅是从编码能力上有了提升,更重要的是对于软件工程这个领域有了新的认识,在之前的学习中,自己一味的注重代码的实现和功能的实现,没有注意到从模块化到接口还有很多的学问,也没有理解到一个真正成熟方便维护和运用的程序应该是什么样的,接下来从孟老师的课里,从浅入深的带我学习了软件工程的思想,其中包括模块化代码、可复用的代码和回调函数等接口设计,以及可重入函数、线程安全等较深入的设计问题,另外,对于一个只用过现成框架和习惯使用高级语言和编译器的我也有这方面的提高,在c编码实践篇中,使用了一些简单的linux命令还有vim这种上古神器,这对于今后的自学也是非常有帮助的,通过接触这些简单的linux命令,我打算过段时间抽出时间来仔细学习一下linux系统,在今后自己写代码时候,要注意孟老师提到的KISS、不要和陌生人说话、including pseuducode等原则。接下里时这段时间课程的实验报告

实验楼:

1.实验一-写一个helloworld的小程序

通过这次试验,通过这次实验主要是使我了解到在linux下的一些基本操作,在linux下开发可以让程序员彻底的掌控自己所要做的事情,之前看到linux与windows的对比就是说,在windows下开发者不知道怎么去做,也不会对自己的控制负责,而使用linux可以让你知道你在做什么,而且自己会对自己的行为负责。除此之外还了解了github版本管理器,从此又多了一项技能。

2.实验二:命令行菜单小程序1.0

代码风格规范(简约而不简单),这次试验实现了一个小的命令行菜单小程序,这次试验的编码不难,主要是要求掌握代码风格的原则:简明、易读、无二义性,学习缩进、命名、注释等代码编排的风格规范,这些都是编码最基础的习惯,对今后的编码很有帮助

3.实验三:内部模块化的命令行菜单小程序2.0

基本的模块化设计(Separation of Concerns)注意代码的业务逻辑和数据存储之间的分离,即将系统抽象为两个层级:菜单业务逻辑和菜单数据存储,代码的模块化是软件开发最基本的思想,开发人员需要把项目的各个模块清楚的分开,模块模块之间的耦合度要尽量的小,对于维护和开发都是很好的帮助。此次实验大大的加深了我对模块化思想的理解。

实验四:用可重用的链表模块来实现命令行菜单小程序V2.5

本次实验的主要目的是理解可重用接口的意义以及实现,将通用接口的设计注入到命令行的程序中,不仅实现通用接口的规范写法,也要学会当一个特定程序是怎么使用通用接口的,以及数据的定义是怎么实现的

实验五:用callback增强链表模块来实现命令行菜单小程序V2.8:

可重用模块的接口设计(callback函数)利用callback函数参数使Linktable的查询接口更加通用,对用户进行隐藏,注意接口信息的隐藏

实验七:将menu设计为可重用的子系统

子系统的可重用设计(够用就好)为menu子系统设计接口,并写用户范例代码来实现原来的功能并且使用make和make clean来编译程序和清理自动生成的文件,使menu子系统支持带参数的复杂命令,并在用户范例代码中自定义一个带参数的复杂命令;可以使用getopt函数获取命令行参数。

课程总结

通过孟老师的软件工程教学,从一个简单的例子入手,慢慢完善我们的小程序,在这过程中体会到了一个软件开发的标准和要求,如何高效的实现以及减少系统内部的逻辑耦合,用工程化方法构建和维护有效的、实用的和高质量的软件,让整个软件系统“大而不乱”,一个优秀的程序员不仅仅是要简简单单的敲代码,还要更深层次理解软件开发的结构,让我知道了优秀的程序员不只要学习技术的实现,还要学习成熟的思想,这门课的收获很大。

最后遗憾是时间比较短,只有十周的时间,培养起来软件工程的思想还是需要多多实践,并且运用的实际的项目中去,希望自己可以通过今后其他课的学习中把高级软件工程这门课融入到其他课去,慢慢理解它的好处。

最后感谢孟老师对我们的帮助和指导!

继续阅读