2012-10-25 44 views
2

當爲遊戲設計一個API時。將數據結構保持私有性還是將結構返回給開發人員/誰曾經使用API​​被視爲優秀設計?所以這裏是一個例子。兩個相反的API遊戲設計

假設我有一個棋盤遊戲API。以下兩個例子中的哪一個會被認爲是「更好」?請注意,就這個問題而言,我認爲棋盤的大小可以變化,並由開發者控制。

public void createboard(ChessBoard board); 
public void move(Player playerNumber, Move move); 

public void createboard(int x, int y); 
public void move(Player playerNumber, int from[], int to[]); 

據我瞭解,有可能是沒有更好的答案,它只是一個設計決策的問題。我只是想看看其他人的想法,或者是否有任何人有任何有用的提示。

基本上,我假設遊戲包含一個名爲ChessBoard的對象,該對象包含實際電路板的二維數組。

第一個示例要求開發人員創建對象並將其傳遞,並要求開發人員實際知道底層數據結構是什麼。

但是,第二個要求開發人員只通過數字。這會要求開發者使用它來維護自己的數據結構。

您會考慮哪種方法更好的設計?有小費嗎?

回答

1

當你公開API時,你隱藏的內部實現越多越好。否則,由於您不想使用以前的API修訂版打破與開發人員的二進制兼容性,您將來可能會限制自己的進一步增強/更改。 (在'真實世界'的情況下,客戶和客戶之間可能會就API的協議書面達成書面協議,聲明在未得到客戶的明確許可的情況下不能被破壞)。

您應該着眼於允許通過API進行配置,但不能將自己內部鎖定到任何特定的實現。這比聽起來更難,所用的語言也是一個因素。

1

在我看來,這將是多麼重要的你想要你的「引擎」。

如果您只想要顯示國際象棋,您可以從API用戶隱藏真實的棋盤。如果您希望API用戶能夠將引擎擴展到Archon克隆,那麼您希望他能夠將電路板擴展到他的喜好。