我在python開發一個文件類,可以讀取和寫入文件,包含XYZ座標列表。在我的程序中,我已經有一個Coord3D類來保存xyz座標。返回一個對象和回訪元組
我的問題是相對於getCoordinate(index)方法的設計。我應該返回一個浮點數組,還是一個Coord3D對象?
在第一種情況下,我變得非常低耦合的,但後來我可能會無論如何都要實例與所獲得的值Coord3D對象,雖然文件類之外。在第二種情況下,我將使用與Coord3D類緊密結合的文件類。
請注意,我覺得有沒有上述兩種溶液之間的巨大差異,但我想讀你的答案和它背後的原因。
編輯:回顧一下我到現在爲止的答案,它看起來像有沒有皆伐選擇。據說(適當地)python不是Java,你不需要專門的類來處理任何事情,只是因爲你需要通過語言體系結構。然而,在我的情況下,我有以下情況:
- 我正在使用Coord3D對象的庫,其中原樣使用Coord3D對象。使用它會增加我的庫的凝聚力,因爲數據類型將被統一使用。
- 的Coord3D對象有狀態和行爲。事實上,Coord3D對象將座標和單元集中在一個實體中。 Coord3D對象之間的操作將考慮潛在的不同單位,並相應採取行動。
- 我可以把集中控制代碼插入到Coord3D類實例化拒絕,例如,長度爲4,或無單位的陣列。如果我使用元組,我無法執行此檢查。而且,如果某個方法接受Coord3D,則可以保證它的前期格式良好(可以加粗並檢查isinstance或檢查接口)。元組可以包含無效數據。雖然錯誤處理蟒蛇方法進行,其中的麻煩發生,一類阻止我有一個XYZ座標做出來的三根弦的是某種有益的(如果錯了糾正我,請)
在另一方面,使用一個元組具有以下優點:
- 少佔用資源的,在巨大的
- 簡單的設計情況相當危急。更多課程意味着更復雜的設計。元組是一種標準的數據類型,它很好理解,並且可以輕鬆解包。個性化的課程不是。
- 使用元組,XYZFile類與庫的其餘部分完全分離(因爲它不使用Coord3D對象)。這意味着它可以作爲一個獨立的實體完全重用。
進一步的意見非常歡迎!
不確定我喜歡這一點。它似乎揭露了一些無用的細節。我認爲選擇一個代表並堅持下去會更好。 – 2009-04-27 16:40:31