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远不止于以上几条。
后面会结合自己的学习工作陆续的补充,谢谢。
最新文章
- 【转载】写一个js库需要怎样的知识储备和技术程度?
- 使用POI getCell 获取空的单元格之后在使用的时候报 NullPointerException
- Centos7下用命令下载jdk7及jboss-eap-6
- webpack 学习笔记 01 使用webpack的原因
- MySQL HA
- java ssm框架入门(一)面向接口编程
- Spring Cloud Eureka Server 启停状态监控
- python 弄github代码库列表
- 使用ssh无密码登录
- Java泛型中extends和super的理解(转)
- 安装nginx+lua开发环境
- EmEditor编辑器正则表达式的优点
- 常见注入手法第二讲,APC注入
- Go语言学习1
- openssl源代码结构
- Excel复制粘贴假死
- MVC HtmlHelper用法
- os.path和sys.path的区别
- HanLP的自定义词典使用方式与注意事项介绍
- UI基础:视图控制器.屏幕旋转.MVC 分类: iOS学习-UI 2015-07-02 22:21 62人阅读 评论(0) 收藏
热门文章
- 【译】在Asp.Net中操作PDF - iTextSharp - 利用列进行排版
- MongoDB导出-导入-迁移
- windows安装Apache,注册服务出现“(OS 5)拒绝访问。 : AH00369: Failed to open the WinNT service manager...";错误
- cocos2d-x3.2中加入Android手机震动
- WCF技术剖析之十六:数据契约的等效性和版本控制
- Buenos Aires和Rio de Janeiro怎么发音?
- eclipse导入myeclipse的web项目没法识别问题解决方法
- Ubuntu下使用sshfs挂载远程目录到本地(和Windows挂载盘一样)
- perl 改变对象属性
- BootStrap - FileUpload美化样式