Ответов (6)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. Меня действительно беспокоит, что если мне нужно изменить тип переменной, мне нужно будет обновить ее имя везде, где это происходит. Это головная боль обслуживания.