Przeszukałem forum, ale nie mogłem znaleźć odpowiedzi, dlaczego należy tego unikać, tylko dlaczego nie jest to srebrna kula. Więc nie sądzę, że to pytanie jest duplikatem.
Czy istnieje WAŻNY powód, dla którego powinienem oduczyć się systemów węgierskiego, do których jestem przyzwyczajony?
Jak dotąd widzę następujące zalety korzystania z niego:
- Spójne nazewnictwo zmiennych
- Widzisz pismo bez wyszukiwania (Intellisense jest martwy / indeksowanie przez połowę czasu, więc nadal jest to ważny powód)
- Semantyka może być nadal pakowana w drugą część nazwy
I następujące wady:
- Drażni niektórych ludzi (nie mam pojęcia dlaczego)
- Jeśli typ zostanie zmieniony, typ może nie pasować do nazwy zmiennej (nie sądzę, że jest to poprawny powód, typy są zmieniane rzadko, a Ty masz „zmień nazwę wszystkiego”)
Więc dlaczego:
vector<string> vecCityNames;
wstring strCity = L"abc";
//more code here
vecCityNames.push_back(strCity);
jest gorszy niż:
vector<string> cityNames;
wstring city = L"abc";
//more code here
cityNames.push_back(city);//Are we pushing back int on a queue? Float on a stack? Something else?
vectCityNames
być vectStringCityNames
aż tak dużo dla twojego konsekwentnego argumentu, a to „pytanie” jest bardziej rażące niż cokolwiek innego, masz już swój umysł, to powinno być zamknięte.
cityNames.push_back(city)
jest dość jasne. Jest to lista nazw miast, którą dodajesz.