Jakie jest zalecane podejście do nazewnictwa klas bazowych? Czy poprzedza nazwę typu słowem „ Podstawa ” lub „ Abstrakcja ”, czy po prostu dodamy do niego przyrostek „Podstawa”?
Rozważ następujące:
typ: ViewModel
np MainViewModel , ReportViewModel
klasa bazowa: BaseViewModel
lub ViewModelBase
lubAbstractViewModel
Weź również pod uwagę:
typ: Product
np. VirtualProduct , ExpiringProduct
klasa bazowa: BaseProduct
lub ProductBase
lubAbstractProduct
Jak myślisz, który jest bardziej standardowy?
class Entity : EntityBase
{
}
lub
class Entity : BaseEntity
{
}
c#
naming-conventions
base-class
Soni Ali
źródło
źródło
Odpowiedzi:
Istnieją przykłady w Ramowej z przyrostkiem zasady, np
System.Configuration.Provider.ProviderBase
,System.Web.SessionState.SessionStateStoreProviderBase
.Ale bynajmniej nie wszystkie klasy abstrakcyjne bazowe w ram po tej konwencji (np
System.Data.Common.DbParameter
,System.Data.Common.DbCommand
).Osobiście unikałbym używania sufiksu, chyba że chciałbym podkreślić fakt, że jest to klasa abstrakcyjna i czułem, że w przeciwnym razie użytkownicy tej klasy mogliby oczekiwać, że nazwa wskaże konkretną implementację.
źródło
Avoid
Nazywanie klas bazowychBase
przyrostkiem, jeśli klasa jest przeznaczona do użytku w publicznych interfejsach API”. Wytyczne dotyczące projektowania ram, strona 174Żadne z powyższych. Zastanów się, jaki cel zapewnia twoja klasa bazowa; nazwij to tak. Na przykład podstawową klasą samochodów i rowerów może być pojazd.
Jeśli tworzysz klasy bazowe tylko po to, aby mieć klasę bazową składającą się z jednej klasy i bez innego celu lub powodu, prawdopodobnie robisz coś nie tak.
źródło
Jeśli mówisz o wirtualnych klasach bazowych, standardem firmy Microsoft jest ClassnameBase (jak CollectionBase).
źródło
Myślę, że to kwestia wyboru. Powiedziałbym, że jeśli tworzysz wiele klas bazowych, być może lepiej jest zawsze korzystać z BaseClassname, ponieważ w ten sposób ZAWSZE dowiesz się, jakich klas bazowych możesz zacząć używać, wpisując po prostu Base i uzyskując resztę pomocy Inteligencja. Co by było, gdybyś miał 20 klas bazowych i dodałeś Base jako sufiks i zapomniałeś, jak nazywała się klasa bazowa? Czy chcesz najpierw utworzyć diagram klas z poziomu VS i dowiedzieć się, jakie klasy bazowe są dostępne? Dobrze jest nazwać je ClassBase, gdy jest to tylko jedna lub dwie klasy.
To samo dotyczy decyzji między funkcją GetItems i ItemsGet. Powiedziałbym przynajmniej ze względu na czytelność - wybierz GetItems. Przestrzegaj konwencji :)
źródło
GetItems
nie działa - „Get” jest tylko czasownikiem i dlatego ma znaczenie gramatyczne tylko w języku angielskim jako przedrostek, podczas gdy „Base” działa zarówno jako przymiotnik (przedrostek), jak i rzeczownik (sufiks).abstract
.Używamy BaseEntity, ale myślę, że to twoje własne preferencje. Często widuję drugiego.
Po prostu bądź spójny w swoim kontekście, niezależnie od tego, czy chodzi o projekt, przestrzeń nazw, czy, jeśli to możliwe, Twój zespół. Różne konwencje są gorsze niż zła konwencja IMHO.
źródło
Osobiście odradzałbym w ogóle dodawanie bazy słów. Nigdy nie wiesz, kiedy będziesz musiał zmienić kod i nie będzie to już obiekt bazowy. Biorąc to pod uwagę, robiliśmy to w przeszłości, dodaliśmy przedrostek słowo Base z przodu. Wydaje się, że płynie lepiej.
źródło
BaseEntity wygląda bardzo podobnie do wielbłąda - strName, bseEntity. Wybrałbym EntityBase, ponieważ najpierw definiuje temat, co pomoże ci szybciej zidentyfikować jego funkcję.
źródło
Zawsze myśl o alfabetyzowaniu, kiedy nazywasz rzeczy. Naprawdę nie lubię patrzeć na serwer SQL, a każda procedura składowana nosi nazwę usp [coś]. W tych samych wierszach nie należy nadużywać Get i Set jako początkowych nazw funkcji. Zamiast GetItems lub PlaceOrder, pomyśl o nadaniu im nazwy ItemsGet lub OrderPlace.
Ogólnie rzecz biorąc, ClassnameBase / EntityBase byłoby lepszym wyborem.
źródło