Я шукав форум, але не зміг знайти відповіді, чому цього слід уникати, лише чому це не срібна куля. Тож я не думаю, що це питання є дублікатом.
Чи є ВАЛІДНА причина, чому я повинен вивчити Системи Угорська, до яких я звик?
Поки я бачу такі переваги в його використанні:
- Послідовна назва змінної
- Ви бачите тип без пошуку (intellisense мертвий / індексує половину часу, тому це все-таки поважна причина)
- Семантика все ще може бути упакована у другу частину назви
І наступні недоліки:
- Це дратує деяких людей (не знаю, чому)
- Якщо тип змінено, тип може не відповідати іменуванню змінної (я не думаю, що це дійсна причина, типи змінюються рідко, і у вас є "перейменувати все")
Так чому:
vector<string> vecCityNames;
wstring strCity = L"abc";
//more code here
vecCityNames.push_back(strCity);
гірше, ніж:
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
бути vectStringCityNames
стільки для вашої послідовної аргументації, і це "питання" є скоріше сказом, ніж чим-небудь, ви думаєте, це слід закрити.
cityNames.push_back(city)
досить зрозумілий. Це список назв міст, і ви додаєте його.