如何利用Github进行代码审查 - Realm is a mobile database: a replacement for SQLite & Core Data



如何利用Github进行代码审查 - Realm is a mobile database: a replacement for SQLite & Core Data

当问到你们的团队是否进行代码审查这个问题时,大部分人的回答会是 "项目进度跟的这么紧,哪还有时间进行代码审查啊?"。如果再加上频繁的人事变动和组织结构调整导致很多人对代码审查的可行性及意义产生了巨大的疑问。并且让团队的所有成员熟悉代码审查工具和流程本身也是一项费时费力的工作。那么,就让我们通过Realm团队的例子来看看他们是怎么进行代码审查的。

我的第一次代码审查经历

笔者回想起在当年在某韩企工作时,第一次进行代码审查的过程。

  1. 提出代码审查会议请求
  2. 与团队成员共享审查代码的范围,会议室,时间等信息。
  3. 在指定会议室进行代码审查之前分析并审查所有代码。

是的。这并不是一次成功的代码审查。因为大家都专注于自己的开发任务,根本就不主动提出代码审查请求。并且在进行代码审查会议之前,大家基本上对即将要审阅的代码一无所知。导致了会议的大部分时间浪费在对代码的说明上,并且大家也只能提出类似于拼写错误和命名规范这样简单的错误和改善建议。代码审查本身可以提高开发者的能力,让其从自身犯过的错误中学习,从他人的思路中学习。但是不当的流程可能会使代码审查的意义变的微乎其微。

使用代码审查工具

如果说上面所提及的代码审查方式是同步的代码审查,那么使用代码审查工具的结果就是异步的代码审查。代码审查工具在不对源代码造成任何修改的情况下,团队成员可以对指定代码进行批注和评论。为了进行高效的代码审查,我们可以使用的工具不仅有Gerrit, Review Board, Phabricator等这样的开源软件,而且对于一个预算比较充足的团队来说,JetBrains的Upsource 和 Atlassian的 Crucible 都是不错的选择,可以在LDAP服务器上方便的搭建并且和JIRA缺陷管理工具,代码版本管理工具(git,svn)关联进行代码审查。利用这些工具来管理和追踪审查由于住团队更好的起步。下面是Upsource的官方示例。


Read full article from 如何利用Github进行代码审查 - Realm is a mobile database: a replacement for SQLite & Core Data


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