CodeSOD: AAYFN Заметка
The Daily WTF на русском

CodeSOD: AAYFN

Предоставленный код на Ruby определяет функцию с именем bv, что является сокращением от "boolean value" (логическое значение), и используется для красивого вывода логических значений и их преобразования в строки. Функция принимает четыре параметра: prop, tv, fv и nv, которые представляют имя свойства, значение "истина", значение "ложь" и значение "null" соответственно. Функция использует метод send для доступа к члену класса по имени, что является идиомой Ruby, позволяющей метапрограммирование с помощью строк. Такой подход может привести к потенциальным проблемам, таким как возврат "Не указано" для полей, не являющихся логическими, что может вводить в заблуждение. Утверждается, что попытка использовать функцию для поля, не являющегося логическим, должна вместо этого вызывать исключение. Поведение функции может быть неожиданным, поскольку она вызовет исключение, если свойство не существует или если доступ к нему осуществляется через функцию, принимающую параметры. Документация Ruby рекомендует иметь хороший список допустимых логических значений, чтобы избежать этих проблем. Однако использование метапрограммирования во время выполнения путем передачи строк все еще может привести к неприятностям и затруднить поддержку кодовой базы. Автор текста выражает свое неприятие такого подхода и предпочитает использовать шаблоны C++ для метапрограммирования, которые, по его мнению, проще и понятнее. Автор считает, что нетривиальные кодовые базы на Ruby часто становятся не поддерживаемыми из-за использования метапрограммирования. В целом, код и его подход считаются проблематичными и склонными к ошибкам.