Главный вопрос программирования, рефакторинга и всего такого

в 12:34, , рубрики: C, c/c++, c++, code review, Блог компании PVS-Studio, обучение программированию, ошибки в коде, Программирование, Совершенный код, учимся на ошибках, хороший код

Улучшим качество кода!
Я написал маленькую электронную книгу в которой рассматриваю вопросы как сделать код лучше. Книга ориентирована на Си/Си++ программистов, но будет интересна и разработчикам, использующих другие языки. Формат книги не подходит для моего любимого Хабра, но мне интересно получить обратную связь и обсудить мысли, изложенные в статье. Поэтому я решил разместить здесь только анонс, а с самой статьей можно познакомиться здесь. И приглашаю в комментарии для обсуждения.

Надеюсь вам понравился этот сборник советов. Конечно, предупредить о всех способах написать программу неправильно невозможно, да в этом и нет смысла. Моей целью было предостеречь программиста и развить в нем чувство опасности. Возможно, когда программист в очередной раз столкнется с чем-то непонятным, он вспомнит о моих наставлениях и не станет торопиться. Иногда несколько минут изучения документации или написание более простого/ясного кода позволит избежать внесения скрытой ошибки, которая затем несколько лет отравляла бы жизнь пользователям и коллегам.

Вот 42 темы, которые я рассматриваю:

  1. Не берите на себя работу компилятора
  2. Больше 0, это не 1
  3. Один раз скопируй, несколько раз проверь
  4. Бойтесь оператора ?: и заключайте его в круглые скобки
  5. Используйте доступные инструменты для проверки кода
  6. Проверьте все места, где указатель явно приводится к целочисленным типам
  7. Не вызывайте функцию alloca() внутри циклов
  8. Помните, что исключение в деструкторе — это опасно
  9. Используйте для обозначения терминального нуля литерал ''
  10. Старайтесь «не мельчить» при использовании #ifdef
  11. Не жадничайте на строчках кода
  12. Занимаясь Copy-Paste, сосредоточьтесь в конце работы
  13. Выравнивайте однотипный код «таблицей»
  14. Помните: не всегда достаточно компилятора и хорошего стиля кодирования
  15. Если есть возможность, начинайте использовать enum class.
  16. «Смотрите как я могу» — недопустимо в программировании
  17. Используйте специализированные функции для затирания в памяти приватных данных
  18. Знания, полученные при работе с одним языком, не всегда применимы к другому языку
  19. Как правильно вызвать один конструктор из другого
  20. Проверки о достижении конца файла (EOF) может быть недостаточно
  21. Проверяйте признак достижения конца файла (EOF) правильно
  22. Не используйте #pragma warning(default: X)
  23. Вычисляйте длину строкового литерала автоматически
  24. Идентификаторы override и final должны стать вашими новыми друзьями
  25. Больше не сравнивайте 'this' с nullptr
  26. Коварный VARIANT_BOOL
  27. Коварные BSTR строки
  28. Не делайте макрос там, где можно сделать обыкновенную функцию
  29. Используйте для итераторов префиксный оператор инкремента (++i) вместо постфиксного (i++)
  30. Visual C++ и функция wprintf()
  31. В C и C++ массивы не передаются по значению
  32. Бойтесь printf
  33. Никогда не разыменовывайте нулевые указатели
  34. Undefined behavior ближе, чем вы думаете
  35. Добавляя в enum новую константу, не забываем поправить операторы switch
  36. Если на вашем компьютере происходят магические события, проверьте память
  37. Бойтесь оператора continue внутри do {… } while(...)
  38. С сегодняшнего дня используйте nullptr вместо NULL
  39. Почему некорректный код иногда работает
  40. Внедрите статический анализ кода
  41. Сопротивляйтесь добавлению в проект новых библиотек
  42. Не давайте функциям название «empty»

Итак, ссылка на статью: http://www.viva64.com/ru/b/0391/

На английском языке: http://www.viva64.com/en/b/0391/

Я предвижу, что может нечаянно приключиться Хаброэффект, поэтому хочу заранее подстраховаться. Поэтому выкладываю на Яндекс Диск в формате PDF:

Русский: https://yadi.sk/i/RCHauHFBr2cSs

Английский: https://yadi.sk/i/u11TL5ccr2cSf

P.S. Я специально не размещаю текст книги на других сайтах. Достаточно много людей сообщает о недочётах в тексте, и, если текст будет опубликован в нескольких местах, я замучаюсь вносить исправления. Когда текст стабилизируется, я размещу его ещё где-то в разных форматах. Пока же прошу отнестись с пониманием. И ещё просьба. О замеченных ляпах прошу писать мне на почту (karpov [@] viva64.com), а не в комментариях.

Автор: PVS-Studio

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js