「沒有詳細設計。沿用現行。請參考原始碼了解規範。」
在某個現場聽到這樣的話時,我心裡隱約感到「這可能不妙」。
雖然有設計書,但內容幾乎是空白的,只有稍微寫了一些畫面形象和資料表定義。關鍵的處理流程,以及為什麼會這樣的討論幾乎沒有提及。
即使詢問設計負責人,回來的答案大致上也是這樣。
「因為是沿用現行,所以細節請參考原始碼」
當我打開期待中的既有程式碼時,那裡等著我的卻是另一種絕望。
「如果就這樣模仿下去,未來根本沒有人看得懂……」
當我這樣想的時候,我第一次真切地感到「必須讓程式碼能夠傳達設計意圖」,於是我拿起《程式設計原則》。
老實說,在那之前我的想法相當依賴他人。
我以這種心態進行工作。
對於「設計書和程式碼是否對應得當」幾乎沒有意識。每當在調查錯誤時,
這樣艱辛的工作讓我有些無奈,卻也半心半意地放棄了。周圍的實作者大致也有相同的感受,所以越加難以產生疑問。
因為對框架的特性了解不深,所以試圖自己實現Spring已經提供的功能,反而一再重複發明輪子。
我真心認為,心懷不滿地寫程式是「正常」的。
讀完《程式設計原則》,最打動我的是,並不是那些細小的技巧,而是以下的思考方式。
設計書不可能完美,最終留下的「事實」只有程式碼。
直到那時,我一直認為,
但當我被扔進一個幾乎沒有詳細設計的現場時,實感卻是正好相反。
「那麼,我寫的程式碼就是能夠長久保存的設計書了吧?」
一想到這裡,「程式碼就是設計書」這句話,不再是他人的空話,而是直接落在我自己的責任上。
既然無法立即大幅改變設計,我最先著手的就是最接近的地方。
要仔細考慮變數、方法和類別的名稱。
實施後,發現比我想像中還要困難。
也就是說,
名稱決定不了 = 責任不明確的徵兆。
因此,當遇到名稱困境時,我決定這是「重新思考設計的時機」,開始進行以下的循環。
雖然距離完美仍遙不可及,但我感覺自己已經走出了「依照設計書寫程式就好的消極風格」的一步。
我還有一個改變是對JavaDoc的使用。
之前的我,
在設計書薄弱的現場工作後,我開始思考,
如果設計書不可靠,那麼只能在程式碼中清楚說明意圖。
從那之後,我在撰寫JavaDoc時,開始意識到以下幾點。
不僅是「這樣運作」的事實,還附上「為什麼這樣做」的理由,盡可能保留。
我決定在心中將設計書不完美的前提下,
將JavaDoc視為「第二份設計書」。
當然,現階段的我還未寫出理想中的程式碼。
這樣的情況如實存在。
不過,我至少仍然會意識到這幾點。
即便無法做到完美設計,我的目標是讓
後來閱讀的人「知道我想做什麼」。
在這一點上,這就是我對「程式碼就是設計書」的處理方式。
儘管我並沒有什麼高大上的頭銜,只是一名普普通通的實作者,但我相信,
「試著把程式碼當設計書來寫」這個觀點,相信是有相當效果的。
並不需要一次做出大改變,先從
開始著手,至少能在「未來的我」閱讀時,顯著減少壓力。
原文出處:https://qiita.com/tomo19950806/items/cafe6f78776d4bc45252