重構和復用是軟件的一個古老話題。
在日常的軟件項目開發的過程序中,如何保證團隊代碼的強健,同時在不斷變化的需過程中最大限度的保障代碼的一致性,是項目開發中的難以控制的,我們可以藉助各種源碼管理和標準工作流程製度和增加各種崗位人手來進行控制,但隨著時間的推移,由於各種水平的開發人員,加入各種藕合的非藕合的功能,代碼變得難以管理。
但市場和客戶對我們的軟件總是看起來讓人不可理喻,當我們信心滿滿的把軟件產品交付給我們客戶時依然要應對各種指責,有的需求反复,“不,這完全沒有達到我們當時的需求,和我想的不一樣”,在不斷的變化,不斷的反复,代碼被修改得面目全非,團隊陷於無助之中。
從實際的管理中,我們不能完全消除代碼的藕合、代碼的混亂,每一個程序員心中都有自己的江湖,所謂“文無第二、武無第一”,每個程序員都會認為自己的代碼是沒有任何問題的。作為項目的管理者,只能最大限度的降低程序人員的人為因素來的變化,讓標準化的代碼在項目佔有越大的份量,如果這是標準代碼是由工具產生,那麼在需求發生變化時,重購代碼也變得非常輕鬆且易控。
如果在構建項目之初的與客戶需求交流中,以工具來生成標準代碼並因此為用戶快速構建一個可見的Demo,那麼項目需求就會變得更加明確、易控。儘管這與最終交付的產品還有很大的差距,但仍然可以減少客戶需求的明確性。如果我們把可控代碼與非控代碼在生產時進行分離,那麼當後期客戶需求變化時,仍然可以讓工具重構變化的需求。
讓技術優秀的人員構建基礎庫,變把日常開發中用的常用功能模板化,這樣,框架-工具-模板,就會在團隊中成為技術、經驗的容器,讓再開髮變得更加容易、可控、穩定。我們不需要把大把的時化在那些重複且繁重的屬性代碼編寫,並不斷的進行各種屬性的拷貝,在需求變更時,又化大量時間雲矯正。我們應該讓更多時間去與客戶交流業務需求,編寫強健的應用設計上,那麼我們應該使用正確的框架、同時逐漸累積可複用的功能支持庫,並使功能模塊低耦合,使用代碼工具將各種功能調用模板化,這樣不僅保證了編碼上的一至性,同時最大限度降低編碼的勞動強度,減少重複簡單代碼所消耗寶貴的時間,也能使組織和團隊在協調技術的一至上化更少的時間和金錢的投入。
一個好的架構能應對不同的應用需求,但是沒有一個可行的,萬能的架構,不然我沒在這裡就不用討論架構的問題了。這裡不僅是代碼的問題,隨著時間的推移,各種編程技術的進步,讓一些原本複雜的問題變得簡單,功能更容易實現,而客戶需求總是貪婪的,所要求的更加複雜,使得新的需求產生,技術實現同樣的需要更多的精力和時間,就因為如此,我們不應該同時也沒必要把時間和精力耗在無盡的重構中,而應該讓編寫代碼更加工具化、模板化換個比較時尚的詞,更加智能化。