Я щойно потрапив на проект із досить величезною базою коду.
Я в основному маю справу з C ++, і багато написаного коду використовує подвійне заперечення для їх булевої логіки.
if (!!variable && (!!api.lookup("some-string"))) {
do_some_stuff();
}
Я знаю, що ці хлопці - розумні програмісти, очевидно, що вони роблять це не випадково.
Я не досвідчений експерт C ++, я можу лише здогадатися, чому вони роблять це, що вони хочуть зробити абсолютно позитивним, що значення, що оцінюється, є фактичним булевим представленням. Тож вони заперечують його, потім знову заперечують, щоб повернути його до фактичного булевого значення.
Це правильно, чи я щось пропускаю?