原创作品转载请注明出处
班级:移动软件设计,学号:SA17225137,姓名:简洪昌
一。学习心得
在理论知识传授上,每周老师都会更新一个特定主题的课程,从代码风格规范到代码背后的软件工程相关的设计思想,结合作业要求的内容,围绕着我们所做的实践来进行理论讲解,教学效果显著。对于我这样跨专业的学生来说能更好的理解并学习,加以实践。
我的收获有以下几个部分:
代码风格规范。代码风格体现出程序员的专业素养,仿佛程序员的第二张脸。代码风格:简明、易读、无二义性。即代码不仅要能让计算机正确地识别,也要让程序员同行易于阅读,方便合作。好的编码习惯比如代码缩进固定4个空格、行宽适中、勤用注释、一条语句近做一件事、表达简单明确。
模块化思想,将业务逻辑层和数据存储层分开,并注意信息的隐藏。了解了代码设计中的一些常见方法:KISS(keep it simple & stupid)、usingdesign to frame the code(matching design with implementation)、including pseuducode、不要和陌生人说话原则、“开-闭”原则(对扩展是开放的,对修改是封闭的)。以及一定要有错误处理。
了解了接口的五个要素,接口的两个隐含属性:前置条件和质量属性。
明确了可重入函数和不可重入函数,以及与线程安全的关系。
学会Makefile工程文件的使用,并考虑其可维护性,make从Makefile的第一个目标all开始执行,大大方便了复杂编译命令的输入,提高效率。
线上实验部分则是将线上课程中传达的软件工程思想应用到实际编程之中,每次实践之后写一篇实验报告来巩固所得的知识。实验也使我熟悉了Linux系统的基本命令,学会使用版本库。每一节课程之后都对应一个实验,最终目的是应用课程中学习的知识实现一个“可重用的菜单命令行”。
二。实验报告与代码链接
实验一:写一个hello world小程序
实验报告:https://www.shiyanlou.com/courses/reports/1290116
实验代码:https://github.com/17jhc/jhc/tree/master/lab1
实验二:命令行菜单小程序V1.0
实验报告:https://www.shiyanlou.com/courses/reports/1291365
实验代码:https://github.com/17jhc/jhc/tree/master/lab2
实验三:内部模块化的命令行菜单小程序v2.0
实验报告:https://www.shiyanlou.com/courses/reports/129321
实验代码:https://github.com/17jhc/jhc/tree/master/lab3
实验四:用可重用的链表模块来实现命令行菜单小程序V2.5
实验报告:https://www.shiyanlou.com/courses/reports/1295959
实验代码:https://github.com/17jhc/jhc/tree/master/lab4
实验五:用callback增强链表模块来实现命令行菜单小程序V2.8
实验报告:https://www.shiyanlou.com/courses/reports/1298861
实验代码:https://github.com/17jhc/jhc/tree/master/lab5
实验七:将menu设计为可重用的子系统
实验报告:https://www.shiyanlou.com/courses/reports/1304013
实验代码:https://github.com/17jhc/jhc/tree/master/lab7
三。总结
软件工程(C编码实践篇)这门课程,内容虽然很基础,但是这门课将我领进软件工程专业的大门,使我受益匪浅。孟宁老师匠心独运线上课程的安排以及线上实验的设置,将软件工程思想和C编码实战相结合,理论联系实际,一步步教授我们软件工程的思想并引导我们运用软件工程设计思想通过不断迭代,最终实现了一个功“可重用的菜单子系统”。这种教学设计方式有利于我们更好地掌握软件工程的思想。课程内容包含基础的软件设计体系和设计思想,使得我对软件工程有了更好的认识和理解。
最大的收获就是对于代码规范的学习以及编程思想的理解,并通过实践得以更加牢靠的掌握。
遗憾:课程时间太短,所学习的内容还是过少。