Принцип наименьшего удивления
(Principle of Least Astonishment)
Это золотое правило проектирования интерфейсов, API и программных систем. Его суть проста: компонент системы должен вести себя именно так, как ожидает пользователь, исходя из своего опыта.
Предсказуемость
Будьте «скучными». Программисты любят оригинальность, но пользователи ценят код, который делает ровно то, что заявлено.
Стандарты
Используйте общепринятые паттерны. Не изобретайте велосипед там, где пользователь ждет привычную кнопку или метод.
Приоритет пользователя
Если разработчику удобно вернуть null, а пользователь ждет ошибку — выбирайте то, что ждет пользователь.
Примеры нарушения принципа (Astonishments)
- Кнопка «Отмена» окрашена в ярко-зеленый цвет.
- При нажатии на логотип открывается страница «Контакты» вместо главной.
- Инвертированный скроллинг без предупреждения.
Геттер с побочным эффектом: Метод getName() меняет состояние объекта. Вызвал два раза — получил разные результаты.
Неочевидные аргументы: copy(source, destination), где первый аргумент — куда, а второй — что. Весь мир привык к обратному.
- Таблица
Usersиспользуется для хранения архива заказов. - Поле
is_activeимеет типVARCHARи значения "Yes", "No", "Maybe".
Как соблюдать POLA?
Коридорные тесты
Покажите решение коллеге. Любой вопрос «А почему так?» — признак удивления.
Имена имеют значение
Имя функции должно описывать результат, а не внутренний процесс.
Соглашения (Convention)
Следуйте стандартам вашего языка или фреймворка без исключений.
Документируйте странности
Если «удивление» неизбежно, выделите это в документации максимально ярко.
«Хороший инженер — это тот, чьи решения кажутся очевидными. Если ваша система не вызывает эмоций, значит, вы профессионал.»