ฉันเพิ่งเข้ามาในโครงการที่มีฐานรหัสขนาดใหญ่มาก
ฉันจัดการกับ C ++ เป็นส่วนใหญ่และโค้ดจำนวนมากที่พวกเขาเขียนใช้การปฏิเสธสองครั้งสำหรับตรรกะบูลีน
if (!!variable && (!!api.lookup("some-string"))) {
do_some_stuff();
}
ฉันรู้ว่าคนเหล่านี้เป็นโปรแกรมเมอร์อัจฉริยะเห็นได้ชัดว่าพวกเขาไม่ได้ทำสิ่งนี้โดยบังเอิญ
ฉันไม่ใช่ผู้เชี่ยวชาญ C ++ ที่ช่ำชองการเดาเพียงอย่างเดียวของฉันว่าทำไมพวกเขาถึงทำเช่นนี้ก็คือพวกเขาต้องการทำให้เป็นบวกอย่างแน่นอนว่าค่าที่ประเมินคือการแสดงบูลีนที่แท้จริง ดังนั้นพวกเขาจึงลบล้างมันแล้วลบมันอีกครั้งเพื่อให้มันกลับมาเป็นค่าบูลีนที่แท้จริง
ถูกต้องหรือฉันพลาดอะไรไป?