2015-07-28 2 views
-1

Есть ли способ для обеспечить использование современных возможностей C++ 11 из компилятора?Разрешить ТОЛЬКО C++ 11 функции кодирования и стиль

Мы должны начать новый проект, и пребывание на C++ принесет нам пользу от использования существующих инструментов и библиотек, но то, что в настоящее время вредит нам до смерти, - это злоупотребление кодировкой стиля C, необработанные указатели, C векторы стиля и все опасные функции C, которые подвержены ошибкам или создают ошибки, которые действительно трудно отслеживать, вы знаете, что я имею в виду.

Я прочитал записку о том, что плохо в C++ сегодня (C++ 11 и выше) - это прошлое C++ и злоупотребление низкоуровневыми/старыми функциями, когда это не является необходимым.

Я действительно хотел бы, чтобы обеспечить соблюдение компилятора или другого инструмента с использованием C++ 11 функций, таких как смарт-указатели, контейнеры, ссылочных параметров, стандартной библиотеки C++, а не библиотеки C и т.д.

Спасибо большое ,

EDIT: Я думал, что это не является необходимым уточнить использование обзора кода. и т. д. Я просто спрашиваю, есть ли инструмент/механизм, который фильтрует создание функций или применяет современные безопасные функции/методы кодирования. Все потерянные цели мы будем решать или выяснять позже. Большое спасибо!

+7

Это работа для проверки кода и, в определенной степени, переливания. Если разработчик постоянно * болит * вы, используя «опасные» возможности C, дисциплинируйте этого разработчика! – meagar

+0

C++ - это обновленный C. C++ 11 - это версия C++, в которой все старые C++ действительны, и вы можете использовать обновленные/новые функции. Было бы нецелесообразно применять только C++ 11, потому что он построен прямо поверх C++, он не стоит сам по себе. –

+1

Оставьте всю базу кода и используйте более управляемый язык (возможно, C#) ;-( –

ответ

4

Возможно, вы захотите взглянуть на clang-modernize, это может помочь с некоторыми из того, что вы ищете. Кроме того, статический анализ, помогающий поймать плохие практики, может помочь выявить области вашей кодовой базы, в частности, необходимо некоторое внимание/модернизация. Существует ряд таких инструментов, связанных с clang, и MSVC также имеет свой собственный static analysis, если вы работаете с Visual Studio.

1

Единственный способ гарантировать, что функции C++ 11, такие как auto, объявления переменных, использующие определения лямбда, диапазон, основанный на циклах и т. Д., Используются более старыми методами, это отзывы на основе человеческого кода.

Использование устаревших вещей, таких как использование std::auto_ptr, может быть отсортировано с помощью предупреждений.
Но применение стилей нового стиля может стать тяжелым, без наличия второй пары опытных глаз, смотрящих на код.

Я мог бы придумать инструмент для создания соответствующего инструмента анализа статического кода, определить старые шаблоны стилей и предложить стандартный способ C++ 11, но это слишком широкая тема и зависит от используемого инструмента статического анализа ,

+0

И только человек обнаружит ошибку в чем-то вроде «auto strVector = GetNames();» :) –

-1

рискует попасть в нижнее положение.

Значит, вы или ваш «эксперт» на программировании на С ++ хотите запретить определенные практики. Потому что вы знаете, что они плохие.

Одна из таких практик - использование необработанных указателей. Позор, что есть программисты на С ++, которые не только используют указатели очень часто, но и считают, что это хорошая вещь для использования. Ребята вроде Херба Саттера, который в недавнем разговоре (CppCon, я думаю) сказал именно это.

Другая практика, которую вы упомянули, - это использование векторов стиля С. Не проблема, так как C не имеет векторов.

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

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

PS: Я пытался запомнить, как пахнет ваш пост, теперь я помню. Это пахнет как один из тех, кто рассматривает этот документ, где один парень проводит половину времени, споря о орфографических ошибках в документах по дизайну.

+0

Я знаю, что вы понимаете, чего мы хотим достичь, разрабатывая кодовую базу как можно более безопасную и сохраняя некоторые строки кода, доступные нашим обозревателям кода. Вы уверены, что можете нанимать «настоящих экспертов» каждый раз, когда они вам понадобятся по доступной цене? Или даже найти их? .. Сами по себе вы пахнете как человек, который не касается реальной земли. – agustin

Смежные вопросы