软件工程(c编码实践篇)学习总结

来源:互联网 发布:重庆大学生就业知乎 编辑:程序博客网 时间:2024/06/16 02:40

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

Part1心得体会

对软件工程的理解:

我的理解,软件工程就是按照工程学的管理方式,有组织、有计划的,在一定的质量基础、时间限度和成本范围内,实现功能明确的软件系统。

学习软件工程(c编码实践篇)心得:

在孟宁老师的带领下,我在网易云课堂上学习了3个月的软件工程(C编码实践)篇课程,这让我对程序设计有了更深一步的认识,不只是像以前一样停留在如何写代码上,对软件开发的方方面面都有了一定的了解,如代码规范、模块化、代码可重用性、线程安全等等。孟宁老师的几句话给我记忆深刻:模块化、拿来主义、不要为了通用而通用、抽象能力是程序员的核武器。每次看完老师的视频教程都感觉获益良多,总让我有一种耳目一新的感觉。

实验是从最熟悉的hello word写起,当然,这个实验主要是让我们先了解实验环境,了解代码规范的一些基础内容,为后面的学习打基础。接着一步一步做实验,不知不觉将命令行菜单的一个小程序慢慢地变成了一个命令行的小系统,在这个过程中,尽管老师一直强调我们主要考察代码规范,可是我学到的又岂止是代码规范,还有很多能一直受用的知识,linux命令,markdown的书写,4空格缩进,变量名和函数名各种风格,{和}独占一行,且成对对齐,如何简化代码,如何保持设计与实现一致,如何设计规范的接口,如何让模块通用,如何提供皆空的同时隐藏信息,如何用makefile编译工程文件等等。。。。。这对以前只注重功能实现的我来说无疑是一个很好的学习过程和提高过程。

软件=程序+软件工程!!构建之法如是说,我深表赞同,一个好的程序我觉得不仅代码够规范,可读性够强,还要能可再利用,写程序之前应该先好好设计程序,怎么能让这个程序既实现功能,又美观,可读性强,同时以后遇到相似的问题还能继续用,现在回头想想,我们本次的实验解决的就是这个问题,在做实验的过程中老师提的要求就是在规范我们的程序设计,从一开始只是实现命令行输出功能,中间贯穿实验的代码格式和规范,到最后将menu主程序设计成接口,让其能重用,这整个过程就在改变着我们原有的程序设计思维,让我们认识到软件是高于程序的存在,真的受益匪浅!!

通过这个实验楼的学习,我知道课堂上学到的知识是有限的,在这个网络发达的世界,只有我们够努力,肯花时间去努力去钻研,不断学习,最终一定可以学到更多知识。谢谢网易云课堂这个平台。

 

Part2实验报告汇总

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

主要是熟悉实验楼环境,初步了解代码规范,熟悉linux基本命令,包括cd、ls、mkdir等命令,vim基本命令,包括vi使用,一般模式、编辑模式、命令模式等模式切换,markdown的书写,包括标题、插入链接、插入图片、两次enter等。

实验报告:https://www.shiyanlou.com/courses/reports/1270214

实验代码:http://git.shiyanlou.com/liujunxiong/shiyanlou_cs122

 

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

实现了命令行的小程序,最主要的学习到很多代码规范,包括:

缩进4个空格

变量命名采用lowCamel风格

类型/类/函数名用Pascal风格

类型/类/变量名用名词或名词组合

函数名用动词或动宾短语

括号清楚地表示逻辑优先级

所有{和}独占一行,且成对对齐

不要把多个语句和多个变量定义放在同一行

注释、文件名、路径等用英文ASCII字符,不要用中文和特殊字符

 

实验报告:https://www.shiyanlou.com/courses/reports/1271595

实验代码:http://git.shiyanlou.com/liujunxiong/shiyanlou_cs122

 

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

将程序内部进行模块化,设置接口,使程序更加逻辑清楚

1.KISS(keep it simple and stupid)一个函数或者方法只做一件事

2.Using design to frame the code 设计与实现保持一致

3.Including pseuducode

4.不要和没陌生人说话

5.合理运用Control Structure和Data Structure简化代码

6.一定要有错误处理 goto 语句的用法用数据结构简化代码

 

实验报告:https://www.shiyanlou.com/courses/reports/1272533

实验代码:http://git.shiyanlou.com/liujunxiong/shiyanlou_cs122

 

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

将数据结构抽出来独立成一个通用模块的技巧,linktable模块与具体的数据类型无关,是一个通用的链表模块,我们要用到模块时,再具体定义数据类型。这样就可以在C语言没有泛型的情况下尽最大可能复用数据结构的代码,这是非常厉害的技巧

1.用可重用的链表模块来实现命令行菜单小程序,执行某个命令时调用一个特定的函数作为执行动作

2.链表模块的接口设计要足够通用,命令行菜单小程序的功能保持不变

3.可以将通用的Linktable模块集成到我们的menu程序中

4.接口规范

 

实验报告:https://www.shiyanlou.com/courses/reports/1274957

实验代码:http://git.shiyanlou.com/liujunxiong/shiyanlou_cs122

 

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

1.给lab5-1.tar.gz(在实验楼Linux虚拟机环境下~/se_files/目录下)找bug,quit命令无法运行的bug

2.利用callback函数参数使Linktable的查询接口更加通用

3.注意接口的信息隐藏

 

实验报告:https://www.shiyanlou.com/courses/reports/1275998

实验代码:http://git.shiyanlou.com/liujunxiong/shiyanlou_cs122

 

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

1. 为menu子系统设计接口,并写用户范例代码来实现原来的功能;

2. 使用make和make clean来编译程序和清理自动生成的文件;

3. 使menu子系统支持带参数的复杂命令,并在用户范例代码中自定义一个带参数的复杂命令;

4. 可以使用getopt函数获取命令行参数;

 

实验报告:https://www.shiyanlou.com/courses/reports/1277984

实验代码:http://git.shiyanlou.com/liujunxiong/shiyanlou_cs122

 

Part3 实验总结

这门课让我学习到不少的东西,现总结如下:

1.代码风格规范是一段代码是否优秀的最直观体现。简明、易读、无二义性是基本原则;缩进4个空格、行款100字符、类名、变量名的见名知意等是在编码过程中需要注意的细节。

2.一个代码的好坏,表现在代码是否具有良好的复用性,可靠性以及错误处理。而在这之中,模块化的设计思想是优化代码的关键武器。分离关注点,将代码分为业务逻辑层和数据存储层能够更好的实现包容变化。

3.接口定义了软件单元对外提供的服务,是实现代码高内聚,低耦合的关键。设计一个通用的接口要注意:参数的上下文信息、移除前置条件、简化后置条件。

C4.all-back函数调用机制是我在这次学习过程中最大的一个收获点,从前一直是采用call-in的函数调用机制。这次通过学习,深刻理解了call-back回调函数的机制以及具体的使用方法,它是实现kiss(keep it simple & stupid)的重要途径。

5.Call-back函数调用机制是我在这次学习过程中最大的一个收获点,从前一直是采用call-in的函数调用机制。这次通过学习,深刻理解了call-back回调函数的机制以及具体的使用方法,它是实现kiss(keep it simple & stupid)的重要途径。