powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Get*/Set* отдельными методами или одним, какой вариант более православный?
5 сообщений из 30, страница 2 из 2
Get*/Set* отдельными методами или одним, какой вариант более православный?
    #39331967
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovИменно поэтому в борланде изобрели property.
Да, не захотели макросы. Подумали, что лучше новый язык сделать
...
Рейтинг: 0 / 0
Get*/Set* отдельными методами или одним, какой вариант более православный?
    #39331969
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly MoskovskyДа, не захотели макросы. Подумали, что лучше новый язык сделать

Ну так в стандарт тоже продвинутые макросы под названием template включили же. Может, к
С++20 доберутся и до property...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Get*/Set* отдельными методами или одним, какой вариант более православный?
    #39331970
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly MoskovskyDimitry SibiryakovИменно поэтому в борланде изобрели property.
Да, не захотели макросы. Подумали, что лучше новый язык сделать И где они сейчас?
То то же, сила макросов !
...
Рейтинг: 0 / 0
Get*/Set* отдельными методами или одним, какой вариант более православный?
    #39332016
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
I dont knowПриветствую, пишу портянку и всплыл вопрос, какой вариант на ваш взгляд православней и почему?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
class A {
public:
    int  getVal() { return _val; }
    void setBal(int val) { _val = val; }
private:
    int _val;
}



или получение и установку переменной-члена класса объединить в одном методе:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
class A {
public:
    int val(int val=-1) { if(val > -1) return _val; else _val = val; }
private:
   int _val;

}


Или так только хипстеры с Ямайки пишут?


getter должен быть const .

получение и установку естественно мешать нельзя.

пишут так ява-пузики, да, потому что надо еще 20 раз подумать, нужно ли скрывать доступ к переменной value вообще.
тут понятно, привет учебный, а в реальной жизни надо думать.
...
Рейтинг: 0 / 0
Get*/Set* отдельными методами или одним, какой вариант более православный?
    #39332200
alexy_black
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я считаю get_ set_ лишней фигней, и всегда пишу так:
Код: plaintext
1.
2.
3.
4.
5.
6.
class foo{
public:
  /* other methods */
 int value() const ;
 void value(int v) ;
};

если эти методы виртуальные, но не чисто виртуальные, то в производном классе, чтобы перегрузить только один из них, нужно писать using foo::value;

метод с дефолтным параметром лучше не использовать по двум причинам.
1. этот метод раскрывает слишком много информации об этом значении. то есть метод int value(int v=-1) исходит из предположения, что есть недействительное значение, которое и можно использовать, чтобы определить зачем вызван этот метод. потом, когда будешь писать код, который это использует, нужно будет помнить, что -1 служебное число.. если это значение действительно никогда не может быть меньше нуля, то нужно выбрать unsigned int.
2. один метод должен исполнять одну и только одну логическую функцию. хорошее название метода описывает все, что он делает. вот, например, хорошие названия методов, в классе report например: generate_data format save.. вот тоже хорошее название метода: generate_data_format_and_save. оно выглядит плохо не потому что название плохое, а потому, что метод выполняет сразу три функции. это я к тому, что в предложенном способе метод исполняет две функции.. его название должно быть вроде set_or_get_value. тогда логическая ошибка становится очевидной.

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


некоторые аргументируют, что set_ get_ лучше, потому что сразу понятно, что ты делаешь - устанавливаешь или получаешь значение. но это же относится и к моему способу - сразу же видно передаешь что-нибудь в метод или нет.


константность обязательно нужно указывать. лучше привыкнуть сразу писать const, его потом можно убрать если что, но он может уберечь от ошибок.
...
Рейтинг: 0 / 0
5 сообщений из 30, страница 2 из 2
Форумы / C++ [игнор отключен] [закрыт для гостей] / Get*/Set* отдельными методами или одним, какой вариант более православный?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]