国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

代碼審查和不良編程習慣

開發 項目管理
有時候,做為一個程序員,我覺得我的職業生涯會被我開發軟件使用的開發工具和技術架構明顯的分割成幾個階段。

有時候,做為一個程序員,我覺得我的職業生涯會被我開發軟件使用的開發工具和技術架構明顯的分割成幾個階段。一部分是因為使用的編程語言——在大學時是Smalltalk,在Gog Creek公司是C#和Python,而另一方面是開發工具。我在Fog Creek公司里工作了8年,在那里,我們有一個非常固定的技術架構:bug管理、客戶支持和文檔管理用FogBugz;開發管理用Trello;代碼審查用Kiln;版本控制用Mercurial;編碼用Vim和 Visual Studio ;持續集成用我們的內部工具Mortar;隨著時間的流逝,這些工具在慢慢的變化,但變化從來都是緩慢逐步的,一個組件一個組件的。所以,我的工作流程和工作效率一直沒有巨大的變化。

大概一個月前,我加入了Knewton公司,整個技術架構一下子完全變了。Visual Studio換成了IntelliJ;Mortar換成了Jenkins;Mercurial換成了Git;FogBugz換成了JIRA。

也 許你會覺得這會讓我頭大,還會有些不知所措,但事實上并不是這樣,這些工具的改變并沒有對我的工作流程產生多大的影響。我發現Git和Mercurial 驚人的相似,JIRA基本上是一個半成品的FogBugz,而IntelliJ算是和Visual Studio差不多吧。也許我需要從新學習一些快捷鍵和了解按鈕的位置,但事實上我的開發模式沒有實質的變化。

但有一個例外:我不喜歡使用Gerrit做代碼審查。不喜歡它的原因并不是它的程序寫的很爛;不喜歡的原因是它的流程會鼓勵一種不良編程習慣。

Knewton公司對代碼審查非常、非常的看重。這非常好,因為我也是這樣,而且我開發過整套關于代碼審查的工具。所以,我的意思絕對不是反對代碼審查。

而且,Gerrit的設計跟最初的 Kiln 原型的設計幾乎完全一致。代碼審查的實施有兩種基本的方式:pre-merge,是指在代碼進入主代碼庫之前進行代碼審查。和post-commit, 是指之后審查。新版本的Kiln對兩種方式都支持,但在2008年,當Tyler和我通過一個項目——也就是Kiln的前身——在Django Dash中取勝時,我們倆都認同pre-merge的工作流程。直接提交到主代碼庫是不允許的;你需要先創建一個審查區,把修改的代碼放進去,討論,然 后,等待批準,系統會自動合并這些代碼。這一種是我最欣賞的工作流程,所以Kiln一直支持這種方式(通過“Read and Branch”權限),而巧的事,這也是Gerrit唯一支持的方式,按理說我應該喜歡它才是。

kiln

我差一點就喜歡它了,但問題出在一個致命問題上:代碼審查的粒度。在Kiln中,審查是基于被修改的相關代碼。而在Gerrit里,審查是基于單次代碼修改提交。在Kiln中,一個單一審查會涉及很多次代碼提交,審查的批準和拒絕是整體的,而Gerrit里審查的是一次孤立的提交。

這 兩種方法模式在各自的陣營里都有大量的受歡迎的系統實現。GitHub和Bitbucket都和Kiln一樣都屬于“批量提交”審查陣營,而Review Board, Barkeep, 和 Phabricator 都加入了“單一提交”審查陣營。所以,情況并不是我所說的某一種方式、某一款軟件是對的,而其它都是錯的。但我還是要堅持說,批量審查的方式是對的,而其 余的都是錯的,因為單一提交審查系統在鼓勵一種不良編程習慣。

