我在這裏尋找一點清晰。對於我的一個項目,我寫了一個容器,其中包含一堆不同的幾何形狀。我的界面是這樣的:多個成員函數或一個函數與枚舉
Container::AddTriangle(Point, Point, Point);
Container::AddSquare(Point, Point, Point, Point);
等等等等。我喜歡這個接口,因爲它會進行編譯時檢查,以確保您有所需的數據。然而,在與我的團隊的討論中,有人提出了這個接口來代替:
enum SHAPE { Triangle, Square };
Container::AddShape(std::vector<Point>, SHAPE);
有了它僅具有一種功能,而不是許多提供更乾淨的代碼的說法。雖然我當然更喜歡第一種方法,但我對第二種方法沒有任何爭論。有沒有人遇到過這個選擇?一個選擇是否更好(或者至少是傳統上優先選擇的)?
注:有人提出之前:
Container::Add(Shape)
我想,讓你知道這是不是一個很好的解決我的具體問題。我承諾。
你對形狀做什麼?他們如何存儲在容器中? –
它們最終被存儲在一個圖形結構中,節點包含一個boost :: variant,它的形狀是什麼,連接到表示點的節點的邊(上述問題中的點實際上是內部存儲節點的句柄)。 – Hounddog