Почему стоит придерживаться get-set, а не car.speed () и car.speed (55) соответственно? - PullRequest
12 голосов
/ 12 января 2010

Помимо однозначной ясности, почему мы должны придерживаться:
car.getSpeed() и car.setSpeed(55)
когда это можно использовать также: car.speed() и car.speed(55)

Я знаю, что get () и set () полезны для сохранения управляемости любых изменений в элементе данных, сохраняя все в одном месте.

Также, очевидно, я понимаю, что car.speed() и car.speed(55) - это одна и та же функция *1013*, что делает это неправильным, но затем в PHP, а также в Zend Framework, то же действие используется для GET , POST, постбэки.
В VB и C # есть «свойства», и они используются многими, к большому отвращению пуристов, которых я слышал, и в Ruby есть такие вещи, как 5.times и .each, .to_i и т. Д.
И у вас есть перегрузка операторов, множественное наследование, виртуальные функции в C ++, определенные комбинации которых могут свести с ума любого.

Я имею в виду, что существует так много парадигм и способов, которыми делаются вещи, что кажется странным, что никто не пробовал конкретную комбинацию, о которой я говорил.

Что касается меня, моя причина в том, что короче и чище читать код.
Я очень не прав, немного не прав, это просто странно и так не используется, или что еще?

Если бы я все-таки решил остаться верным, я мог бы использовать car.speed() и car.setSpeed(55).
Это неправильно в любом случае (просто опуская "получить")?

Спасибо за любые объяснения.

Ответы [ 12 ]

0 голосов
/ 12 января 2010

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

0 голосов
/ 12 января 2010

Кроме однозначной ясности, почему мы должны придерживаться: car.getSpeed ​​() и car.setSpeed ​​(55) когда это можно использовать также: car.speed () и car.speed (55)

Поскольку во всех языках, с которыми я сталкивался, car.speed() и car.speed(55) одинаковы с точки зрения синтаксиса. Просто глядя на них так, оба могли бы вернуть значение, что не так для последнего, если оно должно было быть сеттером.

...