Optimisation du code pour le comportement commun des tranches de collection
Dans le contexte du travail avec des collections d'intervalles semi-ouverts, tels que les horloges et les périodes, une préoccupation majeure est de trouver l'intervalle englobant pour un temps donné pour les deux types d'intervalles. Cette tâche répétitive nécessite un moyen efficace de définir un comportement commun pour ceux-ci. collections.
Considérations sur la conversion
Une approche consiste à convertir un type de tranche en un autre. Cependant, la méthode recommandée consiste à créer une nouvelle tranche et à convertir explicitement chaque élément. Par exemple, pour convertir une tranche de ClockIntervals en HalfOpenIntervals :
func ToIntervalsFromClockIntervals(clockIntervals []ClockInterval) HalfOpenIntervals { intervals := make(HalfOpenIntervals, 0, len(clockIntervals)) for _, clockInterval := range clockIntervals { intervals = append(intervals, clockInterval) } return intervals }
Exploiter la composition
Une approche alternative consiste à utiliser la composition pour éviter la duplication de code. Créez la structure de base BasicInterval, qui contient l'implémentation des fonctions de tri et GetEnclosingInterval. ClockIntervals et PeriodIntervals héritent de BasicInterval et disposent de méthodes pratiques qui pointent vers des tranches internes.
Éviter la surgénéralisation
Il est important de noter qu'une généralisation excessive peut introduire de la complexité et réduire la lisibilité du code dans Go. Dans certains cas, il peut être plus pragmatique d'accepter une certaine duplication. de code pour différents types. Cette approche peut souvent conduire à un code plus propre et plus maintenable à long terme.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!