Windows 機密文件:採集指紋
最後一位接觸程式碼區段的人員終究必須對程式碼執行順利與否負起責任。
Raymond Chen
在軟體發展中有不成文法律:最後一行代碼進行更改的人將成為事實負責追溯到代碼行的任何問題。 即使你所做的全部工作就是在逗號之後插入一個空格或修復的本地變數的拼寫,你的指紋是對代碼。 當事情出錯時,代碼警方會來敲你的門。
大多數原始程式碼控制系統中有一個工具,它會自動標識最後的人對檔進行更改。 它還可以生成檔清單,其中每一行代碼注明與上次修改代碼的人的姓名。
在某些專案中,可能有函數或元件,所以有問題的人避免如果可能作出的任何更改。 他們擔心對它有他們的指紋會讓它們把問題最終追溯到該代碼的回轉的現場。
再見
我以前的同事之一採取了這一傳統的本能地歸咎于最後觸摸一個檔的人的任何缺陷和它作為告別惡作劇的基礎。 他離開加入 Microsoft 內部的另一個專案團隊前的最後檔 》,作為他犯了跨越成百上千的檔的更改。 它打動了每個檔的每個關鍵元件。
與此巨大變革提交相關聯的注釋了標題"轉換為 Unicode 寬"。在大量詳細的意見中,他道歉他是"能夠轉換專案,很大一部分,但它並不是所有"。評論還解釋了什麼更改整個專案完成這項工作所需的代碼。 他還注意到一些可能遇到的"上限"。
越多,你讀過的評論,你越想知道他正經歷什麼樣的精神錯亂。 評論討論特別編譯器擴展的創建在地方 (移,使空間的所有其他本地變數) 和其他瘋狂代碼更改動態地擴大的堆疊緩衝區的 MAX_PATH,像一些基本常數的更改。
當你其實學習檔透露這個笑話他改變了。 變化中的每一個檔是空的提交。 他沒有更改單個代碼行。 在更改集只是為了顯示檔。
這個惡作劇了很長一段時間,主要原因在於其計時持久的影響。 不久,我的前同事犯下這個笑話後,專案管理團隊決定創建一個資料庫,跟蹤哪個開發商是存儲庫中的每個檔的主要連絡人。 最初填充此資料庫,他們遵循的"最後一人提交檔的更改"規則。 因為我的同事最近提交了關鍵的元件中的每個檔的更改,這些關鍵的元件中的幾乎每個檔結束了連他的名字。
至少一年以後,任何人或任何諮詢資料庫的自動化的工具將我的同事時發送電子郵件他修改的檔之一,他們發現一個問題。 他將不得不回問他們看一看它和更新資料庫條目來引用適當的所有者,舊隊友轉發電子郵件。 這是宇宙回收期為造成他告別惡作劇在首位。
Raymond Chen 的 Web 網站,新的舊的東西,和相類似的標題書 (艾迪生 - 衛斯理,2007年) 處理 Windows 歷史,Win32 程式設計和隱喻的停車場。