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 编程艺术。”

  • 相关阅读:
    Centos 7 开放查看端口 防火墙关闭打开
    idea将项目导出为war包
    webstorm 注册服务器
    centos 6.4系统双网卡绑定配置详解
    centos所有版本镜像下载地址
    浅谈Nginx负载均衡与F5的区别
    勒索病毒应急响应计划
    Python网络编程常用代码
    Flask debug 模式 PIN 码生成机制安全性研究笔记
    Pythonic定义
  • 原文地址:https://www.cnblogs.com/coderYDW/p/13515728.html
Copyright © 2011-2022 走看看