Je construis un produit de sport. J'ai 3 classesDevrais-je avoir des noms de méthode redondants entre les classes liées?
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!"
}
Une équipe est tout simplement une équipe sportive. Un match est un match de sport entre deux équipes. Pendant un match, des jeux se produisent qui sont attachés à ce match.
J'ai besoin d'obtenir le nom de l'équipe à domicile/à l'extérieur, le nom abrégé et les noms abrégés, à savoir Match
ou Play
. Quelle option préférez-vous et pourquoi?
Option 1 - les appelants doivent le faire. Ex:
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
}
}
Option 2 - Ajouter les mêmes méthodes pour les deux classes
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()
}
Gardez à l'esprit que je voudrais obtenir le nom, le nom court, abbr nom, pour la maison et à l'écart des équipes donné une Match ou Play objet, donc il va y avoir beaucoup de duplication de méthode avec l'option 2.