标签:c编程实践
真实姓名(姬祥) + 原创作品转载请注明出处 + 《软件工程(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)线程安全的定义是:多线程访问时,采用了加锁机制,当一个线程访问该类的某个数据时,进行保护,其他线程不能进行访问直到该线程读取完,其他线程才可使用。
实验报告目录:
https://www.shiyanlou.com/courses/reports/1290132
https://www.shiyanlou.com/courses/reports/1290990
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
https://www.shiyanlou.com/courses/reports/1303719
总结:
总的来说,高级软件工程这门课收获很多,这门课既讲了理论,又让我们动手实践,在实践中学习。未来的工作必然是团队协作,而团队协作很重要的一部分就是代码的阅读和接口的使用,孟老师在课程里面详细的讲述了这些,这些知识和编码习惯将是我收益终身,一个系统除了,健壮性和可靠性,可移植,可维护性同样非常重要,这就需要我们设计时,注意模块的功能划分,以及接口的设计,在这门课程中,我们学会了这些。同学们也在网站上,发布自己的报告,观摩他们的报告也让我收益很多,最后感谢孟宁老师的指导。
我感觉最遗憾的是,忘了提交第四次作业,实验报告已经发布,却因为一时忙,忘记了,自己以后要提前准备。
祝老师的课程越做越好,祝各位同学学得跟多知识!
本文出自 “姑苏城” 博客,请务必保留此出处http://ji123.blog.51cto.com/11333309/1980873
标签:c编程实践
原文地址:http://ji123.blog.51cto.com/11333309/1980873