單一提交審查系統有兩個最根本的問題:

  1. 它在向你暗示各個修改提交之間沒有關聯。經 常的,每當我實現一個新功能時,我都會有三個步驟:首先,重構現有的代碼,讓代碼整潔,方便添加新功能;接下來,加入新功能;***,寫單元測試代碼。功能 越復雜,各個步驟里越有可能各自包含多個邏輯步驟。如果能將多個不同的提交放的一個代碼審查中進行,那你就可以簡單的將這些修改分組提交。但如果使用的是 單一提交審查系統,那就是在迫使我將所有修改全部完成后進行一次全量提交。這樣一來,重構的代碼,新添加的代碼,都混在一起,讓人非常不爽,而且在審查過 程中需要我付出大量額外的精力來指出各部分代碼都是干嘛的。你也許會爭辯,說你可以把修改的代碼拆分提交,每一個提交對應一次審查。但事實上這樣做會更 糟。***的情況下,你可以把測試程序和新功能代碼分開提交,可以把重構代碼和后加代碼分開提交,但真正的問題是,眾多的單一修改審查系統都慫恿對某個提交 在孤立的狀態下進行批準,這完全會和你的愿望相反。于是,“一次提交一次審查”的折中就從“麻煩”變成了“危險”。的確不是一種改進。
  2. 它在慫恿你隱藏歷史記錄。 版本控制系統的最重要的功能就是告訴你代碼演變的歷史、是如何變成今天這個樣子的。我經常會查看昨天代碼是什么樣的,上周二下午2點代碼是什么樣的,期間 發生了什么變化。很多時候是因為我發現代碼以前好用而現在不行,我想知道為什么。而更多時候,我是想知道為什么會對代碼做這樣的修改。關聯的上下文是什 么?動機是什么?如果你總是保持所有代碼一次提交——為了審查,那我就喪失了很多歷史信息:所有我能找到的就是一次完整軟件的一次提交,完全沒有開發過程 中的過程信息。

這就是我為什么對Gerrit極度失望的原因。并不是Gerrit是一個糟糕的軟件,而是他在鼓勵一種在使用版本控制時不良的開發習慣。這就是為什么所有工具中唯獨不喜歡它的原因,是唯一讓我對放棄Kiln感到失望的系統。

原文鏈接:http://bitquabit.com/post/code-reviews-and-bad-habits/

譯文鏈接:http://www.vaikan.com/code-reviews-and-bad-habits/

責任編輯:陳四芳 來源: 外刊IT評論
相關推薦

2015-11-23 09:27:39

程序員不良編程習慣

2020-01-10 09:00:00

開發者編程習慣編程方式

2017-12-06 10:28:37

程序員編程習慣

2013-09-12 09:45:50

編程垃圾代碼編程文化

2013-09-12 15:51:04

編程文化垃圾代碼移動開發

2009-09-21 10:14:51

2013-02-27 10:11:06

代碼審查ThoughtBot

2011-04-13 10:16:41

編程習慣

2015-08-19 13:35:56

編程代碼審查開發者

2014-03-13 11:08:42

結對編程代碼審查

2012-08-09 09:10:56

代碼審查代碼

2012-11-22 09:51:14

2022-07-08 15:09:06

欺詐隱私泄露

2011-06-23 19:05:01

SEO

2013-08-08 12:42:33

IT健康飲食習慣IT人士健康

2020-02-18 09:37:46

數據泄露安全互聯網

2011-03-29 12:41:49

編程

2012-03-15 16:52:39

JavaCodePro Ana

2024-05-23 12:09:01

2015-04-09 10:12:58

代碼審查工具減少編程錯誤
點贊
收藏

51CTO技術棧公眾號

