天天看點

第7.2節 關于面向對象設計的一些思考

以下是老猿在學習《python基礎教程》第3版(magnus lie hetland著,袁國忠譯)過程中記錄的一些筆記,老猿覺得這些理念非常好,是以總結出來供大家共享:

1.    将相關的東西放在一起。如果一個函數操作一個全局變量,最好将它們作為一個類的屬性和方法;

2.    不要讓對象之間過于親密。方法應隻關心其所屬執行個體的屬性,對于其他執行個體的狀态,讓它們自己去管理就好了;

3.    慎用繼承、尤其是多重繼承。繼承有時很有用,但在有些情況下可能帶來不必要的複雜性。要正确地使用多重繼承很難,要排除其中的bug更難;

4.    保持簡單。讓方法短小緊湊。一般而言,應確定大多數方法都能在30秒内讀完并了解

5.    對于其餘的方法,盡可能将其篇幅控制在一頁或一屏内。

确定需要哪些類以及這些類應包含哪些方法時,嘗試像下面這樣做(老猿認為,下面這些思想有點靈活開發的味道):

1.    将有關問題的描述(程式需要做什麼)記錄下來,并給所有的名詞、動詞和形容詞加上标記;

2.    在名詞中找出可能的類,在動詞中找出可能的方法,在形容詞中找出可能的屬性。将找出的方法和屬性配置設定給各個類;

3.    有了面向對象模型的草圖後,還需考慮類和對象之間的關系(如繼承或協作)以及它們的職責。為進一步改進模型,可像下面這樣做。

1)    記錄(或設想)一系列用例,即使用程式的場景,并盡力確定這些用例涵蓋了所有的功能。

2)    透徹而仔細地考慮每個場景,確定模型包含了所需的一切。如果有遺漏,就加上;如果

3)    有不太對的地方,就修改。不斷地重複這個過程,直到對模型滿意為止。

4)    有了你認為行之有效的模型後,就可以着手編寫程式了。你很可能需要修改模型或程式的某些部分,所幸這在python中很容易,請不用擔心。隻管按這裡說的去做就好