本文最初發表在
理想&美人上。
大家都希望自己參與的項目能夠成功交付,然而影響每個項目是否成功的因素卻千差萬別。在此,根據自己的經驗,說說一些在適當時候有用的方法,可以從一定程度上提高項目成功率的方法。就像設計模式一樣,這些方法的使用過程必然是一個仁者見仁、智者見智的過程。
1. 盡量不要考慮項目外的重用
許多人認為能提高軟件的重用度是最好的,然而每個項目實際情況都會有所不同,在設計項目中的某個模塊、方法時,過多的考慮項目外的重用,必然會參加項目的復雜度,增加時間的開銷。也許有人會說,這會減少下一項目的開銷,試問,下一項目是什么項目?有什么需求?各方面有什么影響因素?有誰會在當前知道這一切。 如果真要重用,應該是在項目結束后再將可重用的部分提取出來,經過修改、優化后做為企業的可重用資產,而不是當前項目中的一廂情愿。
2.經常檢查項目架構
項目架構通常是在項目實現開始前就已確定的東西,是一個總體的設計。然而,在這時,對項目需求的理解、復雜度的估計對還停留在一個初始階段。如果在項目開發過程中不隨著對項目的理解改進架構,必然讓項目中的成員都按錯誤的方法開發項目。所以,必須經常檢查項目的架構,進行必要的重構。
3.重構
有人說,都寫了這么多了,再修改不是浪費時間嘛。他可能沒有想過,一個下午的重構可以加快以后幾個月的開發速度,這節省下來的時間是無法想象的。再者,通過重構,通常能想到更多簡單的方法來代替現有的實現,這樣的經驗,同樣可以簡化其他模塊的開發。
4.避免過度集成,讓每個模塊只做自己的事
一個常見的例子是,在業務系統中通常會有許多的審批,很多人一下子肯定會想到把審批做成一個通用的模塊。這是沒有問題的,然而通常的問題是,太多的人將審批結束后的業務處理也放到了審批模塊的業務邏輯中,其實,那些是各業務模塊自己的事,審批應該只完成審批即可,至于審批結束后怎么辦,讓該干這事的模塊自己去處理。
5.避免過度靈活
設計和代碼并不是越靈活越好的。一個常見的例子是,使用泛型時可以使類或者方法操作不同的對象,然而,在 .NET 常用的 N 層架構中,如果一系列的類本來就是針對某個特定實體的操作,就沒有必要還指定為泛型,再在使用時指定為使用特定的實體類。這頗有畫蛇添足的感覺。
6.減少錦上添花的功能
頁面無刷新,更酷的顯示效果等等,對于業務系統來說都是些錦上添花的事,如果因為這些而使業務界面非常復雜,給業務處理帶來一系列的問題,極端情況是業務處理無法繼續時,再漂亮的界面也是無用的。一個忠告時,僅在確保業務處理正確進行的前提下再考慮其他的。這一點有一個前提是與用戶進行必要的溝通。
7.適當拆分
這一點與 4 類似。盡量降低每個模塊的復雜度,讓腦力勞動轉化成體力勞動。一個常見的例子是,通常對某個表單都會有增加、修改、刪除和查看的功能。但是,前三種操作通常僅在某個功能點上、特定狀態和特定權限的人進行操作(也許僅在在系統中的唯一一個界面中)。而查看操作卻會分布在項目的各個角落,如果將這四種操作都放在同一界面中,雖然可以減少界面數,但增加的卻是這一界面的復雜度,要對各種狀態、條件進行必須的判斷來進行界面元素的只讀設置,這個復雜度的增加是指數級的,而如果將查看拆分開,工作量將是線性的,就算要做10個查看界面,總比復雜度變成 10*10 要容易處理得多,況且還可以組件化。
這些都是由項目中的經驗而來,總的來說,都是為了降低項目的復雜度,提高開發的效率。需要時可以適當的加以使用。