Соглашение об именовании переменных в соответствии с областью действия (класс, метод, глобальный ...) - PullRequest
1 голос
/ 02 марта 2010

Вскоре я запустил небольшой проект на C ++ и разработал некоторые правила именования для переменных в соответствии с областью действия.

Я сделал членов класса _prefixed_with_underscore и параметры методов suffixed_with_underscore_. Вскоре я стал нервничать по поводу изобретения соглашений об именах для всего, таких как глобальные переменные (хорошо, это может быть важно), встроенные глобальные функции, чтобы попытаться улучшить читаемость кода.

Я прочитал этот вопрос и его ответы , который ответил на некоторые мои сомнения относительно соглашения об именах, особенно относительно имен параметров методов. Может быть, a_rule_like_this_ для имен параметров может быть плохой идеей.

Итак, мой вопрос: какие соглашения об именах вы используете для разных «сущностей» при программировании, особенно для имен параметров? Спасибо.

Ответы [ 4 ]

3 голосов
/ 02 марта 2010

Есть много людей, которые создали соглашения - Google для C ++ именования

Также есть руководства по стилю, которые также предлагают способы программирования.

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

Кроме того, соглашения об именах будут различаться для разных языков (и для разных ОС), поэтому не используйте предложения PHP для C ++. (предыдущий _ создает проблему для C ++). Для C ++ наиболее распространенными соглашениями являются параметры обычного текста, но переменные экземпляра либо заканчиваются на _, либо начинаются с m_ (я предпочитаю первый)

1 голос
/ 02 марта 2010

Это немного больше, чем вопрос мнения. Итак, вот мой.

  1. Не парься по мелочам
  2. Проверьте мнения других людей по этому вопросу (что вы делаете)
  3. Не имеет значения, какое соглашение вы выберете, и гораздо больше, если вы будете применять его последовательно
  4. Вот некоторые из моих условностей:

    class MyGizmo
    {
    public:
      int DoIt();
    private:
      string myString_;
    };
    
    typedef vector<MyGizmo> MyGizmos;
    
    namespace somewhere
    {
      MyGizmos gizmos;
    };
    
    
    int MyGizmo::DoIt()
    {
      int retVal = 0;
      string strCopy = myString;
      retVal = strCopy.length();
      return retVal;
    }
    
1 голос
/ 02 марта 2010

Не ставьте перед префиксами идентификаторы, так как некоторые компиляторы резервируют их для своих нестандартных целей.

Мне нравятся соглашения об именах в Руководстве по стилю Google C ++ .

1 голос
/ 02 марта 2010

Никогда не создавайте идентификаторы, которые используют префикс «_». Подставка с префиксом зарезервирована для разработчиков компиляторов, чтобы использовать их в своих негодных целях. Это означает, что разработчикам компиляторов C / C ++ вполне допустимо создавать макросы, неявные локальные переменные, пространства имен, если они имеют хотя бы одно подчеркивание.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...