คำจำกัดความของคุณไม่ได้โจมตีฉันอย่างถูกต้อง สำนวนเป็นวิธีการเขียนสิ่งที่อาจหรือไม่อาจเป็นไปได้ในภาษาอื่น ๆ แต่นั่นเป็นเรื่องธรรมดาในภาษานี้ โดยปกติแล้วจะสั้นกว่าตัวเลือกอื่น แต่นั่นไม่ใช่ข้อกำหนด
อาจอธิบายได้ง่ายขึ้นโดยพูดถึงสิ่งที่ไม่ใช่สำนวน ใน C ++ มันเป็นเรื่องง่ายที่จะเขียน:
Foo* p = SomeThingThatReturnsAFooPointer(arg, param, x, y);
if(p)
{
// whatever
}
มันยิ่งสำนวนที่จะเขียน:
Foo* p;
if(p = SomeThingThatReturnsAFooPointer(arg, param, x, y))
{
// whatever
}
รหัสนี้ทำในสิ่งเดียวกัน - บางคนที่ยังใหม่กับ C ++ อาจอ่านว่าเป็นการทดสอบเพื่อดูว่า p เท่ากับฟังก์ชันที่ส่งคืนหรือไม่ แต่นั่นไม่ใช่สิ่งที่มันทำ
เปรียบเทียบกับสิ่งที่บางคนอาจเขียนไม่ใช่คนที่มาจากภาษาอื่น:
Foo* p = SomeThingThatReturnsAFooPointer(arg, param, x, y);
if(p !=NULL)
{
// whatever
}
นอกจากนี้คุณยังจะเห็นสิ่งนี้ที่ล้มเหลวโดยไม่ใช้คำว่า:
if (x>0)
return true;
else
return false;
เพราะวิธีการใช้สำนวนนั้น
return (x>0);
วิธีที่ไม่ใช้สำนวนไม่ผิด แต่มักใช้เวลานานกว่าในการพิมพ์และใช้เวลาในการอ่านนานกว่าสำหรับผู้ที่รู้จักสำนวน ถ้าฉันเรียกคุณว่า "เด็กชายผู้ร้องไห้หมาป่า" และคุณรู้เรื่องนี้มันเร็วกว่าถ้าฉันอธิบายเกี่ยวกับการเตือนที่ผิดพลาดที่ทำให้ผู้คนไม่สนใจคุณ แน่นอนปัญหาคือถ้าคุณไม่รู้เรื่องราวและไม่รู้ว่าหมาป่าทำอะไรกับสิ่งที่เรากำลังพูดถึง ในทำนองเดียวกันอาจเป็นปัญหาหากคุณไม่เคยเห็นreturn x<y;
มาก่อนและไม่รู้จริงๆว่าทำอะไร