Często widzę projekty (w projektach Java i zespołach używających Eclipse), które poprzedzają parametry funkcji p
.
Na przykład
public void filter (Result pResult) ...
Osobiście nie widzę w tym żadnej korzyści, ale chciałbym wiedzieć, jakie jest uzasadnienie. Najlepsze wytłumaczenie, jakie do tej pory słyszałem, to rozróżnienie nazw identycznych nazwanych pól. Mam problemy z tym wyjaśnieniem, ale rozumiem o co chodzi.
java
coding-style
naming
eclipse
auto-completion
oschrenk
źródło
źródło
struct
/union
jednym elementem.Jak podejrzewasz, ma to na celu uniknięcie kolizji nazw między nazwą parametru a nazwami elementów członkowskich lub zmiennych lokalnych. Zmienne składowe czasami otrzymują prefiks z tego samego powodu (np
m_result
.). Osobiście wolę po prostu używaćthis
prefiksu dla zmiennych składowych, jeśli występuje kolizja nazwy. Jest wbudowany w język i wszyscy już wiedzą, co to znaczy.źródło
Używam przedrostka parametru tylko wtedy, gdy parametr ma być przypisany do zmiennej składowej, takiej jak konstruktor lub setter.
Dla mnie uważam, że użycie innej nazwy zmiennej jest bardziej oślepiające niż użycie przedrostka „ten”.
W innych sytuacjach unikam używania parametru, który można łatwo pomylić ze zmienną składową.
Jeśli metoda lub klasa jest tak duża, że trudno jest powiedzieć, co oznaczają zmienne, prawdziwym rozwiązaniem jest rozbicie jej na mniejsze metody / klasy. Używanie przedrostków to rozwiązanie wspomagające zespół, które rozwiązuje podstawowy problem.
źródło
Paint (clr) { color = clr; }
.). ... Zwykle nie ma wieloznaczności, chociażcolor -> clr
w szczególności może być wyjątkiem.Jeśli ustalisz standard, aby używać „p” jako prefiksu z nazwą każdego parametru metody, możesz łatwo rozpoznać parametry metody w pozostałej części treści metody.
Oszczędza Twój czas, aby znaleźć parametry metody. Możesz łatwo debugować kod.
źródło
Krótko - ta praktyka utrudnia czytanie kodu.
Długo - będę argumentować, że jest to zła praktyka stosowana tylko do wspierania innych złych praktyk. Przeanalizujmy kilka powodów, dla których użycie takich prefiksów może być pomocne:
Unikanie kolizji w nazwach zmiennych
public void setHeight(int newHeight) { this.height = newHeight; }
Metody przyjmują wiele parametrów, deklarują wiele zmiennych i możemy łatwo zapomnieć, który z nich jest parametrem.
Z wyjątkiem niektórych szczególnych przypadków dodawanie przedrostków parametrów pomaga jedynie w objawach i nie rozwiązuje rzeczywistych problemów.
źródło
Jestem fanem iParam dla parametrów wejściowych i oParam dla parametrów wyjściowych. Powiedziałbym cParam dla zmiany, ale to nie do przyjęcia
źródło