Widzę pytania podobne do tego w odniesieniu do nazw parametrów, które pasują do właściwości w klasie, ale nie mogę znaleźć niczego dotyczącego używania nazwy parametru, która jest taka sama jak nazwa typu parametru, z wyjątkiem casing w C #. Wydaje się, że nie jest to naruszenie, które mogę znaleźć, ale czy uważa się to za złą praktykę? Na przykład mam następującą metodę
public Range PadRange(Range range) {}
Ta metoda przyjmuje zakres i zwraca nowy zakres z zastosowanym dopełnieniem. Biorąc pod uwagę ogólny kontekst, nie mogę wymyślić bardziej opisowej nazwy parametru. Przypomniała mi się jednak wskazówka, którą wybrałem podczas czytania Code Complete na temat „dystansu psychologicznego”. To mówi
Odległość psychologiczną można zdefiniować jako łatwość różnicowania dwóch elementów ... Podczas debugowania przygotuj się na problemy spowodowane niewystarczającą odległością psychologiczną między podobnymi nazwami zmiennych i między podobnymi nazwami rutynowymi. Podczas konstruowania kodu wybieraj nazwy z dużymi różnicami, aby uniknąć problemu.
Moja sygnatura metody ma wiele „zasięgu”, więc wydaje się, że może to być problem w odniesieniu do tego dystansu psychologicznego. Teraz widzę, że wielu programistów wykonuje następujące czynności
public Range PadRange(Range myRange) {}
Osobiście bardzo nie lubię tej konwencji. Dodanie przedrostka „my” do nazw zmiennych nie zapewnia dodatkowego kontekstu.
Widzę również następujące
public Range PadRange(Range rangeToPad) {}
Podoba mi się to bardziej niż „mój” prefiks, ale nadal nie dbam o to ogólnie. Po prostu wydaje mi się to zbyt szczegółowe i odczytuje niezręcznie jako nazwę zmiennej. Dla mnie zrozumiałe jest, że zakres zostanie uzupełniony z powodu nazwy metody.
Więc przy tym wszystkim, moim przeczuciu jest iść z pierwszym podpisem. Dla mnie to jest czyste. Nie ma potrzeby wymuszania kontekstu, gdy nie jest potrzebny. Ale czy robię sobie lub przyszłym programistom niezadowolenie z tej konwencji? Czy naruszam najlepszą praktykę?
Range r
(przynajmniej dla krótkiej treści metody) i Range toPad
.
Range range
jest w porządku.