соглашение об именах для публичных и частных переменных?

Неправильно ли использовать m_varname как общедоступный, а тот же класс с _variable как частный

Ответов (6)

Решение

Некоторые опасения:

  • Зачем вам общедоступные переменные?

  • Идентификаторы, начинающиеся с _ и __, зарезервированы для системных библиотек. На практике это не имеет большого значения, но это приятно осознавать.

С учетом всего сказанного нет ничего плохого в создании соглашения об именах, независимо от того, как оно выглядит. Просто будьте последовательны.

Есть много соглашений C++. Главное - найти и / или адаптировать. Придерживайтесь этого и будьте последовательны. Если вы где-то работаете, постарайтесь соблюдать как можно больше условностей. Их так много, и у каждого есть веские аргументы, но они могут противоречить друг другу (Joint Strike Fighter, Bell Labs, Mozilla и т. Д.)

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

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

То же самое касается C++ и Java: вам не нужны ни венгерские обозначения, ни префиксы / суффиксы. У вас есть ключевое слово "это"!

class MyClass {
    private:
        int value;

    public:
        MyClass(int value) {
            this->value = value;
        }
}

Конечно, в этом простом примере вы можете (должны!) Использовать список инициализации конструктора;)

Поэтому вместо использования каких-либо неудобных обозначений просто используйте возможности языка. Когда вы знаете имя своей переменной-члена - вы знаете, что оно идеально. Зачем вам запутывать его с помощью "_"?

Что касается использования одних и тех же имен для публичных и приватных членов: это абсолютно неправильное мышление! Зачем нужны две вещи, чтобы представлять одно и то же в одном и том же классе? Сделайте его частным, назовите его идеально и предоставьте доступ к геттерам и сеттерам.

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

Предполагая, что вы работаете с C++, мой ответ - НЕТ. Это вполне разумно, но вы действительно должны придерживаться этого соглашения.

Однако языки со статической типизацией, такие как C#, предполагают, что такие соглашения об именах в некоторой степени избыточны.

Лично я считаю это некрасивым, но неясно, откуда берется переменная в C++, поэтому шугаринг может помочь.

Вы не должны использовать имена, начинающиеся с подчеркивания или содержащие двойное подчеркивание. Эти имена зарезервированы для компилятора и реализации. Помимо этого ограничения, вы можете использовать любое соглашение об именах, которое нравится вам и вашей команде. Лично я ненавижу любую форму «венгерской» нотации, а также не люблю нотацию m_something. Меня действительно беспокоит, что если мне нужно изменить тип переменной, мне нужно будет обновить ее имя везде, где это происходит. Это головная боль обслуживания.