Найти в Дзене
Habr.com

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

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

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

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

  • Не берите на себя работу компилятора
  • Больше 0, это не 1
  • Один раз скопируй, несколько раз проверь
  • Бойтесь оператора ?: и заключайте его в круглые скобки
  • Используйте доступные инструменты для проверки кода
  • Проверьте все места, где указатель явно приводится к целочисленным типам
  • Не вызывайте функцию alloca() внутри циклов
  • Помните, что исключение в деструкторе — это опасно
  • Используйте для обозначения терминального нуля литерал '\0'
  • Старайтесь «не мельчить» при использовании #ifdef
  • Не жадничайте на строчках кода
  • Занимаясь Copy-Paste, сосредоточьтесь в конце работы
  • Выравнивайте однотипный код «таблицей»
  • Помните: не всегда достаточно компилятора и хорошего стиля кодирования
  • Если есть возможность, начинайте использовать enum class.
  • «Смотрите как я могу» — недопустимо в программировании
  • Используйте специализированные функции для затирания в памяти приватных данных
  • Знания, полученные при работе с одним языком, не всегда применимы к другому языку
  • Как правильно вызвать один конструктор из другого
  • Проверки о достижении конца файла (EOF) может быть недостаточно
  • Проверяйте признак достижения конца файла (EOF) правильно
  • Не используйте #pragma warning(default: X)
  • Вычисляйте длину строкового литерала автоматически
  • Идентификаторы override и final должны стать вашими новыми друзьями
  • Больше не сравнивайте 'this' с nullptr
  • Коварный VARIANT_BOOL
  • Коварные BSTR строки
  • Не делайте макрос там, где можно сделать обыкновенную функцию
  • Используйте для итераторов префиксный оператор инкремента (++i) вместо постфиксного (i++)
  • Visual C++ и функция wprintf()
  • В C и C++ массивы не передаются по значению
  • Бойтесь printf
  • Никогда не разыменовывайте нулевые указатели
  • Undefined behavior ближе, чем вы думаете
  • Добавляя в enum новую константу, не забываем поправить операторы switch
  • Если на вашем компьютере происходят магические события, проверьте память
  • Бойтесь оператора continue внутри do {… } while(...)
  • С сегодняшнего дня используйте nullptr вместо NULL
  • Почему некорректный код иногда работает
  • Внедрите статический анализ кода
  • Сопротивляйтесь добавлению в проект новых библиотек
  • Не давайте функциям название «empty»

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

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

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

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

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

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

Оригинал статьи на Хабре (2016 год)

К лучшим публикациям Хабра за сутки