Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / getter's Java VS Константные методы C++ / 12 сообщений из 12, страница 1 из 1
20.01.2012, 20:49:08
    #37624781
ivanov-void
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
getter's Java VS Константные методы C++
Приветствую!

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

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

Нет, я все верно написал.
final сделает константным само поле, хотя нам может потребоваться менять его в дальнейшем. Не обязательно String .
Вопрос риторический.
...
Рейтинг: 0 / 0
20.01.2012, 23:43:41
    #37624894
Ruslan.Isbarov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
getter's Java VS Константные методы C++
ivanov-voidВопрос риторический.
Так и что с того? Все равно же существует способ из константного метода через указатель вызвать другой, не константный, который изменит состояние объекта.
...
Рейтинг: 0 / 0
20.01.2012, 23:48:08
    #37624902
VoDA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
getter's Java VS Константные методы C++
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
21.01.2012, 00:22:15
    #37624935
svenom
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
getter's Java VS Константные методы C++
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
21.01.2012, 00:47:25
    #37624963
VoDA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
getter's Java VS Константные методы C++
svenomVoDAЕсть более интересные подходы - тот же first class property. Реализован в C#. В java может быть когда нибудь появится.Да это все голимый синтаксический сахар. Никакой реальной пользы не имеет.так и scala синтаксический сахар и замыкания тоже - то же самое можно сделать и без них. даже анонимные классы синтаксический сахар.

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

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

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


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