2010-04-25 2 views
2

Je rencontre un problème avec la dénomination d'une méthode pour une application de base de données.Nom de la méthode singulière pour un argument d'objet unique, pluriel pour une liste?

Dans mon instance Database, j'ai une méthode qui peut supprimer un objet Agreement de la base de données. Cependant, je veux être en mesure de supprimer plusieurs Agreement s à la fois, pour pouvoir utiliser les transactions. Le problème est que j'ai aussi une surcharge pour supprimer un seul objet Agreement.

Essentiellement, ma structure est comme ceci:

public class Database 
{ 
    // ... 

    public void RemoveAgreement(Agreement a) 
    { 
     // ... 
    } 

    public void RemoveAgreement(IEnumerable<Agreement> agreements) 
    { 
     // ... 
    } 
} 

Mais cela peut être source de confusion, car la surcharge avec la liste des Agreement s a un nom singulier, en dépit d'être intrinsèquement pluriel.

Ma question est, comment dois-je structurer cela? Dois-je avoir deux surcharges avec le nom RemoveAgreement(), ou RemoveAgreements()? Ou devrais-je utiliser deux méthodes distinctes, au lieu de surcharges?

Merci.

Répondre

6

Je dirais que pour la méthode qui reçoit la liste en tant que paramètre le nom RemoveAgreement n'est pas correct pour la raison que vous décrivez.

Je l'appellerais RemoveAgreements

Pour le nom de votre classe (base de données), je dirais que vous utilisez comme DAO pour tous vos entités.

Si vous utilisez cette classe uniquement pour les entités de l'accord que j'aurais cette 2 méthodes

public void Remove(Agreement agreement)

et

public void Remove(IEnumerable<Agreement> agreements)

+0

Oui, c'est un peu s application de centre commercial, il suit seulement trois types d'objets, donc je me suis dit que ce serait moins compliqué d'utiliser un seul DAO. – mgbowen

0

Je recommande d'utiliser des noms distincts, et de faire une surcharge de la version plurielle qui prend un params Agreement[].

0

Voici ce que je ferais dans cette situation:

public void RemoveAgreement (Agreement agreement) 
{ 
    // Do Stuff 
} 

public void RemoveAgreements (IEnumerable<Agreement> agreements) 
{ 
    foreach (Agreement a in agreements) 
    { 
     RemoveAgreement(a); 
    } 
} 
Questions connexes