Программист-прагматик. Путь от подмастерья к мастеру - Э. Хант, Д. Томас
Прагматическая философия
- Хаос в программе пораждает еще большую неразбириху. Если есть недоработки стоит сразу их устранить.
Прагматический подход
- DRY
- Ортогональность системы - объекты не должны пересекаться или пересекаться минимально. (сцепление - cohesion)
- Стрельба трассирующими
- Прототип
- Язык должен отражать предметную область (именование переменных)
- Определять для себя на сколько точной должна быть оценка. Часто не обязательно знать 2 дня 10 часов обычно достаточно около 3х дней
Походный набор инструментов
- Генераторы текстов: пассивные и активные (каждый пересоздают на основе актуальных данных)
Прагматическая паранойя
- Контракты
- Утверждения
- Исключения используется только в действительно исключительных ситуациях. В противном случае они становятся подобны оператору goto.
- Участок кода использующий ресурс отвечает и за его освобождение. Освобождаютя ресурсы в обратной последовательности по отношению к распределению этих ресурсов.
Гибкость против хрупкости
- Несвязанность и закон Деметера
- Если есть возможность распараллелить программу, то эту возможность надо использовать (потоки, асинхронность).
- "Доски объявлений" для координации потоков работ.
- События, паттерны Observer и MVC хорошо подходят для графических интерфейсов.
Пока вы пишите программу
- Хороший код можно написать только четко понимая что и как происходит. Это и есть преднамеренное программирование.
- Оценку скорости алгоритма можно сделать определив его порядок. Цикл Q(n), вложенный цикл Q(m x n). Для сортировки лучше использовать библиотечные методы, скорость их работы оптимизирована.
- Перед рефакторингом лучше убедиться что все тесты прошли успешно. Лучше рефакторинг проводить отдельно от добавления новых возможностей. После реорганизации обязательно проводить регрессионные тесты.
- Тестовый стенд. Отладочное окно по горячим клавишам.
Перед тем как начать проект
- Список новых изменений и требований поможет остановит их последующий лавинообразный рост.
- Глоссарий терминов проекта позволит использовать их согласованно и новым участникам проекта понять их значение.
- Если документы хранятся в проекте, то больше шансов, что их будут читать.
- Часто у сложной проблемы есть простое решение. Его надо увидеть за навязываемым сложным.
Прагматические проекты
- Если ручное тестирование обнаружило баг, то следует обязательно написать тест который бы находил эту ошибку, чтобы в будущем автоматизированное тестирование вылавливало его.
- Если слегка превысить ожидания пользователей это сделает их более дружелюбными к вашему приложению.
No comments:
Post a Comment