Moim zdaniem "najlepsza praktyka" to "nie rób tego". Jeśli natknę się na to w recenzowanym przeze mnie kodzie, natychmiast go podbiję. Posiadanie dwóch zmiennych różniących się tylko przypadkiem to nieporozumienie, które tylko czeka. To zbyt proste, aby programista obsługi technicznej pojawił się kilka miesięcy lub lat później i nieumyślnie dokonał przypisania do myThing
zamiast MyThing
.
Dodano później:
commenter poprosił o moją propozycją zastąpienia górna/dolna przypadku konwencji nazewnictwa. Do tego potrzebuję konkretnego przykładu. Załóżmy, że masz prosty Book
klasę, która ma tylko jedną właściwość: Title
:
public class Book
{
public string Title { get; private set; }
}
teraz trzeba konstruktora. Wspólna konwencja jest użycie małą wersję właściwości:
public Book(string title)
{
Title = title;
}
Albo, jeśli chcesz, aby upewnić się, że nie ma dwuznaczności: this.Title = title
.
Można argumentować, że jest to w porządku w konstruktorach. I może tak być, gdyby wszyscy konstruktorzy byli tak prości. Ale moje doświadczenie było takie, że gdy konstruktor wykracza poza zaledwie kilka linii, rozróżnienie pomiędzy Title
i title
zostaje utracone. Problem staje się gorszy, gdy mówimy o metodach innych niż konstruktorzy. Tak czy inaczej, potrzebujesz innej konwencji.
Czego używać? Różnie używałem i widziałem używane skróty w parametrach: ttl
, na przykład.Lub coś w rodzaju bookTitle
, które jest bardziej opisowe podczas używania IntelliSense. Moim zdaniem albo jest lepsze od konwencji używania nazwy, która różni się tylko przypadkiem.
StyleCop "zdecydowanie zachęca" do używania 'tego. –
@ 280Z28, StyleCop * zawsze * zachęca do używania' this', lub tylko w przypadkach, gdy istnieje zmienna lokalna, która różni się tylko przypadkiem? – devuxer
Byłem w sklepach, które robią obie - usunąć lub zlecić włączenie. Tak czy inaczej nie odczuwam tego zbyt mocno :) – womp