zoukankan      html  css  js  c++  java
  • 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(" null pointer ");
    }

    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远不止于以上几条。

    后面会结合自己的学习工作陆续的补充,谢谢。

  • 相关阅读:
    淘宝nginx的学习使用,安装及反向代理,负载均衡
    Linux5
    Linux4
    Linux权限相关及yum源的配置
    linux基本命令及python3的环境配置
    使用Guava RateLimiter限流
    Runnable与Callable 区别
    [Kafka] 如何保证消息不丢失
    [多线程] 等待所有任务执行完成
    [Docker] 快速安装mysql
  • 原文地址:https://www.cnblogs.com/riskyer/p/3310760.html
Copyright © 2011-2022 走看看