
问宇宙一个问题:当你宣战一个生疏的代码库时云开体育,第一步是作念什么?
信服大深广东说念主的作念法是,掀开 README,从目次初始,一瞥一瞥往下读。但当今,一些工程师初始继承一种十足不同的顺序:在看代码之前,先看 Git。
最近,一篇名为「在阅读任何代码之前,我会运行的 Git 大叫」的著述激励网友热议,文中建议一个看似简易却颇具颠覆性的不雅点:代码仅仅成果,Git 才是过程。

若何贯通?
作家 Ally Piechowski 认为,对于一个新的代码库,掀开末端,运行一组 Git 大叫,在稽察任何文献之前,「提交历史」就能给出一幅对于这个花样的「会诊图」:是谁构建了它、问题勾通在哪些地点、团队是自信满满地请托,照旧在雷区边际留神试探……
因此,Ally Piechowski 建议,在读代码之前,不错先运行这五个 Git 大叫:
一、哪些地点更正最多

通过这一 Git 大叫,不错稽察当年一年中更正最多的 20 个文献,排在最前边的阿谁文献,险些老是别东说念主会提前领导那一个:「哦对,就是阿谁文献,没东说念主敢动它。」
诚然,高频更正并不一定意味着代码不好,随机仅仅设备活跃,但如若一个文献更正庸碌,同期又没东说念主欢快接办,那可能就是最明确的「代码牵累」信号。这里的每一次修改,延续皆是「旧补丁上再打补丁」。一个小更正的影响限度难以商酌。团队在作念估算时会刻意加 buffer,因为他们知说念这块代码「会回击」。
2005 年微软征询院的一项征询发现,基于「变更频率」(churn)的主见,比单纯的复杂度主见更能商酌劣势。延续一个同期「高 churn + 高 bug」的文献,就是最大的风险点。
二、谁在写这些代码?

稽察按提交数目排序的悉数孝顺者,如若一个东说念主孝顺了 60% 以上,那就可能是「缺点东说念主依赖」(bus factor),而如若这个东说念主依然在六个月前离开了,那就是危境。
另外皮尾部,比如有 30 个孝顺者,但当年一年惟有 3 个活跃。这诠释,构建这个系统的东说念主,并不是当今在保重它的东说念主。
还需要密致的是:如若团队使用 squash merge(压缩兼并),作家信息会被压缩。这种情况下,成果反应的是「谁兼并了代码」,而不是「谁写了代码」。因此鄙人论断前,最佳先了解团队的兼并政策。
三、Bug 皆勾通在哪?

这一大叫的结构与 churn 分析雷同,但只筛选包含 Bug 缺点词的提交。将这个列表与前边的 churn 热门作念对比,两个列表皆出现的文献,就是最高风险代码:它们不断出问题、不断被修补,但从未被透澈惩处。
但同期,这也依赖于提交信息的范例进度,如若团队每次皆写「update stuff」,那险些得不到灵验信息。不外即即是稚子的 Bug 漫衍图,也比十足莫得要强。
四、花样是在加快,照旧在停滞?

这一大叫不错稽察悉数这个词仓库历史中,每个月的提交数目。如若节律贯通,则诠释花样是健康的;如若某个月提交量俄顷减半,庸碌意味着有东说念主离开了;如若 6 到 12 个月呈下跌趋势,诠释团队正在失去动能;如若是周期性岑岭 + 低谷,诠释团队是「勾通发版」,而不是捏续请托。
五、团队有多庸碌在「救火」?

这一大叫是稽察「回滚」(revert)与「热成立」(hotfix)的频率。一年内偶尔几次是平方的,但如若每隔几周就有一次「回滚」,诠释团队并不信任我方的发布经由,而这庸碌意味着更深层的问题:测试不可靠、清寒预发布环境(staging),约略部署经由让「回滚」变得艰苦。
如若成果为零,亦然一种信号:要么系统畸形贯通,要么团队根柢不写了了的提交信息。
危境模式是很容易识别的:要么存在,要么不存在。
在著述的终末,作家暗示,这五个 Git 大叫只需要几分钟时间,但却能让你知说念:应该先读哪些代码,以及阅读时要要点眷注什么,从而让你在一初始就有政策地贯通代码库,而非在其中盲目游走。
其实,从作家的共享来看,这几个 Git 大叫,改变了传统对代码库的贯通容颜,提供了一种新的视角,看到的不再仅仅「当今的代码长什么样」,而是「当今的代码为何会酿成这么」。
与此同期,这种新颖的视角在 Hacker News 上并莫得被十足继承,宇宙热议:这,真的靠谱吗?
有网友认为,Git 数据并不老是可靠,Commit Message 也会很水。
他暗示,「如若团队有范例的提交信息,这些顺序才有用。」但推行中,不论大公司照旧中小企业,提交记载延续繁杂,清一色的「Changes」、松弛 merge、尴尬 revert,还有一些东说念主,明明团队商定用 rebase,却照旧会提交 merge commit。
是以,他认为,「这一套顺序主要只在中大型开源花样中才确切有用 —— 那些有了了的 CONTRIBUTING.md/ README.md,以及明确的提交范例和兼并经由的花样。」

还有网友认为,这种顺序是在过度解读 Git 数据,Git 分析并不老是等于真相,很容易误导判断。
他勾通我方的切身阅历分析,随机候设备者提交次数多,也许仅仅因为他们本人才能不可。诚然,他也暗示,这并不是说提交次数多就等于设备者不好。仅仅思领导宇宙,如若把这些 Git 大叫的成果当成事实本人,就有可能看不到全貌。
「如若有东说念主跑完这些大叫后跑来跟我说:「我发现某某是提交最多的东说念主,但他 X 个月赶赴职了,咱们该奈何办???」我可能要很起劲才能忍住不笑……」

此外,还有一个争议点在于,高 churn 是否等于高风险?
网友认为,在测试中宣战最多的文献延续亦然最无关进击的文献,比如依赖文献(package.json)、lock file、CI 成就,以及一些自动生成文献等,这些文献会庸碌更正,但并不代表复杂。
因此,更准确的作念法是,将 churn 勾通复杂度来看。

那么你呢云开体育,你是若何看代码库的?约略认为这种顺序是否有启发,宽待宇宙指摘区留言、雷同!





