我正在打造一款運動產品。我有3班我應該在相關類之間有多餘的方法名嗎?
class Team {
getName // ex: Los Angeles Lakers
getShortName // ex: Lakers
getAbbrName // ex: LAL
}
class Match {
Team getHomeTeam
Team getAwayTeam
Play[] plays
}
class Play {
Match getMatch
String description // "Kobe Bryant scores a 3 pointer!"
}
一個團隊就是任何運動隊。比賽是兩隊之間的比賽。在比賽中,發生的比賽會附加到比賽中。
我有需要回到家/客隊的名稱,簡稱,和縮寫名稱,給定一個Match
或Play
。你更喜歡哪個選項?爲什麼?
選項1 - 呼叫者需要這樣做。例如:
class SomeCaller {
foo() {
Play play = // somehow get a play;
Match match = play->getMatch;
Team home = match->getHomeTeam;
Team away = match->getAwayTeam;
String homeTeamName = home->getName;
String homeTeamShortName = home->getShortName;
String homeTeamAbbrName = home->getAbbrName;
String awayTeamName = away->getName;
String awayTeamShortName = away->getShortName;
String awayTeamAbbrName = away->getAbbrName;
// do something with the team names
}
}
選項2 - 同樣的方法添加到這兩個類
class Match {
Team getHomeTeam
Team getAwayTeam
Play[] plays
String getHomeTeamName() {
Team homeTeam = getHomeTeam();
return homeTeam->getName();
}
// same as above...
String getHomeTeamShortName()
String getHomeTeamAbbrName()
String getAwayTeamName()
String getAwayTeamShortName()
String getAwayTeamAbbrName()
}
class Play {
Match getMatch
String getHomeTeamName() {
Match match = getMatch;
return match->getHomeTeamName();
}
// same as above...
String getHomeTeamShortName()
String getHomeTeamAbbrName()
String getAwayTeamName()
String getAwayTeamShortName()
String getAwayTeamAbbrName()
}
記住我希望得到名稱,簡稱,縮寫名稱,給家庭和客場強隊一匹配或播放對象,所以會有很多方法重複與選項2.