欧美日韩午夜| 中文字幕一区日韩精品| 亚洲欧洲99久久| 日本大胆人体视频| 福利电影一区二区三区| 男女无套免费视频网站动漫| 亚洲激情成人在线| 黄色大片在线播放| 视频在线观看一区二区| 国产视频网站一区二区三区| 久久免费国产视频| 都市激情国产精品| 不卡av在线免费观看| 国产精品人成电影在线观看| 人体久久天天| 国内精品久久国产| 久久久久9999亚洲精品| 91青青在线视频| 久久躁日日躁aaaaxxxx| 美女视频一区免费观看| 91九色在线观看视频| 午夜视频在线观看一区二区 | 亚洲欧美国产精品桃花| 久久精品国产亚洲| 在线日韩影院| 日韩在线观看你懂的| 波多野结衣在线影院| 五月综合激情网| 老司机精品影院| 欧美成年人视频| 久热国产精品| 超碰在线一区二区三区| 亚洲视频网站在线观看| 欧洲grand老妇人| 成人免费毛片网| 成人自拍视频网| 欧美精品成人91久久久久久久| 亚洲精品99| 久久精品国产亚洲aⅴ| 狠狠97人人婷婷五月| 91麻豆精品国产91久久久更新时间| 视频一区中文| 国产久一道中文一区| 久久久久久**毛片大全| 亚洲精品tv| 日本亚洲导航| 久久精品久久久久久国产 免费| 国产综合av一区二区三区| 国产一本一道久久香蕉| 国产二区三区在线| 福利在线白白| 久久大片网站| 麻豆成人av在线| 亚洲国产日韩欧美在线观看| 亚洲国模精品一区| 精品日产乱码久久久久久仙踪林| 国产日韩在线一区| 美女mm1313爽爽久久久蜜臀| 黄色成人av| 国产综合视频在线观看| 男人天堂免费视频| 欧美一区1区三区3区公司| 亚洲国产精品99久久久久久久久| 三级成人在线| 无码人妻丰满熟妇区毛片| 久久躁日日躁aaaaxxxx| 午夜激情在线观看| 91理论片午午论夜理片久久| 亚洲精品在线电影| 亚洲欧美日本日韩| 黄色免费在线播放| 亚洲欧美日韩另类精品一区二区三区 | 精品国产凹凸成av人导航| 国产一区二区三区四区老人| 久久久精品区| 日本大片在线观看| 秋霞无码一区二区| 亚洲国产日韩欧美在线图片| 性xx色xx综合久久久xx| 国产成人精品123区免费视频| 色久视频在线播放| 免费看成人片| 精品国产一区二区三区久久狼5月| 亚洲v精品v日韩v欧美v专区| 久久久国产精品午夜一区ai换脸| 欧美一级视频| 欧美日韩伊人| 狠狠色综合网| 国产日产精品_国产精品毛片| 91精品国产自产在线丝袜啪| 欧美性受ⅹ╳╳╳黑人a性爽| 91涩漫在线观看| 天堂电影一区| 成人在线视频一区二区三区| 欧美国产日韩中文字幕在线| 中文字幕一区二区不卡| 99re在线精品| 久久久高清一区二区三区| 亚洲国产激情av| 亚洲国产综合色| 色婷婷激情久久| 精品国产网站在线观看| 日韩精品中文字幕一区二区三区| 欧美性大战xxxxx久久久| 精品国产成人系列| 欧美成人性福生活免费看| 国产精品伦理在线| 亚洲综合激情小说| 国产精品久久久久一区二区三区共 | 成人免费电影网址| 亚洲欧美综合久久久| 亚洲无线一线二线三线区别av| 亚洲毛片视频| 国产精品1区2区| 欧美日韩亚洲视频一区| 久久久国产一区二区三区四区小说 | 一个色综合网站| 国产精品一区二区视频| 老司机精品视频在线| 一本色道久久综合亚洲精品高清| 中文字幕区一区二区三| 成人在线观看亚洲| 另类小说第一页| 日韩一区视频在线| 欧美视频在线观看 亚洲欧| 99视频精品在线| 2020国产成人综合网| 性色av一区二区| 久久久久久久中文| 欧美日韩一区二区视频在线| 国产日韩一区在线| 国产日本欧美一区| 成人91视频| 国产精品∨欧美精品v日韩精品| 久久精品视频中文字幕| 国产精品视频入口| 性色av一区二区三区免费| 欧美成人国产va精品日本一级| 午夜成人免费视频| 亚洲综合免费观看高清完整版在线| 欧美激情在线免费观看| 国产不卡视频在线播放| 成人av手机在线观看| 日韩中文首页| 精品视频网站| 欧美五码在线| 亚洲精品第一| 美女羞羞视频在线观看| 日本xxxxxx| av福利精品| 国产麻豆一区二区三区| 精品99久久| 久久66热re国产| 亚洲综合偷拍欧美一区色| 精品国产电影一区| 日韩电影免费观看中文字幕| 在线播放亚洲激情| 精品视频久久久久久久| 日日摸夜夜添一区| 国产欧美久久久久久| 亚洲国产日韩美| 综合网插菊花| 大桥未久女教师av一区二区| 91av在线网站| 99国产高清| 日韩中文字幕免费在线 | 午夜精品亚洲| 色综合狠狠操| 26uuu国产一区二区三区| 久久综合狠狠综合久久综合88| 国产欧美日韩三区| 色婷婷亚洲综合| 欧美一区二区三区四区在线观看 | 久久99久久久久久久噜噜| 国产精品91久久| 午夜探花在线观看| 日韩欧美精品在线观看视频| 亚欧精品一区| 精品国产伦一区二区三区观看说明| 欧美高清视频在线观看mv| 成人h动漫精品一区二| 久久不射网站| 日韩中文首页| 精品亚洲欧美一区| 欧美区一区二区三区| 91精品久久久久久久久青青| 日韩一区中文| 国产在线观看免费一区| 亚洲国产精品成人综合色在线婷婷| 亚洲欧洲精品一区二区精品久久久| 精品国产中文字幕| 国产精品va在线播放| 国产ts一区二区| 91在线电影| 免费看精品久久片| 免费av在线一区| 精品999视频| 国产精品私人影院| 日本国产中文字幕| 欧美成人69av|