??關于面向對象設計的書籍已經很多,盡管這并不是本書所關注的主題,但還是給出一些要點。
- 將屬于一類的對象放在一起。如果一個函數操縱一個全局變量,那么兩者最好都在類內作為特性和方法出現。
- 不要讓對象過于親密。方法應該只關心自己的實例的特性。讓其他實例管理自己的狀態。
- 要小心繼承,尤其是多繼承。繼承機制有時很有用,但也會在某些情況下讓事情變得過于復雜。多繼承難以正確使用,更難以調試。
- 簡單就好。讓你的方法小巧。一般來說,多數方法都應該能在30秒內被讀完(以及理解),盡量將代碼行數控制在一頁或者一屏之內。
??當考慮需要什么類以及類要有什么方法時,應該嘗試下面的方法。
??(1)寫下問題的描述(程序要做什么),把所有名詞、動詞和形容詞加下劃線。
??(2)對于所有名詞,用作可能的類。
??(3)對于所有動詞,用作可能的方法。
??(4)對于所有形容詞,用作可能的特性。
??現在已經有了面向對象模型的草圖了。還可以考慮類和對象之間的關系(比如繼承或協作)以及它們的作用,可以用以下步驟精煉模型。
??(1)寫下(或者想象)一系列的使用實例,也就是程序應用時的場景,試著包括所有的功能。
??(2)一步步考慮每個使用實例,保證模型包括所有需要的東西。如果有些遺漏的話就添加進來。如果某處不太正確則改正。繼續,直到滿意為止。
??當認為已經有了可以應用的模型時,那就可以開工了。可能需要修正自己的模型,或者是程序的一部分。幸好,在Python中不用過多關心這方面的事情,因為很簡單,只要投入進去就行。