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之学习篇的更多相关文章

  1. Google C++ Coding Style 学习笔记

    写在前面:最新公司马上就要开始开发一款视觉产品,工程量较大,且需要对客户提供可以二次开 发的SDK,整个项目用C++编写. 这就对代码质量提出了非常高的要求,同时,如何设计出优雅稳定的API也是相当大 ...

  2. Google's C++ coding style

    v0.2 - Last updated November 8, 2013 源自 Google's C++ coding style rev. 3.274 目录 由 DocToc生成     头文件   ...

  3. [Coding Style] CSS coding style

    CSS coding style Note 结合实际工作中的规范和推荐大家使用的CSS书写规范.顺序这篇文章整合而成 Navigation CSS 书写顺序 CSS 常用文件命名 CSS 常用命名规范 ...

  4. js学习篇1--数组

    javascript的数组可以包含各种类型的数据. 1. 数组的长度 ,直接用 length 属性; var arr=[1,2,3]; arr.length; js中,直接给数组的length赋值是会 ...

  5. 编程风格(Coding Style)要求

    编程风格(Coding Style)要求2.1.1 文件(1) 每个模块(module)一般应存在于单独的源文件中,通常源文件名与所包含模块名相同.(2) 每个设计文件开头应包含如下注释内容:? 年份 ...

  6. Tomcat集群配置学习篇-----分布式应用

    Tomcat集群配置学习篇-----分布式应用 现目前基于javaWeb开发的应用系统已经比比皆是,尤其是电子商务网站,要想网站发展壮大,那么必然就得能够承受住庞大的网站访问量:大家知道如果服务器访问 ...

  7. (转载)OC学习篇之---概述

    前言 终于开启了OC的学习篇了,之前由于工作上的事,学习就一直搁浅了,不过最近由于各种原因,感觉必须要开启iOS的开发旅程了,不然就老了.因为之前一直是做Android的,所以学习iOS来就没那么费劲 ...

  8. Linux 内核Coding Style整理

    转载:http://www.cnblogs.com/wang_yb/p/3532349.html 总结linux内核开发的coding style, 便于以后写代码时参考. 下面只是罗列一些规则, 具 ...

  9. 《Mysql 公司职员学习篇》 第二章 小A的惊喜

          第二章 小A的惊喜  ---- 认识数据库 吃完饭后,小Y和小A回到了家里,并打开电脑开始学习Mysql. 小Y:"小A,你平时的Excell文件很多的情况下,怎么样存放Exce ...

随机推荐

  1. 高级UIKit-04(NSUserDefaults、NSKeyedArchiver、对象归档方法)

    [day05_1_UserDefault]:判断应用程序是否是第一次运行 NSUserDefaults:用来保存应用程序的配置信息如:程序运行次数,用户登陆信息等. // 使用系统提供的NSUserD ...

  2. WCF技术剖析之二十五: 元数据(Metadata)架构体系全景展现[元数据描述篇]

    原文:WCF技术剖析之二十五: 元数据(Metadata)架构体系全景展现[元数据描述篇] 在[WS标准篇]中我花了很大的篇幅介绍了WS-MEX以及与它相关的WS规范:WS-Policy.WS-Tra ...

  3. Windows Phone 8初学者开发—第21部分:永久保存Wav音频文件

    原文 Windows Phone 8初学者开发—第21部分:永久保存Wav音频文件 第21部分:永久保存Wav音频文件 原文地址:http://channel9.msdn.com/Series/Win ...

  4. Light OJ 1318 Strange Game 组合数+高速幂+分解因子

    长度为l的用k种字符组成的字符串有k^l中 当中m个字符要不同样 那就是k^l*C(l, m)*(k-1)^m 有反复 要除以2 可是你mod n了 不能直接除 n不一定是素数 所以不能乘以逆元 所以 ...

  5. MSSQL - 尚未备份数据库 xxxx 的日志尾部。如果该日志包含您不希望丢失的工作,请使用 BACKUP LOG WITH NORECOVERY 备份该日志。请使用 RESTORE 语句的 WITH REPLA

    此错误的原因是:你的数据库服务器中存在同名数据库! RESTORE DATABASE  [student] FROM  DISK = N'G:\备份文件'  WITH  FILE = 1, MOVE ...

  6. 基于visual Studio2013解决C语言竞赛题之1017次数

         题目 解决代码及点评 /* 功能:有人说在400, 401, 402, ...499这些数中4这个数字共出现112次,请编程序判定这 种说法是否正确.若正确请打印出'YE ...

  7. salon_百度百科

    salon_百度百科     salon    编辑    是法语Salon一字的译音,中文意即客厅,原指法国上层人物住宅中的豪华会客厅.从十七世纪,巴黎的名人(多半是名媛贵妇)常把客厅变成著名的社交 ...

  8. 编写一个void sort(int*x,int n)实现将x数组中的n个数据从大到小排序。n及数组元素在主函数中输入。将结果显示在屏幕上并输出到文件

    #include<stdio.h> void sort(int*x,int n) { int i,j,k,t; for(i=0;i<n-1;i++) { k=i; for(j=i+1 ...

  9. Swift - 委托(delegate)的介绍,及使用样例

    1,委托的说明 委托(delegate)是Cocoa的一个术语,表示将一个对象的部分功能转交给另一个对象. 比如对象A希望对象B知道将要发生或已经发生某件事情,对象A可以把对象B的引用存为一个实例变量 ...

  10. 初入Android--Activate生命周期

    Activate的主要生命周期 (注意:这只是主要的生命周期,而不是完整的生命周期方法,其中的两个周期之间可能还执行了其他的一些方法) 每个时刻在屏幕上的状态 进入onCreate方法:Activat ...