深圳宝安网站设计,成都有没有做网站建设的,高端品牌车,微信号 网站模板摘要#xff1a;王淮是Facebook第二位中国籍工程师#xff0c;也是第一位中国籍研发经理#xff0c;他一手开创了Facebook的支付安全和客服工具领域。2011年他离开Facebook#xff0c;回国成为天使投资人。本文是王淮以前写代码和做代码审查时候的一些原则#xff0c;供大…摘要王淮是Facebook第二位中国籍工程师也是第一位中国籍研发经理他一手开创了Facebook的支付安全和客服工具领域。2011年他离开Facebook回国成为天使投资人。本文是王淮以前写代码和做代码审查时候的一些原则供大家借鉴。 作者王淮分享了在写代码和做代码审查时候的一些原则供大家学习与参考。 正确性(Correctness) 正确性是第一要求。不能解决问题的代码是耍流氓。 第一步结构体现逻辑。第二步需要什么数据需要做什么处理处理完了结果到那里去都应该在结构中被很好的体现出来。 结构体现设计。设计一定要清晰。我的经验来看一般来说在design chart上面的每个component都对应着自己的class然后之间或class内部的通信通过member function来完成。 一个可借鉴的做法——在一个大的feature implementation过程中给出第一个diff的时候可以只把结构当做一个diff里面的函数可以是空的(place holder)。 把数据的生成和界面的展示分开来。典型的可以按照MVC的模式来但也可以只把数据和UI分开来的比较轻量级的做法。结构应当是diff review时候最最关注的地方。最需要问的问题就是“这个diff号称要解决的问题被正确解决了吗” 不论你是在正确还是有错误的时候。通过相对公证的test来1减少自己被绕到代码里的几率2让后续的或者别人的改动对自己代码不经意的破坏被最快的展现出来。 test应该把class主要的function都测一遍 test也应该把class和其他class最重要的integration也测一遍。 可读性(Readability) diff的大小 bug修改无所谓该多大多大。一般bug fix不会超过100行。超过的要特别重视想想究竟是什么原因造成。会不会是当初设计的问题。 一个diff原则上不应该超过200-300行修改。但多了怎么办把一个diff变成多个–split to multiple changes. 每diff应该只做一件事情 每个diff尽可少的做一个改动。这样可以尽可能的方便自己的管理(学会用 git branch)和方便reviewer的代码审查。如果diff越集中做一件事审查代码的人需要越短的时间来审查做出高质量的整体效率越高。 一个function超过1屏split it, idiot. 统一的代码规范 比如文件名变量或函数名的命名规范分行的前置空2个spaces或4个每行的字数不应超过80char如何使用public/private/protected用左右括号的原则空行的使用文件和代码comments的位置比如代码comment只能单独成行对“//TODO:”的使用规范macroconstant的使用 等等等等。 这里没有特别的哪一种style一定更对但是需要有一个大家统一的guideline一起遵守让整体的代码有统一的风格和标准。 最大的好处就是有利于readability. object-oriented v.s function-oriented Java本身就是面向对象所以这个问题不大。但千万不要出现披着面向对象的外皮在class里面写超长的面向函数的处理。这种情况下尽可能的分流成helper function. crispy sufficient的注释 注释应当简洁但充分。有些人觉得代码应该speak for itself。我不大同意代码是实现细节适当的在意图上给予说明可以大幅度的减少读代码的人的烦恼。 diff发出去之前 与master做一次merge update确保resolve all conflicts run一次所有涉及的test cases需要工具 考虑最可能做reviewer的人可以是团队伙伴也可以是修改涉及到的源代码owner。但必须是关心该改动或和改动相关的人。 所有的manager应当自动subscribe自己的团队里所有人的diff requests (做好filtering但你不一定要看 code-review之中应该做的 作为reviewer一定要读懂diff所有被 accept的diff必须是在读懂的前提下。做reviewer 的人要有“将来如果这些代码线上出问题我要帮助 support”的心理准备。 code review应该被每个engineer当做工作的重要一部分。做Performance Review 的时候应该把帮助做过的code review考虑for both employee manager. 应当在24小时内给回复这应当变成共识。 感觉有问题的代码一定要在相应的行上做出评论inline comments)以让作者明白问题所在。 尽可能把对修改的所有意见一次性给出减少来来回回的次数。比较复杂的建议reviewer 主动找author来进行线下沟通达成一致。 一般的diff来回次数不宜超过3次如果超过3次想想看是不是diff太大太复杂了。 check-in之前应该做的 与master做一次merge update确保没有问题 run一次code change涉及到的所有test cases包括新增的和涉及到的 test cases) 原文出自王淮