编辑: 我不是阿L | 2014-03-18 |
6 Swift 我们将这本书免费发布并且贡献给社区,因为我们希望提供给读者一些有价值的内容.如果你能学到至少一条最佳实践,我 们的目的就达到了. 我们已经非常用心地打磨了这些文字,但是仍然可能有一些拼写或者其他错误.我们非常希望读者给我们一个反馈或者建 议,以来改善本书.所以如果有什么问题的话,请联系我们.我们非常欢迎各种 pull-request. 贡献给社区 禅与 Objective-C 编程艺术
7 贡献给社区 Luca Bernardi http://lucabernardi.com @luka_bernardi http://github.com/lukabernardi Alberto De Bortoli http://albertodebortoli.com @albertodebo http://github.com/albertodebortoli 作者 禅与 Objective-C 编程艺术
8 作者 译者 林翔宇 http://linxiangyu.org [email protected] http://github.com/oa414 庞博 [email protected] https://github.com/heistings Kevin.Xiao [email protected] https://github.com/KevinHM 翻译已得到原作者许可,并且会在更加完善后申请合并到原文仓库. 部分译文表达可能存在不妥之处,非常欢迎各种修订建议和校队. 请直接 fork 本仓库,在 README.md 文件中修改,并申 请 pull request 到 https://github.com/oa414/objc-zen-book-cn/. Yourtion [email protected] https://github.com/yourtion 根据电子书做了部分章节的排版优化,支持Objective-C语法高亮.如有修改建议优化,请直接 Fork:https://github.com/yourtion/objc-zen-book-cn/ 进行修改并申请 Pull Request. 关于中文翻译 GitBook 排版 禅与 Objective-C 编程艺术
9 关于中文翻译 条件语句体应该总是被大括号包围.尽管有时候你可以不使用大括号(比如,条件语句体只有一行内容),但是这样做会带 来问题隐患.比如,增加一行代码时,你可能会误以为它是 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 编程艺术
10 条件语句 不要使用尤达表达式.尤达表达式是指,拿一个常量去和变量比较而不是拿变量去和常量比较.它就像是在表达 蓝色是不 是天空的颜色 或者 高个是不是这个男人的属性 而不是 天空是不是蓝的 或者 这个男人是不是高个子的 (译者注:名字起源于星球大战中尤达大师的讲话方式,总是用倒装的语序) 推荐: if ([myValue isEqual:@42]) { ... 不推荐: if ([@42 isEqual:myValue]) { ... 尤达表达式 禅与 Objective-C 编程艺术