2012-05-17 8 views
5

Esiste la convenzione di denominazione standard per una classe che interagisce con il database (cose CRUD o verifica duplicazione). In questo momento ho appena nominato come Helper, ad esempio, un nome "Sottoscrizioni" Una classe che interagiscono con quel tavolo si chiamerà "SubscriptionHelper"Convenzione di denominazione per la classe che interagisce con il database

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 

namespace LoopinWineBackOffice.Helper 
{ 
    public class SubscriberHelper 
    { 
     public static bool IsEmailAlreadyInUsed(string email) 
     { 
      using (var dc = new LoopinWiineContainer()) 
      { 
       return dc.Subscribers.Any(item => item.Email==email.Trim()); 
      } 
     } 
    } 
} 

Il mio codice di esempio è qualcosa di simile.

risposta

9

Nella mia esperienza [e senza offesa intesa] quando le classi iniziano a ricevere nomi come "Helper" e "Manager" è perché lo scopo di quella classe non è stato ben definito (e di questo mi sono reso colpevole in passato me stessa).

In questo caso, vorrei ipotizzare che non si sia davvero pensato al proprio modello di accesso ai dati, e che nella classe "SubscriptionHelper" ci sia già un sacco di SQL ad hoc.

Ora, se si implementa un modello di accesso di dati standard, ad esempio un modello di Repository, la classe sarebbe stato chiamato SubscriptionRepository, e il suo intento sarebbe alot più chiara.

Quindi, in risposta alla domanda - No, non penso ci sia una convenzione standard di "naming" per il tuo scenario. Tuttavia, ci sono diversi schemi di progettazione standard che potresti potenzialmente applicare al tuo sistema, e così facendo potresti finire con una convenzione di denominazione che è sia informativa che significativa.

Ecco un punto di partenza per alcuni modelli di progettazione ben noti per voi: http://martinfowler.com/eaaCatalog/, ma senza saperne di più sul progetto, sarebbe difficile indirizzarvi molto più lontano.

+0

Concordo: dovresti pensare a schemi che non definiscono le convenzioni. per esempio. MVC o repository. Ci sono molti framework di dati in .Net anche - EF - LINQ - ADO ... – SyntaxGoonoo

+0

Non penso che ci sia vergogna nel finire con un mucchio di funzioni che interagiscono solo con i dati. Lo faccio spesso, e quando il loro scopo comune diventa chiaro, mi rifatto in qualcosa di più significativo. – Ally

3

c'è una cosa come convenzione di denominazione standard per una classe che interagiscono con il database

Sì, come circa seguendo il modello da tavolo Data Gateway, nel qual caso si avrebbe un "Subscriber Gateway" oggetto per accedere a una singola tabella o vista: seleziona, inserisce, aggiorna ed elimina.

Table Data Gateway: oggetto che funge da gateway per una tabella di database. http://martinfowler.com/eaaCatalog/tableDataGateway.html

Problemi correlati