Именование get/set методов

 
0
 
C++
ava
ChipNDale | 24.01.2013, 05:56
По теме написана куча соглашений, рекомендаций и все же...

Наверное, самое простое и распространенное решение - использование Get/Set префиксов.
[+]  везде все одинаково
[-] от них уже в глазах рябит

Пример: у меня есть класс с константным интерфейсом:

class A
{
public:
    A(int foo, int bar) : foo_(foo), bar_(bar) { }

    int Foo() const { return foo_; }
    int Bar() const { return bar_;  }

private:
    int foo_;
    int bar_;
};


В данном случае у методов нет пары, чтобы использовать антонимы. Субъективно код и так выглядит и кратко, и ясно.
Ок, допустим мы не будем использовать префикс Get для аксессоров, но оставим Set. Сразу минус - теряется симметрия. Но код по-прежнему остается понятным. А теперь грабли)


class A
{
public:
    enum State { ON, OFF };
    
    // Упс
    // State State() const { /* ... */ }
    State GetState() const { /* ... */ }
    // ....
};


Вопрос: как достичь баланса в именовании методов, чтобы префиксы Get- не стали раковой опухолью кода и при этом не упереться в вышеприведенную проблему?

PS Да, я знаю, что есть еще ряд вариантов именования, но откровенно лень перечислять все с расписыванием плюсов и минусов. Разве что по мере необходимости.

Ответы (5)
ava
borisbn | 24.01.2013, 08:14 #
Цитата (ChipNDale @  24.1.2013,  04:56 findReferencedText)
// Упс

никакого упс не вижу.
Цитата
State state() const { /* ... */ }

и вообще, имя метода с большой буквы - фе...
у нас на фирме выбран стиль как в Qt: getter'ы - без префикса, setter'ы - с префиксом set и затем имя свойства с большой буквы
иногда get-методы лучше начинать либо с is либо с has.
Код получается вполне читаемым. Рекомендую
ava
Alca | 24.01.2013, 11:14 #
Цитата


имя метода с большой буквы - фе...

у нас на фирме выбран стиль как в Qt: getter'ы - без префикса, setter'ы - с префиксом set и затем имя свойства с большой буквы

иногда get-методы лучше начинать либо с is либо с has.

Код получается вполне читаемым. Рекомендую


очень даже ничего, советую
ava
ChipNDale | 24.01.2013, 11:55 #
Ну а у нас а-ля майкрософт и имена методов начинаются с большой, с этим я вряд ли что-то могу поделать)
ava
borisbn | 24.01.2013, 12:32 #
Цитата (ChipNDale @  24.1.2013,  11:55 findReferencedText)
 с этим я вряд ли что-то могу поделать

а зачем тогда
Цитата (ChipNDale @  24.1.2013,  04:56 findReferencedText)
Вопрос: как достичь баланса в именовании методов, 


?
ava
ChipNDale | 24.01.2013, 13:44 #
Похоже, я сам ответил на свой вопрос)
Зарегистрируйтесь или войдите, чтобы написать.
Фирма дня
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Участники
advanced
Отправить