Na przykład klasa taka jak:
class Dog { } //never mind that there's nothing in it...
a następnie właściwość taką jak:
Dog Dog { get; set; }
Powiedziano mi, że jeśli nie mogę wymyślić bardziej pomysłowej nazwy, muszę użyć:
Dog DogObject { get; set; }
Czy są jakieś przemyślenia, jak je nazwać lepiej?
c#
naming
properties
Storm Kiernan
źródło
źródło
Person
Klasa zawierającaDog
właściwość o nazwieDog
Odpowiedzi:
Może to być zła praktyka, gdyby nie fakt, że jest już dość oczywiste, o czym mówisz w kodzie, w oparciu o kontekst.
Jaki jest konstruktor typu? Który jest przedmiotem Nie mylić? OK, a może
Który jest przedmiotem Jaka jest statyczna metoda fabryczna dla danego typu? Nadal się nie mylisz? Nie myślałem tak.
Jedyny raz, kiedy widziałem, że jest to potencjalny problem, to wtedy, gdy drzewo przestrzeni nazw staje się dość skomplikowane, a kompilator nie może zrozumieć dwuznaczności, w którym to przypadku kończy się coś takiego
W każdym razie powinno to się zdarzyć tylko w przypadku właściwości automatycznych (i być może wyliczeń), ponieważ nazwy zmiennych lokalnych są zawsze uwzględniane w wielbłądach, unikając całkowicie niejednoznaczności.
źródło
Dog
została wywołana metoda instancjiCreate
, ale w tym momencie nurkowałbyś w dość okropnych praktykach kodowania.Jest to nie tylko rozsądna praktyka, język został specjalnie zaprojektowany, aby to umożliwić. Wyszukaj specyfikację i uzasadnienie w specyfikacji C # dla „Kolor koloru” i zobacz
http://blogs.msdn.com/b/ericlippert/archive/2009/07/06/color-color.aspx
dla niektórych interesujących przypadków narożnych wynikających z tej decyzji.
W żadnym wypadku nie należy nazywać właściwości „DogObject”, aby uniknąć nazywania jej tym samym typem; co jest sprzeczne z wytycznymi dotyczącymi projektowania ram.
źródło
Color
), Takie użycie wydaje się uzasadnione. Nie podoba mi się to jednak w przypadku zmiennych lubIDisposable
typów. Czy „formantFont
” odnosi się do tych aspektów stanu, które są enkapsulowane przez właściwość, czy do wystąpieniaFont
zidentyfikowanego przez getter właściwości?Można to w pełni nazwać
Dog
i tak właśnie zaleca Microsoft w wytycznych nazewnictwa Framework :A oto przykład, którego używają w powyższym przewodniku:
źródło