我從別人遺留的的技術性債務中獲得報酬。在我的日常工作中,我見到了很多難以維護的代碼,并且我一次次地看到了很多相似的并可以避免的問題。
我專門從事調試、修改、維護、擴展遺留軟件系統這類工作,我的典型客戶一般都有一個或多或少可以運行的網站或者軟件,但是其開發者都因為各種原因不再維護了,因為商業需求改變導致軟件無法跟上需求;或者我的客戶有一些“幾乎快要完成”的軟件,但是因為預算用光或者計劃有變與開發者分道揚鑣。通常這種軟件會缺少一系列的功能并有一坨bug。
我那些客戶通常被其他程序員告知,需要廢棄已有的所有代碼從頭開始。大部分程序員不喜歡維護代碼,尤其不喜歡維護別人開發的代碼。當程序員寫代碼時,當他們談論到可維護性時,程序員經常會問一些錯誤的問題——想了解這種情況是如何發生的,請參看Matt Duvall的文章《可維護性的神話 |The myth of maintainability》。
以下是一些你可以在你自己的軟件工程中做的“好”事,因為這些事可以幫我找到活干。
不要用版本控制軟件
我經常很驚訝的發現,在過去的幾年里編寫的大型軟件工程竟然不在源代碼版本控制中。如果你不使用版本控制,下一個承接你項目的程序員就沒法確定哪些文件屬于你當前的系統,哪些是淘汰的以及哪些是備份文件,他也無法從提交信息或者修改日志中獲得任何關于代碼的歷史信息。我在我的文章《面向卑鄙的編程介紹 |Introduction to Abject-Oriented Programming》中,介紹了“如何不使用版本控制”。
大量定制你自己的開發環境
千萬不要讓承接你項目的程序員輕易的開始工作。開發軟件時,一定要用特殊版本的編程語言、工具,確保它們與一起交付的操作系統有沖突。像瘋子似的定制你的Eclipse、VisualStudio或者vim環境,然后編寫只能在你定制的環境下才能工作的宏或者腳本。不要制作硬盤鏡像或者腳本以復制你的開發環境,并且不要費勁巴拉寫任何說明文檔——這太直觀啦。
創建一個精心制作的構建和部署環境
把網站部署到一個測試或者產品服務器上的方法,應該看起來像這樣:
|
原文轉自:http://www.kuqin.com/shuoit/20131025/335874.html