真实姓名(姬祥) + 原创作品转载请注明出处 + 《软件工程(C编码实践篇)》MOOC课程http://mooc.study.163.com/course/USTC-1000002006


整体概括:

    这学期学习了中国科学技术大学孟宁老师的课程《软件工程(C编码实践篇)》经历了九周的学习,感觉收获颇多,作为一名本科专业与软件不太靠边的学生,在编码中多是自学,对编码的规范不是很清楚,经过这学期的学习,在编码中,越来越注意规范编码的重要性,为以后进入公司更好的团队合作打下了良好的基础。老师不仅讲解了编码的规范,还讲述了模块化的思想,讲究高内聚低耦合,接口要规范,代码要注意通用性。我还学会了使用github,以前的代码都存在电脑上,有些东西容易丢失。现在重要的代码都保存在了github上。无论到哪里,都可以下载下来回顾修改。在课程刚开始,我还学到了,如何在linux下编程,一些基本linux指令。总的来时收获颇丰。感谢孟老师的教学。


编程规范

    (1)花括号:左括号要和右括号处于对应的位置,并且都单独一行,这样会更明了对应关系。 
    (2)行缩进:每一级都相对上一级缩进四个空格。 
    (3)赋值或者等于判断“=”/“==”等二元操作符的前后应当加空格,但一元操作符就不用这样做。 

    (4)函数的命名方式,首字母大写。

    (5)注意注释,还有代码头部写出作者时间内容。让人一目了然。

    等等


模块化与接口设计

    (1)一个模块只做一类事的,实现功能尽量用库函数;以及要遵循“不和陌生人说话”的原则,以保证除了类提供的接口,别人无法访问类的其他内容。同时要合理使用数据结构、控制结构等来简化代码。

    (2)在模块化的思想中,讲究高内聚低耦合,接口要规范,代码要注意通用性。

    (3)代码设计中的一些常见方法 
    KISS(keep it simple & stupid) 
    using design to frame the code(matching design with implementation) 
    including pseuducode 

线程安全和可重入

    (1)可重入函数与线程安全并没有直接的关系

    (2)可重入函数只限于单个函数,二线程安全相对于整个代码块,注意如果代码块是线程安全的,则线程安全的代码模块是可重入的代码模块。

    (3)可重入的定义是:一个可重入的函数简单来说就是可以被中断的函数,也就是说,可以在这个函数执行的任何时刻中断它,转入OS调度下去执行另外一段代码,而返回控制时不会出现什么错误;所以单线程下,就没有可重入与不可重入的区分

    (4)线程安全的定义是:多线程访问时,采用了加锁机制,当一个线程访问该类的某个数据时,进行保护,其他线程不能进行访问直到该线程读取完,其他线程才可使用。

    

实验报告目录:

1.实验一:写一个hello world小程序

    https://www.shiyanlou.com/courses/reports/1290132

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

    https://www.shiyanlou.com/courses/reports/1290990

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

    https://www.shiyanlou.com/courses/reports/1293282

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

    https://www.shiyanlou.com/courses/reports/1296184

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

    https://www.shiyanlou.com/courses/reports/1298113

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

    https://www.shiyanlou.com/courses/reports/1303719


总结:

总的来说,高级软件工程这门课收获很多,这门课既讲了理论,又让我们动手实践,在实践中学习。未来的工作必然是团队协作,而团队协作很重要的一部分就是代码的阅读和接口的使用,孟老师在课程里面详细的讲述了这些,这些知识和编码习惯将是我收益终身,一个系统除了,健壮性和可靠性,可移植,可维护性同样非常重要,这就需要我们设计时,注意模块的功能划分,以及接口的设计,在这门课程中,我们学会了这些。同学们也在网站上,发布自己的报告,观摩他们的报告也让我收益很多,最后感谢孟宁老师的指导。

    我感觉最遗憾的是,忘了提交第四次作业,实验报告已经发布,却因为一时忙,忘记了,自己以后要提前准备。

    祝老师的课程越做越好,祝各位同学学得跟多知识!