iOS开发:Code Review 指南

杏仁医生 iOS 端 Code Review 指南。

转载注明出处

指南不仅针对 Review 者,提交代码前,自己也应该按照步骤进行检查,避免低级错误和无用的反工。

我们按照以下步骤来进行 Code Review,来保证代码质量。

Merge Request

Code Review 的第一步是检查 Merge Request 是否符合规范。提交者应该保证 MR 的清晰:

  • MR 标题说明改动的模块和改动内容,如果是fix bug,标明 issue 标号链接
  • 将改动拆分成独立的模块进行提交
  • 在日志中说明:改动的原因(指向需求文档、设计稿的链接)、改动的内容、涉及到的模块、可能的副作用
  • 控制 MR 的代码规模,避免出现海量改动的 MR
  • 不要将无用的编码中间步骤提交,本地分支的 commit 可以使用 git rebase 进行合并,即:保证每个 commit 都是可编译通过、带有完整功能的版本。

冒烟

冒烟检测保证提交的 MR 是可编译通过的,检查:

  • 可以正常 Debug,运行 App
  • 可以登陆、连接服务器、连接 socket,拉取数据。
  • 核心功能运行OK

功能实现

检查是否按照需求实现了功能(或者 fix 了 bug)。不必进行详尽的覆盖,作简单的检查就可以了。

  • UI是否还原了设计?
  • 功能的主流程是否按预期跑通了?
  • bug是否修复了?
  • 是否影响了其他模块?改动涉及的模块是否运行OK?

性能和体验

对于新的功能模块,在功能实现需求的前提下,还要保证性能和用户体验

  • 检查设计稿没有提及(或遗漏)的 UI 交互是否合理,是否需要和产品、设计进行讨论确认
  • 检查页面的UI是否流畅,是否有不合理的闪烁、跳动、掉帧
  • 检查一些操作是否卡顿、等待时间是否过长
  • 检查模块内存占用是否过高,是否有内存泄漏的问题(Instruments -> Allocations / Xcode -> DebugSession -> View Memory Graph Hierarchy)
  • 检查模块是否占用大量计算资源,导致手机发烫

编码风格

检查代码保证代码命名清晰、结构合理、风格统一。

好的代码应当是可读性很强的,在水平差不多的情况下,如果难以读懂别人提交的代码,一定是编码结构、风格、命名等出了问题,这是在 Review 阶段应该提出改正的。

具体的编码规范应该参照 杏仁医生 Objective-C 编码规范

分成以下几个方面对编码进行检查:

命名

  • 检查模块、类、方法、变量命名是否合理清晰,是否有歧义
  • 检查是否正确使用了前/后缀,没有命名冲突

组织

  • 检查是否有过长应该拆分的方法(原则上一个方法不应该超过一页)
  • 检查是否有过长的源文件(原则上一个源文件不应该超过1000行)
  • 检查代码换行、注释、分块是否合理
  • 检查文件的组织是否合理,模块内文件拆分合理、存储位置正确

注释

  • 检查每个源文件是否正确添加了说明
  • 对于容易引起歧义、不好理解、奇怪的代码段,检查是否添加了必要的注释
  • 检查关键接口、参数是否添加了必要的注释

接口

  • 检查接口是否清晰,表意清楚,没有副作用
  • 检查接口设计是否合理,保证了模块的独立性和扩展性

编码

最后是检查具体的编码内容,这一步不作具体的要求,属于编码经验、数据结构、模式设计等高级知识范畴,每个人有不同的理解。目的是提高代码的质量,共同进步。

一些编码检查可以注意的点:

  • 是否重复造轮子了?
  • 如果使用别人的轮子,这些三方库、开源代码、借鉴的实现方案等等是否好用合理?有没有更好的方案?
  • API 使用有没有兼容性的问题?
  • 数据结构是否合理?复杂度是否OK?有没有优化的空间?
  • 设计模式是否OK?扩展性鲁棒性怎么样?
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,029评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,395评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,570评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,535评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,650评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,850评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,006评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,747评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,207评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,536评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,683评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,342评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,964评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,772评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,004评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,401评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,566评论 2 349

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,799评论 25 707
  • 写作对于我,大抵是一种释放方式吧,把心里想说的话一一写下,记在纸上。我的简书名片上就是这样写的:“书我所愿,写我所...
    Log君阅读 558评论 16 18
  • 其实很早就想跟你进行一次深度沟通,提笔却觉得内容很多,理不清头绪,不知从何说起。这篇文章算是我对自己从小到...
    9fb7263265f5阅读 306评论 0 0
  • “梦里花落知多少”每当耳边响起这句熟悉的话时,总是会感到略带的那些孤独。 回头看看身边的亲人,有多少已...
    顾婳扦阅读 250评论 0 1
  • 有的妹子生活中真的炒鸡好看啊,但拍出来的照片就是没有本人辣么好看(真的好气喔是不是(ㅍ_ㅍ))。先撇开摄像师这个外...
    喜欢诗词的女孩阅读 228评论 0 0