ฉันค้นหาฟอรัม แต่ฉันไม่สามารถหาคำตอบได้ว่าทำไมจึงควรหลีกเลี่ยงเพียงเพราะเหตุใดมันจึงไม่ใช่กระสุนเงิน ดังนั้นฉันไม่คิดว่าคำถามนี้จะซ้ำกัน
มีความถูกต้องเหตุผลว่าทำไมฉันควรยกเลิกระบบฮังการีฉันใช้เพื่อ?
จนถึงตอนนี้ฉันเห็นประโยชน์ต่อไปนี้ในการใช้งาน:
- การตั้งชื่อตัวแปรที่สอดคล้องกัน
- คุณเห็นประเภทโดยไม่ต้องค้นหา (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)
มันค่อนข้างชัดเจน นี่คือรายการชื่อเมืองและคุณกำลังเพิ่มชื่อ