Шлифуя код своего пакета PHP MultiRunner с помощью статических анализаторов кода psalm и phpstan, столкнулся с интересной загадкой — а как в PHP узнать определена ли переменная или нет.Казалось бы, есть хорошая функция (языковая конструкция) isset(mixed $var, ...$vars): bool. Но в ней есть подвох: если переменная определена значением null, то isset() вернёт для неё false. Читать далее
Недавно читали код и наткнулись на примерно такой такой фрагмент. bool *t = new bool[X][Y]; // много строк switch (t[M][N]) { case true: // много строк break; case false: // много строк break; default: // много строк break; } Сразу возникает вопрос: зачем нужна ветка default? Если переменная не равна true, то она равна false. Однокурсник сказал: «Для отладки». Думаю: что тут можно отлаживать? Но не всё так просто. Читать дальше →
В статье "Пережить великую нехватку переменных" (Outliving the Great Variable Shortage) Тим Оттингер формулирует закон Кёрли:«Переменная должна означать только что-то одно. Она не должна означать "что-то при таких-то условиях" и иметь разный смысл в разных обстоятельствах. Также она не должна иметь два смысла одновременно. "За двумя зайцами погонишься – ни одного не поймаешь". Переменная должна означать что-то одно все время своего существования» Читать далее
Представим процесс отладки программы на С++: перед нами есть указатель на какую-то переменную, и мы хотим знать, на что он указывает. Два варианта: если переменная глобальная, то любой современный отладчик назовет ее имя, и мы будем довольны. А вот если переменная локальная, то…