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