Дыбр об идиомах

May 30, 2013 00:17


Залез к avva, наткнулся на смешное. Я иногда встречал формулы типа

if (results > 0) {
return true;
} else {
return false;
}
И каждый раз я терял несколько секунд на "...почему этот ^@$%*@ эээ... ну, допустим, программист, - не написал просто "return results > 0"? Или, скажем, вот так? Может, я не заметил, что именно он проверяет? Ладно, погоди, давай, не торопясь, перечитаем. ... ага... ага... нет, все верно. Он реально написал четыре лишних строчки, чтобы сконвертировать bool в bool..."

Хорошо еще, он не пишет "if (bool(results > 0) == true) { return bool(true); }".
Мог бы.

То же самое о нотации "if (p != NULL)" вместо "if (p)". Это все равно, что в русском тексте писать "приветствую вас через традиционное пожелание здоровья" вместо "здравствуйте", с объяснением, что так понятнее, что имеется в виду. Вторая форма, - это стандартная идиома, причем одна из тех, которые выучиваются на втором уроке "введения в C". Kроме того, она более generic, чем первая. Первую форму можно использовать разве что для общей ритмичности слога, скажем:

if (p == nullptr) { ... }
else if (p == p1) { ... }
else if (p == p2) { ... }

Я не думаю, что он с этими идиомами не знаком. Однако, я уверен, что он убежден в исключительности этих своих познаний.

programing

Previous post Next post
Up