我有2個類,玩家和遊戲以及一個名爲get_player_games($ player_id)的方法。這個方法屬於哪個類?去哪個班的方法?
我似乎遇到了這個問題,我並不是100%確定該方法應該進入哪一類。它只是一個偏好問題嗎?
謝謝
我有2個類,玩家和遊戲以及一個名爲get_player_games($ player_id)的方法。這個方法屬於哪個類?去哪個班的方法?
我似乎遇到了這個問題,我並不是100%確定該方法應該進入哪一類。它只是一個偏好問題嗎?
謝謝
我把它看作:
遊戲
類遊戲存儲有關遊戲的信息。遊戲包括當前的遊戲細節,如分數,玩家(在遊戲中)以及其他細節。 一次可能有一個或多個遊戲。
球員
級的球員存儲有關遊戲的玩家信息。玩家包括玩家的詳細信息,例如姓名,UID,聯繫人和其他詳細信息。
所以,如果你需要一個玩家的當前遊戲列表,你需要有一個遊戲列表和一個列表來存儲玩家。這感覺像一個靜態的方法。
那麼......它去哪兒了?我不會在Game和Player類中說。爲什麼不是一個遊戲課?一個......
所以,對我來說,你需要一個遊戲類,讓你靜態調用有關什麼遊戲進行中,誰在玩,高分列表等信息列表...
這裏有一種想法:一個遊戲可以有一個玩家。一場比賽可以有2名球員。一個遊戲可以有N個玩家。這聽起來不錯嗎?
這個怎麼樣:玩家可以是1場比賽的一部分。玩家可以是2場比賽的一部分。玩家可以成爲N場比賽的一部分。
現在,想想你的應用程序是如何構建的。以上哪一項最適合?答案在很大程度上取決於它是否是遊戲和玩家之間的一對多關係,玩家和遊戲之間的一對多關係。
當然,如果它是多對多的關係,那麼這兩個類可能都需要這種方法。
只要觸及這個答案,你可能想寫兩種方法; get_player_games($ player_id)會進入你的'遊戲'類,get_player_games()會進入你的'player'類,在方法體內使用它自己的id。 – 2011-01-23 06:47:53
這是一個典型的交叉參考類情況 - 要完全客觀,它可以在任何一個類中進行。假設一個玩家可以有多個遊戲並且一個遊戲可以與多個玩家相關聯,這真的是一個偏好問題。這就是說,我一直從你首先想到的方式來命名方法,從哲學角度來看它 - get_player_games()聽起來像你對某個特定玩家的遊戲感興趣。玩家是感興趣的主題(基於方法名稱的有限英語語法),遊戲恰好是與此相關的細節。如果您說過get_game_players()或get_games_for_player(),那麼我會說遊戲是感興趣的主題,而不是玩家。顯然,我偏向於你首先選擇的名詞(同樣,從偏見的英語語法角度來看),但是既然你可以爭辯說該方法屬於任何一類,它是唯一可以使用的基礎這樣的情況。
再一次,這是一個任意的決定,但我一直傾向於遵循方法命名的修辭方式向我暗示它屬於哪一類。
+1我真的很喜歡英語語義學的方法。這實際上就是面向對象的編程,用名詞來描述對象和動詞來描述行爲。 – jmort253 2011-01-23 07:06:13
假設一個Game
對象模型那麼該方法顯然不屬於那裏,因爲任何給定的遊戲都不知道其他遊戲。可以想象,一個對象可以保存玩家參與的所有遊戲的列表。但是你說這個問題的方式表明我們沒有提及一個Player
對象,而只是一個玩家ID。因此,Player
也不起作用。
聽起來這種方法屬於類MatchHistory
或Tournament
或Ladder
或類似的東西。
你會如何提出在「遊戲」類中關聯玩家和遊戲?如果我們有玩家名單和一系列遊戲,我們如何獲得玩家A的遊戲? – jmort253 2011-01-23 07:05:10