關於面向物件設計的一些思考
1 將相關的東西放在一起。如果一個函式操作一個全域性變數,最好將它們作為一個類的屬性和方法。
2 不要讓物件之間過於親密。方法應只關心其所屬例項的屬性,對於其他例項的狀態,讓它們自己去管理就好了。
3 慎用繼承,尤其是多重繼承。繼承有時很有用,但在有些情況下可能帶來不必要的複雜性,要正確地使用多重繼承很難,要排除其中的bug更難。
4 保持簡單。讓方法短小緊湊。一般而言,應確保大多數方法都能在30秒之內讀完並理解。對於其餘的方法,儘可能將其篇幅控制在一頁或一屏內。
確定需要哪些類以及這些類應包含哪些方法時,嘗試像下面這樣做。
(1)將有關問題的描述(需要程式做什麼)記錄下來,並給所有的名詞、動詞和形容詞加上標記。
(2)在名詞中找出可能的類。
(3)在動詞中找出可能的方法。
(4)在形容詞中找出肯的屬性。
(5)將找出的方法和屬性分配給各個類。
有了 面向物件模型 的草圖後,還需要考慮類和物件之間的關係(如繼承或協作)以及透明的職責。為進一步改進模型,可像下面這樣做。
(1)記錄(或設想)一系列用例,即使用程式的場景,並盡力確保這些用例涵蓋了所有的功能。
(2)透徹而仔細地考慮每個場景,確保模型包含了所需的一切。如果有遺漏,就加上;如果有不太對的地方,就修改。不斷的重複這個過程,直到對模型滿意為止。
有了你認為行之有效的模型後,就可以著手編寫程式碼了。你很可能需要修改模型或程式的某些部分,所幸這在python中很容易,請不用擔心。只管按這裡說的去做就好。