惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
V
Vulnerabilities – Threatpost
有赞技术团队
有赞技术团队
小众软件
小众软件
O
OpenAI News
C
Cyber Attacks, Cyber Crime and Cyber Security
I
Intezer
NISL@THU
NISL@THU
D
Darknet – Hacking Tools, Hacker News & Cyber Security
N
News and Events Feed by Topic
MongoDB | Blog
MongoDB | Blog
阮一峰的网络日志
阮一峰的网络日志
Hacker News: Ask HN
Hacker News: Ask HN
D
Docker
WordPress大学
WordPress大学
Security Archives - TechRepublic
Security Archives - TechRepublic
A
About on SuperTechFans
Stack Overflow Blog
Stack Overflow Blog
C
CERT Recently Published Vulnerability Notes
L
LINUX DO - 最新话题
Application and Cybersecurity Blog
Application and Cybersecurity Blog
M
MIT News - Artificial intelligence
Blog — PlanetScale
Blog — PlanetScale
S
Security @ Cisco Blogs
Cloudbric
Cloudbric
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
V
V2EX
Hacker News - Newest:
Hacker News - Newest: "LLM"
G
Google Developers Blog
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
W
WeLiveSecurity
Google DeepMind News
Google DeepMind News
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
H
Hackread – Cybersecurity News, Data Breaches, AI and More
G
GRAHAM CLULEY
S
Schneier on Security
T
Tor Project blog
Spread Privacy
Spread Privacy
PCI Perspectives
PCI Perspectives
Microsoft Security Blog
Microsoft Security Blog
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
F
Fortinet All Blogs
L
Lohrmann on Cybersecurity
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
T
The Exploit Database - CXSecurity.com
TaoSecurity Blog
TaoSecurity Blog
Apple Machine Learning Research
Apple Machine Learning Research
T
Threat Research - Cisco Blogs
T
Troy Hunt's Blog
罗磊的独立博客

iCode

春节到了,送一波 Moon FM 兑换码 - V2EX 马上 2020 了,送一波 zClock 兑换码. - V2EX 为了收集和整理编程的常用单词,我写了个背单词应用 - V2EX 推荐一个使用的工具集合 MDTools - V2EX MAC 应用延时录屏 timelapseZ 送 20 个注册码 - V2EX 2017 Apple 设计大奖得主 Lake 涂色兑换码 - V2EX 「艾宾浩斯计划表」¥6 免费放送 50 枚促销代码 - V2EX 视觉图表 for iOS ¥68 分享 50 个促销代码 - V2EX 送 Instastack, OneRadio ,HaloRadio for Windows 等兑换码。 - V2EX 花钱请 ios 码农将几个开源功能组合实现。 - V2EX 问一道 code 题 - V2EX 封装了一个 Markdown 库 - EFMarkdown,求资瓷...QWQ - V2EX 刚把邮件发送换成 mailgun 了,想测一下激活码邮件的发送情况,发一大波 HaloRadio , PhotoStack(Instastack) ,ONERadio 免费兑换码啦 - V2EX 二维码扫描器 For Mac - V2EX 在这里再发 50 个兑换码吧 - V2EX 发码了 PhotoStack (Instastack) for Instagram 和 HaloRadio 各 10 个 - V2EX 发一些 MWeb for iOS ( Markdown 编辑器)内购兑换码,共 20 枚,分三次发(主要是分享到 ProductHunt 后没什么人投票,来求一下票票) - V2EX 发 10 个 Instastack for Instagram 兑换码。 - V2EX Halo for Radio 上 Windows Store 啦。发 Promotional code. - V2EX 赠送些 VeXplore 兑换码以及开源计划 - V2EX 上次没抢到的同学,新的一波 Instastack 兑换码来了 - V2EX QPai :一个扫描、展示并记录二维码、条形码及其所表示内容的小工具,附 20 枚兑换码 - V2EX 奉上 Instastack for Instagram Mac App Store 兑换码 若干个 - V2EX 第一个 Mac App,关于货币汇率,请大家多提意见,谢谢(附送几个兑换码,先到先得) - V2EX iOS 创意应用“分形的奥秘:朱利亚集合” Beta 公开测试邀请 - V2EX 发一批 ONERadio 兑换码 - V2EX 做了个囚徒健身的 APP,来发下促销码, - V2EX 放十个码, iOS 通知中心直接翻译剪切版文本 - V2EX iOS 付费软件 分发兑换码求各位拍砖! - V2EX 有谁知道 iTunes Window 插件是什么鬼吗,刚好有这个需求。 - V2EX 使用机器学习算法如何预测某女孩成为女朋友的概率? - V2EX MWeb 新版发布,发 10 个兑换码。MWeb 是 OS X 下的 Markdown 编辑器和全静态网站、博客生成工具 - V2EX MWeb 新版通过审核了,所以我又来发 Promo Code 了 -- MWeb 是一个 Markdown 编辑器和生成全静态博客的 Mac APP - V2EX 自己移植的 iPerf iOS 版本已在 AppStore 上架,发放 10 枚兑换码 - V2EX 花几个月做了一个 Markdown 编辑器和生成全静态博客的 Mac APP,发些 Promo Code - V2EX Go 轻松学 兑换码 倾情分享 请标注使用了的。 - V2EX 记录事件次数的 App countability 兑换码 - V2EX 新游戏上线,赠送兑换码 - V2EX 分享「国际音标」的 Promo Code - V2EX 赠送 10 枚 Notie 邀请码 - V2EX 储蓄计划追踪App DropCoin发码 - V2EX 赠送一些 Paster for Mac 邀请码 - V2EX 原创APP分享 送上15个邀请码 - V2EX 分享LunarCal的Promo Code - V2EX 预产期日历 - V2EX Google Objective-C Style Guide - V2EX MarkNote 1.0.0 - V2EX
Code Review 代码审阅初窥门径 - V2EX
CodingNET · 2018-07-20 · via iCode

