欢迎使用CSDN-markdown编辑器

来源:互联网 发布:oracle 数据库备份 编辑:程序博客网 时间:2024/06/06 03:25

高级软件工程(C编码实践篇)心得

中国科学技术大学-姜瑜欣- 原创作品转载请注明出处-《软件工程(C编码实践篇)》MOOC课程http://mooc.study.163.com/course/USTC-1000002006

2个多月的学习,通过(网易云课堂孟宁老师的高级软件工程(C编码实践篇)),让我对程序的架构设计有了更深一步的认识,孟老师的讲解由浅入深,细致独到,从一个最简单的·HelloWorld小程序到设计复杂的可重用的命令行小程序,环环相扣循序渐进,让我明白了罗马并非一日建成的深刻道理,同时也通过课程学习到了良好的编程规范和编程习惯。
以前的我还只是简单地纠结于如何写代码和填鸭式的记住一些语法规范,往往事倍功半,通过对这门课程的学习以及7门经典的小实验,不仅让我掌握了如何去写一个程序,而且更是掌握了一种学习方法。就好比你要修炼一门武功,外功的修炼是基础中的基础,就好比是一门编程语言的规范及语法;但内功心法的作用更为重要,我想,孟宁老师的这门课就是在传授我们编程这门“武功”的“心法”吧。

下面是我跟进这门课的实验和各自的心得体会。
实验报告一:写一个hello world小程序
对于实验一给我的最大帮助就是学会了如何使用Linux系统的一些基本命令操作,觉得命令行的方式更适合程序猿,即快速又很cool,同时也刺激了我学习Linux操作系统的味蕾;另一方面学会了git版本库的基础操作,它也是程序猿必须掌握的技能。虽然实验一看起来很简单,但我觉得实验一相比其他实验给我的帮助是最大的。

实验报告二:命令行菜单小程序V1.0
我认为实验二给我的帮助就是一些代码规范,如何让代码看起来更清晰整洁,哪里该加空格,该加几个,如何对齐代码,if while switch等语句的风格,各种逻辑表达式的书写,这些对我的代码的“颜值”提升无疑是巨大的。

实验三:内部模块化的命令行菜单小程序V2.0
这次实验让我领悟到了Separation of concerns的重要性和精髓,及程序设计、模块之间的关系、设计模式等。了解到KISS原则、合理利用Control Structure &Data Structure来简化代码、错误处理等一系列重要原则,让我受益匪浅。将基本的数据结构应用到设计的小程序里,对软件工程深入浅出的思想牢记在心。

实验四:用可重用的链表模块来实现命令行菜单小程序V2.5
接口的使用无疑对软件开发的帮助是巨大的,减少了代码量,使代码更模块化,将实验三的链表接口抽象化,使得我们具体使用时可以在链表中定义不同类型的数据,及提高链表的可重用性。

实验五:用callback增强链表模块来实现命令行菜单小程序V2.8
这里接触了一种全新的思想——callback(回调)函数,引用孟宁老师的话就是:用户可以自定义函数,把这个函数传进去,执行完之后再返回,达到一个卧底的目的。

实验六 让我理解了什么是函数的可重入性,以及全局、局部变量的区别,线程的堆栈结构是怎样的,什么是线程安全,以及线程锁的使用。

实验七:将menu设计为可重用的子系统
通过此次实验,在更高的高度上对程序进行了可重用设计,让我对代码可重用设计有了更深的体会,区别开了逻辑与UI之间的关系。并且对linux下工程文件编译和文件清理有了初步认识。

总结:通过这2个月的学习,掌握了很多以前不知道的知识,比如linux、git版本库、模块化设计,回调函数等等,也学会了由浅入深地完成任务。稍微有些遗憾的是在实践过程中编程能力没有得到很大地提升,以后继续努力。

原创粉丝点击