软件工程(C编码实践篇)学习总结
2015-11-15 15:49
337 查看
小青春 原创作品 转载请注明出处
一、课程连接:《软件工程(C编码实践篇)》MOOC课程二、实验报告和代码链接
实验一
实验二
实验三
实验四 忘记写实验报告
实验五
实验六 选做题,忘记写实验报告
实验七
GIT代码库
三、心得体会
1. 学会了Linux的几个初级命令
cd命令
change directory 更改当前目录。
ls命令
1).ls 命令显示当前目录的内容。 2).-a 列出目录下的一切文件,包含以 . 最初的隐含文件。 3).-l 列出文件的具体信息。
shutdown -h now 关机命令
mkdir命令
1).创建文件夹
2).mkdir lab1 在当前目录下创建一个 文件夹叫 lab1
vi的基本命令
1) 默认是命令模式 输入:进入ex模式 按esc退回命令模式 按i 进入插入模式 2) ex模式命令 :wq 保存并退出 :q! 不保存,强制退出
2.代码最初是如何生长起来的
1).从helloworld开始不断迭代调试使代码长的越来越像一个命令行的菜单小程序 2).写代码要小步快跑不断迭代,罗马不是一天建成的。
3.代码风格规范
1).代码风格的原则:简明、易读、无二义性
2).缩进: 用四个空格、一个缩进表示一个层级
3).遵守代码规范的主要目的是为了能编译出执行效率更高的可执行程序。
4).骆驼命名法
5).对于表达式比较长的for语句和if语句,为了紧凑起见可以适当地去掉一些空格,如for (i=0; i<10; i++)和if ((a<=b) && (c<=d))
4.代码设计中的一些常见方法
1).KISS(keep it simple & stupid) 一个函数、方法只做一件事 2).using design to frame the code(matching design with implementation) 3).including pseuducode 包装类,外部本地化接口 4).不要和陌生人说话原则 5).合理利用Control Structures、Data Structures来简化代码 3).一定要有错误处理 程序的主要功能(80%的工作)大约仅用20%时间,而错误处理(20%的工作)却要80%的时间 4)高内聚,低耦合的架构设计目标
5.函数的可重入与线程安全
什么是函数的可重入性?
可重入(reentrant)函数可以由多于一个任务并发使用,而不必担心数据错误。相反,不可重入(non-reentrant)函数不能由超过一个任务所共享,除非能确保函数的互斥(或者使用信号量,或者在代码的关键部分禁用中断)。可重入函数可以在任意时刻被中断,稍后再继续运行,不会丢失数据。可重入函数要么使用本地变量,要么在使用全局变量时保护自己的数据。
可重入函数: 不为连续的调用持有静态数据。 不返回指向静态数据的指针;所有数据都由函数的调用者提供。 使用本地数据,或者通过制作全局数据的本地拷贝来保护全局数据。 绝不调用任何不可重入函数。
什么是线程安全?
如果你的代码所在的进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码。如果每次运行结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的是一样的,就是线程安全的。
线程安全问题都是由全局变量及静态变量引起的。若每个线程中对全局变量、静态变量只有读操作,而无写操作,一般来说,这个全局变量是线程安全的;若有多个线程同时执行读写操作,一般都需要考虑线程同步,否则就可能影响线程安全。
函数的可重入性与线程安全之间的关系
可重入的函数不一定是线程安全的;
可重入的函数在多个线程中并发使用时是线程安全的,但不同的可重入函数(共享全局变量及静态变量)在多个线程中并发使用时会有线程安全问题(可能是线程安全的也可能不是线程安全的);
不可重入的函数一定不是线程安全的;
6.懂得了MakeFile工程文件的编写
将menu小程序,做了可重用的设计
7.总结
软件工程对我们今后的开发,面试找工作都有着重大的影响,在一个团队中一个好的设计,好的代码质量将给团队带来巨大的效益。代码风格良好为程序带来了良好的可读性,同时也便于软件后期的维护和升级。
相关文章推荐
- Python核心编程读笔 10:函数和函数式编程
- 去重复 oracle
- javascript快速入门第二章基础知识(下)
- AE开发中验证 从句
- 如何在 MySQL 中判断中文字符?
- Android:线性布局(LinearFrame)例子
- python NLTK环境搭建
- 二进制中1的个数(2)
- 软件工程(C编码实践篇)学习总结
- IPv4套接字地址结构
- ASP+Access UTF-8 网页乱码问题解决办法
- 漫谈机器学习经典算法—理解EM算法
- NSObject 内省方法
- android Picker选择器
- java中String类常用方法总结
- hdu 5563 Clarke and five-pointed star (枚举)
- [转]php 在各种web服务器的运行模式
- C# 如何保证对象线程内唯一:数据槽(CallContext)
- HDU 5534 Partial Tree (变形完全背包 好题)
- 杭电ACM1712(分组背包)