The Daily WTF на русском
Подписаться
CodeSOD: Массив параметров
Предоставленный фрагмент кода демонстрирует проблематичную практику программирования, где ArrayList используется для передачи нескольких параметров в метод. Метод ожидает, что ArrayList будет содержать определенные типы данных и значения в заранее определенной последовательности. Этот подход жертвует проверкой типов на этапе компиляции ради потенциальных ошибок во время выполнения. Оправданием для этого дизайна было желание обеспечить возможность будущих изменений в базе данных без изменения сигнатуры метода. Однако это обходит стандартные языковые функции, такие как необязательные аргументы, которые предложили бы более безопасное и поддерживаемое решение. Разработчик неправильно полагал, что передача ArrayList в этом виде делает код более гибким. Этот шаблон использования ArrayList в качестве пакета параметров широко распространен в кодовой базе. Альтернативой необязательных параметров было бы обеспечение безопасности на этапе компиляции и более четкого намерения. Текущая реализация полагается на неявные предположения о порядке и типе данных, что приводит к хрупкому коду. Эта практика считается антипаттерном в разработке программного обеспечения.