跳轉到內容

ROSE 編譯器框架/經驗教訓

來自華夏公益教科書,開放的書籍,開放的世界

我們在這裡收集一些過去經驗教訓需要做的事情。

不要格式化/縮排其他人的程式碼

[編輯 | 編輯原始碼]

教訓

  • 一位開發人員試圖理解一位員工的原始碼。但是他發現程式碼的縮排對他來說不正確。因此,他重新格式化了原始檔並提交了更改。後來,這位員工發現他的程式碼被更改得太大了,他再也無法閱讀它了。
  • 更糟糕的是,人們將難以合併混雜著縮排更改和實際更改的更改。

解決方案

  • 請不要重新格式化你不擁有或不維護的程式碼。

物理位置很重要

[編輯 | 編輯原始碼]

教訓

  • 我們有一名學生被分配了一個辦公桌,它位於一個大房間的角落裡。這臺辦公桌距離其他實習生也很遠。結果,這位學生與其他人的互動減少了。他不得不解決問題時獲得的幫助也更少。

解決方案

  • 位置很重要!坐在你應該經常與之互動的人旁邊。讓你的辦公桌/辦公室對其他人來說容易接近。物理上孤立的辦公室/辦公桌可能會對你的工作效率產生非常負面的影響。

仔細選擇您的開發平臺

[編輯 | 編輯原始碼]

教訓

  • 不知何故,新的實習生預設被分配了 Mac OS X 機器。但他們中的一些人可能不熟悉 Apple 機器,甚至不喜歡 Mac OS X 的使用者介面,包括鍵盤、視窗系統等(對 Apple 產品的愛恨情仇)。因此,他們感到被困在一個不舒服的開發平臺上。我們有一些實習生即使在一個月後也無法在 Mac 鍵盤上流暢地打字。這是不必要的。

解決方案

  • 提前提供選擇:Linux 或 Mac OS X。提醒人們,他們可以選擇自己喜歡的平臺。

為不同的任務使用不同的 Git 倉庫

[編輯 | 編輯原始碼]

教訓

  • 一位開發人員使用同一個 Git 倉庫的不同分支來執行不同的任務:修復錯誤、新增新功能和編寫文件。後來他發現他無法提交和推送一項任務的工作,因為其他任務的更改還沒有準備好。

解決方案

  • 為不同的任務使用獨立的 Git 倉庫。這樣一項任務的狀態就不會干擾其他任務的進展。

非常謹慎地引入軟體依賴項

[編輯 | 編輯原始碼]

教訓

  • ROSE 最初不依賴於 Boost C++ 庫。但後來,一些開發人員看到了 Boost 的好處,並提倡使用它。最終,Boost 成為使用 ROSE 的必備軟體。
  • 但是 Boost 庫也有其缺點:難以安裝(看看我們公開郵件列表中有多少 Boost 問題),缺乏向後相容性(使用舊版本的 Boost 的程式碼在新版本上會出錯),巨大的標頭檔案,包含複雜的 C++ 模板,這會減慢編譯速度,甚至會破壞一些編譯器。
  • 我們仍然在內部就如何處理 Boost 進行辯論。這通常是一個痛苦且情緒化的過程。

解決方案

  • 非常謹慎地引入大型軟體依賴項。否則你會很容易陷入困境。
  • 至少要求那些提倡新的軟體依賴項的人負責維護它 5 年,並同時提供一個關閉它的選項。

儘早並經常建立精確的測試

[編輯 | 編輯原始碼]

教訓

  • 一位開發人員建立的測試過於寬泛,主要是因為它們是在開發後期才包含進來的。這會導致本不應該透過的測試透過,也就是說,即使程式碼已經損壞,所有測試也都會透過。

解決方案

  • 確保測試仔細檢查結果。透過確保你的函式只有一個目的,這會變得容易得多。例如,如果你需要轉換資料並對轉換後的資料進行操作,請將轉換和操作拆分成兩個函式(至少)。

在編碼時保持程式碼可讀性

[編輯 | 編輯原始碼]

教訓

  • 一位開發人員在最初編寫程式碼時沒有添加註釋,後來又回到了程式碼中,不得不經歷一個艱鉅的任務,去理解

他自己的不可讀程式碼。

解決方案

  • 保持變數和函式名有意義。邊寫邊做完整文件,不要留到以後再做。

三思而後行

[編輯 | 編輯原始碼]

教訓

  • 一位開發人員在編寫程式碼時沒有考慮到結構。這導致了臃腫且難以閱讀的程式碼,需要多次

重構。

解決方案

  • 程式設計師必須編碼和設計,而不僅僅是編碼。結構良好的程式碼比結構不良的程式碼更容易閱讀。

記住使用者

[編輯 | 編輯原始碼]

教訓:一位開發人員編寫程式碼時,沒有了解使用者真正需要什麼。這導致了嚴重的重構,如果他一直專注於使用者,這些重構本來是可以避免的,或者至少可以變得更簡單。

解決方案:儘可能向用戶徵求意見。從長遠來看,這將為你節省很多麻煩。

使用者至上

[編輯 | 編輯原始碼]

教訓:一位開發人員編寫了一個相當難懂的元件,而沒有完全理解使用者可能想要用它來做什麼。

解決方案:至少檢查輸入和輸出是否符合使用者期望,這將節省大量時間和煩惱。

參考文獻

[編輯 | 編輯原始碼]

http://www.projectsmart.co.uk/lessons-learned.html

華夏公益教科書