为什么要坚持code review - SegmentFault



为什么要坚持code review - SegmentFault

有和没有之间的态度差别
很简单,一段代码完成之后,有人看和没有人看,在质量上还是会有差别的。
当你知道你的代码会被人一行一行review时,你的代码一定为努力写的最好,而不是为了完成功能而应付了事,这就是态度上的区分。因为当你知道你写的代码是有人看的,你会更加在意你写的东西,你一定不想背后被人说,代码写的像一坨**。
而且确实我自己在review代码时,就能看出哪些为了赶上线而写的就和平常写的会有差别。

代码的可读,可维护
代码的可读和可维护在大团队很关键,最初我们代码审核为什么严格到令人发指,就是因为可读性和可维护性。
严格的code review可以感觉整个团队写出的代码就像是一个人写的。这样就是为了能让你随时切换到其他业务上,而且不需要什么适应时间。
可读性和可维护对于大型的多人合作系统,可以说非常关键,当一个团队30多人在一个单页面开发时,如果风格各异,代码仅仅符合功能和测试要求的话,你会发现多人开发的成本和新需求的升级的成本会越来越高。

举个常见的例子:
如果某个业务突然需要提高进度,这时的办法就是加人力,但是如果代码风格各异,加入的人力适应时间和学习成本是极高的,有时甚至不如保持原有人力去加班hold。要不就只能找些技术很强,可以无障碍学习的资深工程师江湖救急。

我们这边其实就是会出现上面项目突然加急的情况,但是,因为有code review,所以我们多人合作时,基本上可以保证1+1≈2的效率。为什么这么任性,就是因为在code review时已经控制了大家的写法和模式,让新加入的同学能够马上看懂以前逻辑并且做大概的业务了解就能上手了。
我这边最近就经历了这些,因为需要还一些历史遗留的技术债务,所以我需要调整底层的一些代码结构,这时保证功能和互相调用ok的情况下切换代码位置和路径就是我遇到的最大的障碍。
不过由于之前业务代码的高质量和开发模式基本上完全一致,所以我能很快找到统一的切入点,预先就能预估好可能会踩的坑。
如果没有code review之前严格的约束,我基本上需要每个业务功能去分析了,效率降到极低。

对于新人,快速引导,快速反馈
对于新人加入我们的团队,最快的上手方式就是,简单熟悉完之后,接手一个业务项目,然后我们会通过不断的code review给与开发方式,编码习惯,设计模式之间的反馈。
第一个项目的review 基本上会是最严格的。
其实对于技术人员,code review 就是用代码在做沟通。

及时发现非代码上的问题
有时我在review代码时会发现,有些地方经常在反复修改,或者有时实现会非常别扭。这时我就会问开发人员,是不是需求不明确导致的,是不是对需求的理由有偏差。
因为对于正在开发的同学,经常会陷入到业务具体的实现中,有时就是饶了很大的圈子但是自己确不知道。这时review时是能感觉到的,而且我也成功的多次阻止过。


Read full article from 为什么要坚持code review - SegmentFault


No comments:

Post a Comment

Labels

Algorithm (219) Lucene (130) LeetCode (97) Database (36) Data Structure (33) text mining (28) Solr (27) java (27) Mathematical Algorithm (26) Difficult Algorithm (25) Logic Thinking (23) Puzzles (23) Bit Algorithms (22) Math (21) List (20) Dynamic Programming (19) Linux (19) Tree (18) Machine Learning (15) EPI (11) Queue (11) Smart Algorithm (11) Operating System (9) Java Basic (8) Recursive Algorithm (8) Stack (8) Eclipse (7) Scala (7) Tika (7) J2EE (6) Monitoring (6) Trie (6) Concurrency (5) Geometry Algorithm (5) Greedy Algorithm (5) Mahout (5) MySQL (5) xpost (5) C (4) Interview (4) Vi (4) regular expression (4) to-do (4) C++ (3) Chrome (3) Divide and Conquer (3) Graph Algorithm (3) Permutation (3) Powershell (3) Random (3) Segment Tree (3) UIMA (3) Union-Find (3) Video (3) Virtualization (3) Windows (3) XML (3) Advanced Data Structure (2) Android (2) Bash (2) Classic Algorithm (2) Debugging (2) Design Pattern (2) Google (2) Hadoop (2) Java Collections (2) Markov Chains (2) Probabilities (2) Shell (2) Site (2) Web Development (2) Workplace (2) angularjs (2) .Net (1) Amazon Interview (1) Android Studio (1) Array (1) Boilerpipe (1) Book Notes (1) ChromeOS (1) Chromebook (1) Codility (1) Desgin (1) Design (1) Divide and Conqure (1) GAE (1) Google Interview (1) Great Stuff (1) Hash (1) High Tech Companies (1) Improving (1) LifeTips (1) Maven (1) Network (1) Performance (1) Programming (1) Resources (1) Sampling (1) Sed (1) Smart Thinking (1) Sort (1) Spark (1) Stanford NLP (1) System Design (1) Trove (1) VIP (1) tools (1)

Popular Posts