Как правильно писать программы?

08/04/08

Вопрос вообще-то серьезный, но из-за того, что проблема может показаться нечеткой пишу здесь.

Сначала нужно хорошо обдумать структуру программы, нарисовать блок-схему (как для алгоритма в целом, так и для отдельных квадратиков).

По поводу «хорошо обдумать» категорически согласен, ну а насчёт блок-схем — это на любителя. Блок-схема, на мой взгляд, — весьма неадекватный способ представления программы, поэтому, по моему мнению, для предварительного проектирования существенно удобнее пользоваться каким-нибудь псевдокодом.

По возможности лучше использовать функциональные языки.

Тут тоже не всё так просто. По моему опыту, программы на функциональных языках обычно проще писать, но сложнее отлаживать.

То есть вместо того, чтобы тестировать можно было просто все очень аккуратно обдумать, аккуратно написать, обработать общий случай, все варианты, и не тестировать.

Тестировать надо всегда 🙂 Сейчас довольно распространен подход к разработке под название Test Driven Development (TDD), при котором тесты разрабатываются до программы. Т. е. программа строится поэтапно, и уже написанные модули тестируется до того, как программируются следующие. Правда, речь идёт о программном тестировании, а не о тестировании пользовательского интерфейса. При этом набор тестов сохраняется и развивается в течение всего времени разработки и позволяет убедиться, что при внесении изменений в код мы нечего не порушили.

С помощью тестов происходит также исправление ошибок: нашли ошибку — добавили тест, её воспроизводящий, — воспроизвели — исправили ошибку — убедились, что все тесты работают правильно.

Для автоматического тестирования есть специальные средства: jUnit, nUnit и много чего ещё (в том числе, средства, встроенные в различные IDE).

Вышесказанное относится, в основном, к профессиональному программированию. В программировании «для себя», естественно, возможны самые разные варианты. Но принципу «сначала подумай, потом сделай» лучше следовать всегда 🙂