powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / getter's Java VS Константные методы C++
12 сообщений из 12, страница 1 из 1
getter's Java VS Константные методы C++
    #37624781
Фотография ivanov-void
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Приветствую!

Например, метод, читающий какое- либо поле -

C++
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
...
private:
   ...
   char * pName;
...
public:
   ...
   char* GetName() const { // inline
      return pName;
   }
...



Java
Код: java
1.
2.
3.
4.
5.
6.
7.
...
private String name;
...
public String getName() {
   return name;
}
...



Сразу очевидные преимущества первого подхода:
Проверка модификации поля на этапе компиляции;

Облегчение сопровождения (если какой- то метод портит поля, множество подозреваемых методов сокращается);

...
...
Рейтинг: 0 / 0
getter's Java VS Константные методы C++
    #37624785
svenom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ivanov-voidПроверка модификации поля на этапе компиляции;Вы наверное хотели сказать "инициализации", а не "компиляции"? Почитайте про ключевое поле final.
ivanov-voidОблегчение сопровождения (если какой- то метод портит поля, множество подозреваемых методов сокращается);Вообще непонятно к чему это. Через ваш метод getName() нельзя изменить значение поля name. Никак.
Наконец, последнее - вопрос то ваш в чем?
...
Рейтинг: 0 / 0
getter's Java VS Константные методы C++
    #37624789
Фотография ivanov-void
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Приветствую, svenom!

Нет, я все верно написал.
final сделает константным само поле, хотя нам может потребоваться менять его в дальнейшем. Не обязательно String .
Вопрос риторический.
...
Рейтинг: 0 / 0
getter's Java VS Константные методы C++
    #37624894
Фотография Ruslan.Isbarov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ivanov-voidВопрос риторический.
Так и что с того? Все равно же существует способ из константного метода через указатель вызвать другой, не константный, который изменит состояние объекта.
...
Рейтинг: 0 / 0
getter's Java VS Константные методы C++
    #37624902
VoDA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ivanov-voidПриветствую!

Сразу очевидные преимущества первого подхода:
Проверка модификации поля на этапе компиляции;

Облегчение сопровождения (если какой- то метод портит поля, множество подозреваемых методов сокращается);

...
Салют.

Есть более интересные подходы - тот же first class property. Реализован в C#. В java может быть когда нибудь появится.

Возможный вариант кода:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
public class Person {
  public property readonly String name;
  public property int age;
}

public class Person {
  public property String name get;
  public property int age get set;
}


Основной бонус пропертей правда в другом. Это возможность писать код вида person.name = "Vasya"; вместо person.setName("Vasya");

Плюс в java практически не актуальна проблема "кто портит поле". Множество подозреваемых легко подсказывает любая современная IDE. Так что преимущества "константного метода из C++" конечно есть, но при управляемой памяти и других фичах для java это не актуально.
...
Рейтинг: 0 / 0
getter's Java VS Константные методы C++
    #37624935
svenom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VoDAivanov-voidПриветствую!

Сразу очевидные преимущества первого подхода:
Проверка модификации поля на этапе компиляции;

Облегчение сопровождения (если какой- то метод портит поля, множество подозреваемых методов сокращается);

...
Салют.

Есть более интересные подходы - тот же first class property. Реализован в C#. В java может быть когда нибудь появится.

Возможный вариант кода:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
public class Person {
  public property readonly String name;
  public property int age;
}

public class Person {
  public property String name get;
  public property int age get set;
}


Основной бонус пропертей правда в другом. Это возможность писать код вида person.name = "Vasya"; вместо person.setName("Vasya");Да это все голимый синтаксический сахар. Никакой реальной пользы не имеет.
...
Рейтинг: 0 / 0
getter's Java VS Константные методы C++
    #37624963
VoDA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
svenomVoDAЕсть более интересные подходы - тот же first class property. Реализован в C#. В java может быть когда нибудь появится.Да это все голимый синтаксический сахар. Никакой реальной пользы не имеет.так и scala синтаксический сахар и замыкания тоже - то же самое можно сделать и без них. даже анонимные классы синтаксический сахар.

сахар нужен ибо удобно и упрощает жизнь в некоторых ситуациях. тот же property удобен когда нужно сослаться на свойство объекта. Пока это можно сделать через reflection, который не особо быстрый. First class property позволяет получить Person.name.property аналогично тому как сейчас реализован Person.class
...
Рейтинг: 0 / 0
getter's Java VS Константные методы C++
    #37625040
Leonidv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VoDAОсновной бонус пропертей правда в другом. Это возможность писать код вида person.name = "Vasya"; вместо person.setName("Vasya");

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

В Scala, кстати, разве есть property как отдельная сущность? В groovy вроде есть.
...
Рейтинг: 0 / 0
getter's Java VS Константные методы C++
    #37625041
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VoDA,
+1
property всегда хорошо и лаконично. Минусов не вижу. Задолбало смотреть эти Get и Set простыни.
...
Рейтинг: 0 / 0
getter's Java VS Константные методы C++
    #37625058
Leonidv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123VoDA,
+1
property всегда хорошо и лаконично. Минусов не вижу. Задолбало смотреть эти Get и Set простыни.
property точно плох, когда за его вызывом скрывается много чего, типа обращения к БД или еще что.
...
Рейтинг: 0 / 0
getter's Java VS Константные методы C++
    #37625059
Leonidv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123VoDA,
+1
property всегда хорошо и лаконично. Минусов не вижу. Задолбало смотреть эти Get и Set простыни.
Пишите get/set - будет удобнее читать.
...
Рейтинг: 0 / 0
getter's Java VS Константные методы C++
    #37625062
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonidv,
я предлагаю советы давать автору топика :)
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / getter's Java VS Константные методы C++
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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