Ловушка «все будет хорошо», как и ловушка выгодной цены, базируется на фатальных дефектах человеческой психики. «Выгодная цена» эксплуатирует жадность, а «все будет хорошо» — страх и лень. Мы не любим, когда случается что-то плохое, нам это неприятно. Думать о неприятном заранее — живот заболит. Да и незачем думать, ну вот что может случиться? Все будет хорошо, этой мысли достаточно.
Подход посложнее — не приступать к написанию кода раньше времени, не пытаться сэкономить на ресурсах лишний грошик. Разработка даже самого простого механизма, самой элементарной, казалось бы, функции выстраивается в пять стадий.
1. Анализ. Изучение задачи, изучение текущего положения, выявление противоречий, уточнение неочевидных мест, допущений и ограничений.
2. Проектирование. Разработка «на бумаге». Принятие основных проектных решений (при необходимости с проверкой на быстром прототипе).
3. Кодирование. Собственно написание и отладка кода. Честно говоря, это не самое захватывающее занятие — если все продумано и правильно спроектировано, код является очевидным, и очень жаль, что сам себя он писать пока еще не способен.
4. Проверка. Прежде чем передавать какую-то разработку (даже на тестирование), разработчик обязан самостоятельно проверить, по крайней мере, основной поток событий и поток наиболее очевидных ошибок.
5. Документирование. Написание инструкций по развертыванию, эксплуатации, разрешению известных проблем. Фиксация «на бумаге» наиболее важных и/или сложных проектных решений.
любая задача разработки по своей сути является чьей-то проблемой. На «создание проблемы» был затрачен определенный объем труда. Для полноценного решения задачи потребуется такой же объем труда и ни одним нормо-часом меньше.
Выбирая тип метаданных для решения определенной прикладной задачи, необходимо в первую очередь обратить внимание на уникальные свойства и качества, которыми обладает этот и только этот тип данных, а другие типы не обладают.
Ни в коем случае никогда и ни при каких обстоятельствах нельзя плодить в конфигурации парные константы, управляющие одним и тем же параметром таким образом, что одна из них является прямым значением, а другая — инвертированным.
// Источник (-и) данных, которые необходимо подготовить к
// выполнению.
//
// Возвращаемое значение:
// Структура - Полный контекст набора источников.
//
Функция КонтекстДинамическихДанных(ВхДанные) Экспорт
Читатель спросит: «Каким образом можно написать внятную и понятную аннотацию для крохотного и очевидного метода?» Отвечаем: очень просто, см. листинг 3.6.
Листинг 3.6. Аннотация без аннотации — так тоже можно