zoukankan      html  css  js  c++  java
  • 条件语句应该总是被大括号包围

    条件语句体应该总是被大括号包围来避免错误,即使可以不用(比如,只有一行内容)。这些错误包括多加了第二行,并且误以为它是 if 语句体里面的。此外,更危险的可能是,如果把 if 语句体里的一行注释掉了,之后的一行代码会不知不觉成为 if 语句里的代码。

    推荐:

    if (!error) {
        return success;
    }
    

    不推荐:

    if (!error)
        return success;
    //或者
    if (!error) return success;
    

    在 2014年2月 苹果的 SSL/TLS 实现里面发现了知名的 goto fail 错误。

    代码在这里:

    static OSStatus
    SSLVerifySignedServerKeyExchange(SSLContext *ctx, bool isRsa, SSLBuffer signedParams,
                                     uint8_t *signature, UInt16 signatureLen)
    {
      OSStatus        err;
      ...
     
      if ((err = SSLHashSHA1.update(&hashCtx, &serverRandom)) != 0)
        goto fail;
      if ((err = SSLHashSHA1.update(&hashCtx, &signedParams)) != 0)
        goto fail;
        goto fail;
      if ((err = SSLHashSHA1.final(&hashCtx, &hashOut)) != 0)
        goto fail;
      ...
     
    fail:
      SSLFreeBuffer(&signedHashes);
      SSLFreeBuffer(&hashCtx);
      return err;
    }
    

    显而易见,这里有没有括号包围的2行连续的 goto fail; 。我们当然不希望写出上面的代码导致出现错误。

    此外,在其他条件语句里面也应该按照这种风格统一,这样更便于检查。

    摘录来自: “禅与 Objective-C 编程艺术。”

  • 相关阅读:
    过滤器(Filter)
    DBUtils结果集处理器介绍
    Tomcat配置连接c3p0连接池
    JdbcUtils
    数据库连接池
    JDBC处理事务
    JDBC入门(5)--- 时间类型、大数据
    JDBC入门(4)--- 批处理
    JDBC入门(3)--- PrepareStatement
    JDBC入门(2)--- ResultSet之滚动结果集
  • 原文地址:https://www.cnblogs.com/coderYDW/p/13515728.html
Copyright © 2011-2022 走看看