c coding style之学习篇
1. 使用do-while结构去避免潜在的内存泄漏问题。
do
{
p1 = malloc(10);
if (null == p1)
{
break;
}
p2 = malloc(20);
if (null == p2)
{
break;
}
return ok;
}while(0);
de_init();
return fail;
2. 使用指针时必须先检查指针的有效性,这样做的一大好处是可以防止误用null pointer
而引起系统crash。
if (p1 != null)
{
do_something();
}
else
{
printf("\nnull pointer\n");
}
3. free一个指针时,记得将其置为null,否则这个指针就会变成wild pointer,
这会导致系统变得不稳定。
if (p1 != null)
{
free(p1);
p1 = null;
}
4. 不允许在other thread里面做你自己的事,这可能会block other thread做自己的事。
在后面callback function里面会细说这件事。
5. local variable必须要初始化。虽然这一条rule不总是必须的,但是养成好习惯总不是坏事。
int value = 0;
详细可以参考我下面的博文:
http://blog.csdn.net/boyxulin1986/article/details/11474923
6. dynamically分配的内存也需要初始化,
p1 = malloc(10);
memset(p1, 0, sizeof(10));
详细可参考我的博文:
http://blog.csdn.net/boyxulin1986/article/details/11474923
7. 你的程序中不应该有可能导致系统卡住的死循环。
这里如果is_done()总是false,那程序就永远卡住了;最坏情况如果is_done()总是false,
那应该要怎样做?
while(false == is_done())
{
continue;
}
8. 不要滥用comments,comments不是用来解释语法的。
而且comments如果与code不match的话,会给代码维护者带来巨大无比的困扰。
9. 当你给你的function,给你的variable命名时,请先想一下。
命名规则很重要,它直接会影响到代码的可读性以及可维护性。
10. 代码中不要有深层次的递归调用,太深的递归调用可能会block住thread甚至会让
thread的stack爆掉。
11. 要用模块化的方法来设计软件,降低模块间的耦合性、提高模块的内聚行。
模块化的好处是使得程序具有更好的重用性、更容易维护以及更容易扩展等。
12. function要尽量短而小,一个function实现一个功能。
以上是目前本人总结的一些心得体会,实际上coding style远不止于以上几条。
后面会结合自己的学习工作陆续的补充,谢谢。
c coding style之学习篇的更多相关文章
- Google C++ Coding Style 学习笔记
写在前面:最新公司马上就要开始开发一款视觉产品,工程量较大,且需要对客户提供可以二次开 发的SDK,整个项目用C++编写. 这就对代码质量提出了非常高的要求,同时,如何设计出优雅稳定的API也是相当大 ...
- Google's C++ coding style
v0.2 - Last updated November 8, 2013 源自 Google's C++ coding style rev. 3.274 目录 由 DocToc生成 头文件 ...
- [Coding Style] CSS coding style
CSS coding style Note 结合实际工作中的规范和推荐大家使用的CSS书写规范.顺序这篇文章整合而成 Navigation CSS 书写顺序 CSS 常用文件命名 CSS 常用命名规范 ...
- js学习篇1--数组
javascript的数组可以包含各种类型的数据. 1. 数组的长度 ,直接用 length 属性; var arr=[1,2,3]; arr.length; js中,直接给数组的length赋值是会 ...
- 编程风格(Coding Style)要求
编程风格(Coding Style)要求2.1.1 文件(1) 每个模块(module)一般应存在于单独的源文件中,通常源文件名与所包含模块名相同.(2) 每个设计文件开头应包含如下注释内容:? 年份 ...
- Tomcat集群配置学习篇-----分布式应用
Tomcat集群配置学习篇-----分布式应用 现目前基于javaWeb开发的应用系统已经比比皆是,尤其是电子商务网站,要想网站发展壮大,那么必然就得能够承受住庞大的网站访问量:大家知道如果服务器访问 ...
- (转载)OC学习篇之---概述
前言 终于开启了OC的学习篇了,之前由于工作上的事,学习就一直搁浅了,不过最近由于各种原因,感觉必须要开启iOS的开发旅程了,不然就老了.因为之前一直是做Android的,所以学习iOS来就没那么费劲 ...
- Linux 内核Coding Style整理
转载:http://www.cnblogs.com/wang_yb/p/3532349.html 总结linux内核开发的coding style, 便于以后写代码时参考. 下面只是罗列一些规则, 具 ...
- 《Mysql 公司职员学习篇》 第二章 小A的惊喜
第二章 小A的惊喜 ---- 认识数据库 吃完饭后,小Y和小A回到了家里,并打开电脑开始学习Mysql. 小Y:"小A,你平时的Excell文件很多的情况下,怎么样存放Exce ...
随机推荐
- export和import实现模块化
export和import实现模块化 阅读目录 ES6的模块化的基本规则或特点: 下面列出几种import和export的基本语法: ES6导入的模块都是属于引用: 循环依赖的问题: 浏览器兼容: 参 ...
- 《C++ Primer Plus》学习笔记1
C++ Primer Plus>学习笔记1 第二章.開始学习C++ 1.控制符endl 假设显示字符串时,在字符串中包括换行符,而不是在末尾加上endl,这样能够大大降低输入量:假设是要生成一个 ...
- STM32启动模式
STM32三种启动模式对应的存储介质均是芯片内置的,它们是: 1)用户闪存 = 芯片内置的Flash.2)SRAM = 芯片内置的RAM区,就是内存啦.3)系统存储器 = 芯片内部一块特定的区域,芯片 ...
- 利用Ihttpmodel实现网站缓存,解决Server.Transfer 直接输出HTML源代码的问题
今天在用.NET利用IHttpModel实现网站静态缓存的时候,不知道最后为什么用 Server.Transfer(html)的时候结果输出的是HTML的源代码. 贴上源代码 using System ...
- vbox要手动mount才能挂载windows的共享文件夹(好用,不用安装samba了)
mount -t vboxsf BaiduShare /mnt/bdshare/ 我按照这篇文章成功: http://www.wuji8.com/meta/448016166.html 其它参考: h ...
- 它们偷偷干了啥?教你监督APP的运行
由于Android系统的开放性,很多APP都会在后台运行各种我们不知道的权限,不仅泄露我们隐私,也给系统本身带来极大安全隐患.而且现在很普遍的是,在安装APP时它总会索取特别多的权限,又是拍照又是地理 ...
- 通过demo搞懂encode_utf8和decode_utf8
perl 编码问题: use utf8表示代码使用UTF-8写的 [root@wx03 0710]# cat a1.pl #use utf8; my $str='测试utf8字符集'; print $ ...
- ASP.NET - 使用 XML
对XML文件进行简单的增加,删除,修改,查看等功能. XML代码: <?xml version="1.0" encoding="UTF-8"?> & ...
- javaee加密部署,tomcat使用自己的classloader解密【正解】
[起因] 公司需要对一个web项目进行加密之后出售, 大家都知道的,class很好反编译, 所以需要对class文件先进行加密, 然后使用自己的classloader进行解密并加载. [步骤] 大概分 ...
- QCompleter自动补全
知识永远是那么多,想到什么就总结什么,今天记录一下关于我对QComplete的一些小见解. 官方文档中叙述如下: 可以在任何Qt的窗口小部件中使用QCompleter提供自动补全功能,如 ...