Должен ли я действительно массово ввести явное ключевое слово?

Когда я использовал (недавно выпущенный) Cppcheck 1.69 в моем коде1, он показал много сообщений, где я не ожидал ни одного 😉 Отключение noExplicitConstructor Доказано, что все они были именно такого рода.

Но я обнаружил, что я не единственный, у которого много новых сообщений Cppcheck, посмотрите на результаты анализа LibreOffice (который я могу показать публично):

введите описание изображения здесь

Что бы сделал опытный программист:

  • Подавить проверку?
  • Массово представить explicit ключевое слово?

1 Редактировать: Это конечно не мой код но код, над которым я должен работать, это устаревший код: смесь C и C ++ в нескольких (до) стандартных вариантах, и это довольно большая база кода.

7

Решение

В прошлом я был укушен скачками производительности, вызванными неявными преобразованиями, а также явными ошибками. Поэтому я склонен всегда использовать explicit за все конструкторы, которые я не хочу участвовать в неявных преобразованиях, так что компилятор может помочь мне перехватить мои ошибки — и я затем стараюсь всегда также добавлять комментарий «// неявное предназначение» в ctors, где я явно намерен использовать их как преобразование ctors неявно. Я считаю, что это помогает мне писать более правильный код с меньшим количеством сюрпризов.

… Так что я бы сказал «да, иди добавить explicit«- в конечном итоге вы будете рады, что сделали это, — это то, что я сделал, когда впервые узнал об этом, и я рад, что сделал».

8

Другие решения


По вопросам рекламы ammmcru@yandex.ru
Adblock
detector