Когда неожиданная функциональность ошибка или просто плохой дизайн
Бывают случаи, когда программист явно делает осознанный выбор в своей структуре кода, что приводит к поведению, которое (в лучшем случае) не интуитивно, но технически не является ошибкой в том, что оно не работает. Должно ли это быть классифицировано как ошибка и исправлено?
Например, хорошо известная система электронной коммерции с открытым исходным кодом (если вы посмотрите мою историю ответов, вы выясните, какая из них!) Предоставляет функциональные возможности для увеличения количества, где администратор может указать несколько единиц, которые должны быть добавлены в корзину (например, должно быть 5, 10, 15, 20 и т. д.). Код написан так, что эти ограничения применяются только тогда, когда система находится в режиме "Управление запасами" (т. Е. Уровни запасов уменьшаются с каждым заказом). Теперь вполне допустима ситуация, когда владелец магазина может продавать свой товар с определенными приращениями, но не управлять запасами. Код игнорирует конфигурацию в режиме без вывода сообщений (без обратной связи с администратором), и нет документации о необходимости включения функции управления запасами.
Это ошибка? Или просто плохой дизайн / документация.
Обратите внимание, я уверен, что некоторые читатели будут интерпретировать этот вопрос как субъективный, но я думаю, что есть существенная разница между ошибками и плохим дизайном. Это особенно актуально в проектах с открытым исходным кодом, где отчеты об ошибках, как правило, работают в разных процессах, чем внутренние системы компании.
2 ответа
Ошибка означает поведение, отличное от того, что имел в виду программист, в то время как плохой дизайн означает, что поведение, намеченное программистом, является чем-то иным, чем пользователь может разумно ожидать.
Есть ли спецификация, которая определяет, является ли тот или иной путь правильным? Если есть спецификация, то это ошибка.
Если нет спецификации, то, возможно, это плохая документация.
Могут ли возникать ошибки, когда код игнорирует конфигурацию без вывода сообщений? Тогда это ошибка.