在軟體開發中,使用物件導向編程方法是一种放長線吊大魚的策略,首先要高瞻遠矚,然後精耕細作,最後全面開花完成軟體開發工作單位。
物件導向編程思想是適應當前軟體開發規模原來越大,複雜度越來越高的情況。軟體開發的工作量隨著軟體規模的增加而呈非線性增長,軟體規模越大,軟體開發工作量增長的速度越來快。而使用傳統的面向過程的編程方法,開發人員的工作量和軟體開發工作量是成正比的,因此當軟體規模很大時,開發人員的工作量將非常巨大,從而導致軟體開發成本急劇上升,這對於商業軟體開發是不可行的。而軟體客戶的複雜的需求是客觀存在的,是需要滿足的,因此業界開始使用物件導向的編程方法來降低軟體開發成本。【袁永福 http://www.cnblogs.com/xdesigner】
從宏觀上看,物件導向編程思想的最大的作用就是將一個整體上複雜的軟體功能拆分成多個功能簡單的軟體功能,然後以較低的成本實現各個簡單的軟體功能,最後進行模組整合形成一個完整而複雜的軟體功能來滿足使用者需求。採用的是分割包圍,各個擊破的策略。
如所示,陰影部分的面積就是軟體開發工作量。當採用面向過程的軟體開發方法,當客戶需求很複雜時,軟體開發工作量將非常大,而採用物件導向的軟體開發方法時,開發人員可以將複雜的客戶需求拆分成兩個較為簡單的客戶需求,然後逐一開發,最後進行整合實現所需的功能,此時軟體開發工作量降低了一半,是否採用正確的方法,效果的對比是驚人的。因此採用物件導向的軟體開發方法,以較低的成本開發客戶需求複雜的商業軟體成為現實。
從軟體開發過程看,物件導向編程思想強制添加了一個軟體抽象的步驟,迫使軟體開發人員需要跟深入的瞭解和分析使用者需求,從而增加了軟體開發流程的穩定性和正規性。
從實現方法上看,物件導向編程思想更加符合人們對客觀事物的理解方法。考察人們在理解客戶事物的過程,人們會有意無意的將諸多事物進行分類整理和對比。【袁永福 http://www.cnblogs.com/xdesigner】
比如人們經過大量的認識,把汽車抽象理解為有至少4個輪子和2個車軸的機動車輛,而客車就是專門運輸人員的汽車,公交車就是任何人交費就可以乘坐的客車。於是形成了“機動車—汽車—客車—公交車”這4種客觀事物和3個派生關係構成的關於汽車的認識。這個認識方式學習成本低,速度快,知識能重複利用是其最大的優點。
若不用這種分類比較的方法,則汽車就定義為至少4個輪子2個車軸的機動車;客車就是專門運輸人員的至少4個輪子和2個車軸的機動車;公交車就是任何人交費就可以乘坐的專門用於運輸人員的至少有4個輪子和2個車軸的機動車。對於兩種認知方式可以進行如下對比【袁永福 http://www.cnblogs.com/xdesigner】
事物 |
分類對比 |
不分類對比 |
汽車 |
至少有4個輪子和2個車軸的機動車。 |
至少有4個輪子和2個車軸的機動車。 |
客車 |
專門運輸人員的汽車。 |
專門運輸人員的至少4個輪子和2個車軸的機動車。 |
公交車 |
任何人交費就可以乘坐的客車。 |
任何人交費就可以乘坐的專門用於運輸人員的至少有4個輪子和2個車軸的機動車。 |
顯而易見,若不採用分類對比的認知方式,人們認知事物的成本就大為增加,相信任何人都沒能力能認識這個世界的繁雜事物的。但事實上,智力正常的人都自覺地採用這種分類對比的認知方法,從而輕易的認知周圍所有的事物。
軟體開發也一樣,軟體是開發人員對客戶需求的認知的表述。不理解功能需求就不可能開發出正確的軟體。就像汽車一樣,使用者需求也是客觀存在的事物,面對複雜的客戶需求,採用分類對比的方式是明智之舉。因此物件導向的編程方法就是分類對比的方法在軟體開發中的具體實現。
分類對比的認知方式最大的優勢就是知識的重複利用,於是物件導向編程思想最大的優勢就是代碼的重複利用。代碼的重複利用有兩大好處,一個就是代碼壽命明顯變長,能很大的保護客戶的投資,另外一個就是能層層積累,降低對新知識的學習量。【袁永福 http://www.cnblogs.com/xdesigner】
代碼就是客戶已有的投資的結果,商業軟體開發人員應當要充分的考慮到對客戶已有投資的保護,在成本允許的情況下舊代碼應當盡量儲存。
代碼是軟體的細胞,代碼的長壽是軟體長壽的基礎,也是客戶的投資價值最大化的基礎。