软件工程线上课程(C语言实践篇)学习心得总结
林牧 + 原创作品转载请注明出处 + 《软件工程(C编码实践篇)》MOOC课程http://mooc.study.163.com/course/USTC-1000002006
软件工程的理解:
软件工程是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科。它涉及到程序设计语言、数据库、软件开发工具、系统平台、标准、设计模式等方面。在现代社会中,软件应用于多个方面。典型的软件有电子邮件、嵌入式系统、人机界面、办公套件、操作系统、编译器、数据库、游戏等。同时,各个行业几乎都有计算机软件的应用,如工业、农业、银行、航空、政府部门等。这些应用都促进了经济和社会的发展,也提高了工作和生活效率 。同时,软件工程师研究和应用如何以系统性的、规范化的、可定量的过程化方法去开发和维护软件的一门科学,代码的设计不单单是为了使程序可运行,可实现需要的功能,在代码的规范,设计的规范,模块化思想,线程的安全性,子系统的可重用性上都有所要求。而这门软件工程线上课程(c语言实践篇)正是侧重代码的规范和设计的规范性。
代码的设计规范就是说代码要简明、易读、无二义性。同时,代码应该没有缩进错误,代码独占一行,代码行内多留空格等。
代码内部还应该实现模块化,使代码的业务逻辑和数据存储使用不同的源文件实现。
课程实践:
本次课程共有6次实验,我一共写了6篇实验心得,分别如下:
在linux环境下,编写hello world小程序。了解linux系统的目录结构,学会使用linux的基本命令ls、cd,vi的基本操作,gcc编译程序等。
学习缩进、命名、注释等代码编排的风格规范。代码风格的原则:简明、易读、无二义性。
模块化思想,代码的业务逻辑和数据存储之间的分离。在实验二的基础上将系统抽象为两个层级:菜单业务逻辑和菜单数据存储。
学习接口规范,了解内聚和耦合(讲究高内聚低耦合),通用原则。
应用callback函数的方法来增加模块通用性,实现信息隐藏。
学会写Makefile工程文件,学会了使用getopt函数。
实验一把一个menu所有代码都写在main中;实验二中引入链表,实现了代码的业务逻辑和数据存储之间的分离;实验三改造链表,提高了其与源文件的耦合性;实验四继续改造链表使其有可重用性;实验五利用回调函数,回调函数就是调用者调用被调用者,在被调用者执行的过程中,又去执行调用者代码段的过程逻辑;实验六把代码封装成模块,实现menu接口。
具体代码和实现过程请参考实验报告链接。
实验总结:
经过两个月的线上线下学习,我了解了软件工程的基本思想,以后在写代码的时候,要随时遵循代码规范。不是一昧的写出大量大量的代码,而是考虑模块化,通用性,接口化,讲究高内聚低耦合等等。
软件工程线上课程(C语言实践篇)学习心得总结的更多相关文章
- 欢迎参加MVP主讲的Windows 10开发线上课程
博客地址:http://blog.csdn.net/FoxDave Windows 10 Developer Readiness - Powered by MVPs - 由微软最有价值专家(MVP)主 ...
- 《Python自动化测试修炼宝典》线上课程已经成功入驻网易云课堂......
<Python自动化测试修炼宝典>线上课程已经成功入驻网易云课堂...... IT测试老兵利用工作之余,亲自录制的<Python自动化测试修炼宝典>线上课程已经成功入驻网易云课 ...
- 获奖感言和C语言的学习心得
获奖感言和C语言的学习心得 自我介绍: 大家好,我的名字叫袁忠,我来自湖南,今年快19岁了,现在是大学一年级,我平时喜欢跑步.打羽毛球,我也喜欢学算法与数学,以及喜欢看一些与计算机有关的书籍,每次我学 ...
- 记一次线上事故的JVM内存学习
今天线上的hadoop集群崩溃了,现象是namenode一直在GC,长时间无法正常服务.最后运维大神各种倒腾内存,GC稳定后,服务正常.虽说全程在打酱油,但是也跟着学习不少的东西. 第一个问题:为什么 ...
- 清华大学《C++语言程序设计基础》线上课程笔记02---类与对象
类与对象 public是类的对外访问接口: 类内初始值 在定义类时对数据成员写初始值,在创建对象的时候,会使用类内初始值初始化数据成员: class Clock { public: void show ...
- 清华大学《C++语言程序设计基础》线上课程笔记03---数据的共享和保护&数组
数据的共享和保护 对象的生存期 static类型的局部变量,生存期在整个程序,局部可见. void example() { static a=1; int b=2 } 当调用完example函数后,b ...
- 清华大学《C++语言程序设计进阶》线上课程笔记06---继承、派生、多态性
类的继承 保持已有类的特性而构造新类的过程称为继承; 实现设计与代码的重用. 在已有类的基础上新增自己的特性而产生新类的过程称为派生 当新的问题出现,原有程序无法解决(或不能完全解决)时,需要对原有程 ...
- 清华大学《C++语言程序设计基础》线上课程笔记05---vector对象,对象的复制与移动,string类
vector 对象 C++标准库中的一个类模板 封装任何类型的动态数组,自动创建和删除. 数组下标越界检查. 将动态数组封装成类的知识点中封装的ArrayOfPoints也提供了类似功能,但只适用于一 ...
- 清华大学《C++语言程序设计基础》线上课程笔记04---指针
指针 static int i; static int* ptr = &i; 此处的*表示ptr是指针类型(地址类型),用来存放目标数据的地址 其本身也有地址,所以又指向指针的指针; *前面的 ...
随机推荐
- AngularJs--angular-pagination可复用的分页指令
1.angular-pagination 是基于angular 编写的可复用分页指令 安装 克隆项目到本地: git clone https://github.com/febobo/angular-p ...
- 如何通过Azure Service Management REST API管理Azure服务
通过本文你将了解: 什么是Azure Service Management REST API 如何获取微软Azure 订阅号 如何获取Azure管理证书 如何调用Azure Service Manag ...
- [T-SQL]INSERT INTO SELECT 与 SELECT INTO FROM
1.INSERT INTO SELECT 语法:INSERT INTO Table2(field1,field2,...) select value1,value2,... from Table1 要 ...
- c++中的<<函义
1.一个是左移运算:x = 4<< 2; 2.输出流运算:cout <<x;//X的值输出流到设备中.
- jquey知识点整理
jquery选择器 1.元素选择器: $("p") 选取 <p> 元素. $("p.intro") 选取所有 class="intro&q ...
- Fuel UX wizard example
<!DOCTYPE html> <html class="no-js fuelux"> <head> <meta charset=&quo ...
- jQuery的deferred对象学习
#copy { background-color: lightgreen; padding: 15px; margin: 10px } 一.deferred对象简介 deferred对象是jquery ...
- poj 2774
传送门:http://poj.org/problem?id=2774 裸的后缀数组,我只是为了贴个版而已 代码 #include <cstdio> #include <cmath&g ...
- The Same Game-POJ1027模拟
The Same Game Time Limit: 1000MS Memory Limit: 10000K Description The game named "Same" is ...
- Python 对目录中的文件进行批量转码(GBK>UTF8)
通过python实现对文件转码,其实处理很简单: 1.打开读取文件内容到一个字符串变量中,把gbk编码文件,对字符串进行decode转换成unicode 2.然后使用encode转换成utf-8格式. ...