Pesquisei no fórum, mas não consegui encontrar as respostas para evitar, apenas porque não é uma bala de prata. Portanto, não acho que essa pergunta seja uma duplicata.
Existe uma razão VÁLIDA para desaprender o sistema húngaro ao qual estou acostumado?
Até agora, vejo os seguintes benefícios em usá-lo:
- Nomenclatura consistente de variáveis
- Você vê o tipo sem pesquisar (o intellisense está inoperante / indexando metade do tempo, portanto ainda é um motivo válido)
- A semântica ainda pode ser compactada na segunda parte do nome
E seguintes desvantagens:
- Irrita algumas pessoas (não faço ideia do porquê)
- Se o tipo for alterado, o tipo pode não corresponder à nomeação da variável (não acho que seja um motivo válido, os tipos são alterados raramente e você "renomeia tudo")
Então por que:
vector<string> vecCityNames;
wstring strCity = L"abc";
//more code here
vecCityNames.push_back(strCity);
é pior que:
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
ser vectStringCityNames
demais para o seu argumento consistente, e essa "pergunta" é mais um discurso retórico do que qualquer coisa, você já decidiu, isso deve ser encerrado.
cityNames.push_back(city)
é bem claro. É uma lista de nomes de cidades e você está adicionando um.