背景

今时今日,软件工程的开发工作早已不是一个人的单打独斗,而是一个团队的相互配合、共同前进。有位作家写过一句很流行的话,叫“一个人要像一支队伍”,而作为一个组织进行高效率的脑力生产劳动时,更需要追求的反而是“一支队伍要像一个人”,这个人走路不会同手同脚,四肢要协调,前进方向只有一个。 那怎么实现这个目标呢? Code Review,即代码评审,是必不可少的一个环节。

当一个程序员写完了一段代码后,由另外的程序员花时间来浏览阅读这些代码,并进行审阅。

Code Review 是以轮转的方式进行的,所以参与代码审阅的人有两种,分别是作者( author )以及评审者( reviewer )。当作者将写好的代码提交给评审者后,评审者对这次变动作出反馈,作者根据反馈修改代码,并重新提交,经过一次或多次往返后,评审者**同意( approve )**这次代码变动,允许代码进入仓库保存,Code Review 就完成了。

flowchart

制图来源

此时评审者要考虑的问题包括:

  • [ ] 总体逻辑上的实效效果
  • [ ] 检查是否满足了所有需求
  • [ ] 之前的自动化测试需要额外做修改才能跑通吗
  • [ ] 与其他模块之间有没有程序检查不出来的冲突

由此可见,Code Review 基本上就相当于老师在给学生一字一句地批改作业,学生订正后又交给老师再次检查,如此往复。因此,为了节约精力,以便代码审阅工作可持续性开展,评审者可以交给程序去处理的问题包括:

  • [ ] 发现代码中的 bug 与错误
  • [ ] 代码风格和编码标准的统一

Code Review 的好处

热力学三大基本定律中有一条叫“熵增原理”,即:一个孤立系统总朝着混乱无序的方向发展。软件工程也是如此,如果没有人把控输入的代码,只管一个劲地堆砌,久而久之,这坨代码也就失去秩序,成一团乱麻了,人见人嫌。所以在工程的一开始就引入代码审阅,可以非常有效地提高代码质量。

更重要的是,Code Review 是一个双向的过程,双方借助针对具体代码的交流,得以了解对方的想法,进行互相探讨,这是帮助团队中的成员成长,赋予团队自我管理、良性发展的能力。归根结底,人才是首要的生产力。

高效进行 Code Review 的方法

版本对比 / 文件改动

在“上古”时代,代码作者在开始 Code Review 前,还需要手动做一份变更列表( changelist ),来告诉评审者这一次提交做了什么改动。得益于 Git 的诞生,今天的我们可以借助基于 Git 版本控制系统的平台,来更轻松无痛地开展代码审阅,比如「CODING 企业版」,作为企业级软件研发管理系统,其提供的 Code Review 功能简单好用,能大大提高代码审阅效率:

图片

借助 Git 自动实现精细的文件改动,红色代表删减,绿色代表新增,支持行级评论,再也不用在不同工位间来回走动,直接在具体代码下进行交流。

资源关联

代码不是孤立的一串文本字符串,而是实现目标的其中一项资源,那么必然需要与其他资源相互组合才能掌握全局。落实到代码审阅中也是如此,放到具体的上下文环境里方能见微知著: 图片

「#」关联任务、文件等资源,「 @ 」通知相关同事,实现垂直关联场景下的精细调控。

多人协同审阅

图片

不同的人有不同的思考方式与见解,对同一段代码能从不同的角度出发考虑。尽可能的让不同的人 reivew 你的代码,不仅会有更多的人日后有能力维护你的代码,也是一个增加团队凝聚力的好方法。

学会享受 Code Review

不用担心收到批评面子过不去,也不用一枚追求“同意+1 ”,代码审阅是一个团队生机勃勃的象征,这里面的每一个人都在相互鼓励、相互交流以及相互进步,参与其中,与团队共同成长吧。