程式設計心法:化繁為簡,執簡御繁(上)
程式設計心法:化繁為簡,執簡御繁(下)
"開發系統時,通常必須面對各式各樣看似十分繁雜多變的需求,但往往需求與需求之間本質上又有共通之處,倘若能夠掌握,就能更輕易處理這多變的需求。 "
"倘若,發現了qsort()的實作有問題或需要加以擴充,只需要修改這唯一的一份qsort(),其餘呼叫qsort()來針對不同型別進行排序的程式碼,完全不需要更動,重複程式碼在維護上的問題也完全消失。 "
"我們需要針對五花八門的型別進行快速排序,這是可以看到的繁複表象,但在繁複的表象之中,有一個很簡單的核心,就是快速排序的演算法本身。倘若我們能夠像這個例子中一樣的「化繁為簡」,那麼便能夠憑藉著既單純又簡化的核心,「執簡御繁」。 "
"此即本文所想要表達的重點,當你能夠「捕捉事物的共通性」建立起程式的核心時,就可以進一步透過「界定事物的相異性」,為不同的需求建立起搭配核心一同使用的殼。 "
"核心所表示的特質就是共通性,而殼所實作的,便是不同需求之間的差異性。「化繁為簡」意謂著透過分析的手段,從看似繁瑣的諸般變化找出共通性,簡單地說,共通性就是化約後的純淨表示。"
"在概念的階層分類體系中,愈往上層愈是一般化,愈是抽象,因為它代表的是底下所有概念的共通概念。而愈往階層分類體系的下方移動,概念就愈具象,所涵蓋的範圍就會愈來愈小。
物件導向的繼承機制,其實就是試著支援人類早已習以為常的知識分類方式。而且物件導向的精神在於,讓程式員試著以理解真實世界的方式,來描述解決真實問題的電腦系統。繼承機制的支援,希望程式員能夠更自然地運用概念分類階層,以真實世界的方式理解軟體系統的開發。"
No comments:
Post a Comment