3 подхода к созданию безошибочного кода

Иногда от этого зависит будущее миллионов.
2 минуты6751

Существует сразу несколько причин научиться писать код без ошибок. Во-первых, это вполне естественное требование любого руководителя и заказчика. Во-вторых, соблюдение правил bug-free программирования будет вам полезно на онлайн или очных собеседованиях. В-третьих, это научит вас ставить качество кода впереди желания реализовать все свои задумки. Так как начать писать безошибочный код? Вот 3 подхода, которые максимально полно отражают концепцию такого программирования.

Подход Гольцмана к написанию кода

Эти правила были официально записаны и опубликованы в 2006 году учёным и исследователем компаний Bell и NASA Джеррардом Гольцманом. Они позволяют программистам создавать по-настоящему огромные коды с минимальными рисками. Вот краткое их краткое содержание:

  1. Избегайте сложных конструкций с переходами и рекурсиями;

  2. Необходимо чётко ограничивать число повторений цикла;

  3. Избегать выделения большого количества памяти;

  4. Код любой функции должен умещаться на листе А4 (не более 60 строк);

  5. Использовать минимум 2 ассерта (проверка аномального условий) на функцию;

  6. Задекларировать данные на самом низком из возможных уровней видимости;

  7. Валидность данных должна проверяться внутри каждой функции;

  8. Разумно используйте препроцессор;

  9. Ограничить использование указателей. Запретить указатели на функции;

  10. Компиляция кода должна производиться при всех включённых правилах, полученный результат не должен содержать ни одного warning-а.

Подход Ли к общим принципам кода

От рекомендаций серьёзных людей перейдём к простым советам практикующих программистов. В своём блоге Джоэль Ли описал свои 10 правил написания кода без ошибок:

  1. Использовать описательные имена переменных, классов, функций и пр.;

  2. Присвоить каждому классу/функции только одну цель;

  3. Удалять, а не комментировать ненужный код;

  4. Код должен быть удобочитаемым, лишь потом функциональным;

  5. Придерживаться одного стиля программирования;

  6. Выбирать архитектуру исходя из поставленной задачи;

  7. Выбирать язык согласно собственному образу мышления;

  8. Набираться опыта у мастеров;

  9. Научиться писать грамотные комментарии;

  10. Переписывать код в случае плохой читаемости или избыточности.

Подход Гурока к проверке кода

Другой практикующий программист-блоггер Деннис Гурок отошёл от магической цифры 10 и описал свои 12 способов получить безошибочный код на выходе:

  1. Попросить кого-нибудь проверить ваш код;

  2. Проверять работоспособность кода на каждом этапе создания;

  3. Использовать автоматические тесты и специальные модули;

  4. Протоколировать код с помощью отдельного журнала;

  5. Изучить типовые ошибки;

  6. Держать обратную связь с клиентами;

  7. Использовать проверенные коды из прошлых проектов;

  8. Прибегнуть к услугам тестировщиков;

  9. Проверить работу на виртуальной машине;

  10. Создать спецификацию с регистрацией всех изменений;

  11. Использовать только хорошие отладчики;

  12. Задать строгие параметры отладки.

Итог

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

Почему не стоит принимать bug-free концепцию за основу?

Не опровергая правильность применения описанных подходов, а скорее ставя под сомнение необходимость использования концепции bug-free программирования в качестве основной, Дейв Буш описал свои 8 причин, почему он (Johnny, не спрашивайте почему) лучше будет плодить ошибки:

  1. Препятствует обучению и развитию;

  2. Нет необходимости применять в работе;

  3. Невозможность быстро сдать работающий код;

  4. Это скучно;

  5. Неподготовленный человек будет допускать еще больше ошибок;

  6. Нерентабельно для компании;

  7. Ни один подход не может учесть всех негативных факторов;

  8. Понятие ошибки сильно размывается при таком подходе.

А на чьей вы стороне?

 

разработкабагисоветыweb_developer
Нашли ошибку в тексте? Напишите нам.
Спасибо,
что читаете наш блог!