NIKITONSKY_PUB Telegram 691
В Твиттере опять затронули тему геттеров. Я опять высказался, что мол, не понимаю. Зачем городить целый метод, который возвращает поле, и еще прятать поле, если можно напрямую прочитать поле? Кто умрет?

Объяснений обычно дают несколько.

Первое — а что если потом понадобится добавить логику? Ну когда понадобится, тогда и добавишь. Джетбрейнс на этом буквально бизнес построил, чтобы поле в метод можно было сконвертировать в любой момент.

(правда, они частично бизнес построили и на том, чтобы геттеры можно было сгенерировать одной кнопкой. На оба фронта играют, молодцы)

Второе — это же публичное АПИ поменяет, а у нас библиотека! Не, ну если у вас и правда библиотека, то ладно. Но много вы видели компаний, которые прям библиотеки пишут? Так-то я видел геттеры и просто в локальной кодбазе, причем тупые.

Третье — ну если правда логика какая-то нужна. Ленивое там поле, или кешируемое, или проверка какая. Тут я на вас очень обижусь, потому что если я вижу .getAge() я ожидаю что оно просто вернет age, а не начнет число Пи вычислять до сотого знака. Конвенции-с. Если нужен метод, который что-то действительно делает — ну так пусть он и выглядит как метод, который что-то делает. .calculateAge(), я не знаю.

Хуже всех тут выступают языки, которые умеют притворяться, что геттера нет, когда он есть. Типа, пишешь var y = obj.y, а на самом деле вызовется var y = obj.getY(). Нафига так делать? Какая цель преследуется? Чтобы выглядело симпатичнее, но читать-понимать было сложнее? Нет, спасибо. Вы думаете, почему на языках с большим количеством сахара так сложно программировать? Потому что вещи не то, чем кажутся.

Четвертое – иногда еще приводят аргумент, что мол геттеры мокаются/проксируются, а поля нет. Если честно, мне сложно представить что это такое и зачем это нужно. Зачем делать другой объект, который притворяется оригинальным объектом, и читать его поля. А если нужно читать поля, то зачем для этого другой объект.

Но я тупой Кложа-программист, каким-то образом у нас ничего этого нет и все прекрасно работает. Но у нас и объектов нет, так что... Тут у меня реально ощущение, что люди придумали себе проблемы и героически их решают.

И наконец пятое — что геттер/сеттер это единственный способ сделать разную видимость у чтения/записи. Тут мы упираемся в проблему, а нафига вообще ограничивать видимость/доступность операций, почему все не может быть public по умолчанию? Мое глубокое убеждение, что может.

Обычно приватную видимость защищают аргументами вроде: если программист увидит, что у массива есть поле size, открытое для записи, он сразу туда что-нибудь запишет и все сломает. То есть они как дети — видят розетку и сразу туда суют две спицы.

В такой логике (я пишу код для людей с интеллектуальным развитием 4-6 летнего ребенка, активно пытающегося самому себе навредить) жить, наверное, тяжеловато. Но тут есть такое соображение — в любой программе программист всегда может поделить на ноль и все сломать. Никто его не остановит и не помешает.

Однако же, на практике этого почему-то не происходит. Почему? На размышление дается тридцать секунд.



tgoop.com/nikitonsky_pub/691
Create:
Last Update:

В Твиттере опять затронули тему геттеров. Я опять высказался, что мол, не понимаю. Зачем городить целый метод, который возвращает поле, и еще прятать поле, если можно напрямую прочитать поле? Кто умрет?

Объяснений обычно дают несколько.

Первое — а что если потом понадобится добавить логику? Ну когда понадобится, тогда и добавишь. Джетбрейнс на этом буквально бизнес построил, чтобы поле в метод можно было сконвертировать в любой момент.

(правда, они частично бизнес построили и на том, чтобы геттеры можно было сгенерировать одной кнопкой. На оба фронта играют, молодцы)

Второе — это же публичное АПИ поменяет, а у нас библиотека! Не, ну если у вас и правда библиотека, то ладно. Но много вы видели компаний, которые прям библиотеки пишут? Так-то я видел геттеры и просто в локальной кодбазе, причем тупые.

Третье — ну если правда логика какая-то нужна. Ленивое там поле, или кешируемое, или проверка какая. Тут я на вас очень обижусь, потому что если я вижу .getAge() я ожидаю что оно просто вернет age, а не начнет число Пи вычислять до сотого знака. Конвенции-с. Если нужен метод, который что-то действительно делает — ну так пусть он и выглядит как метод, который что-то делает. .calculateAge(), я не знаю.

Хуже всех тут выступают языки, которые умеют притворяться, что геттера нет, когда он есть. Типа, пишешь var y = obj.y, а на самом деле вызовется var y = obj.getY(). Нафига так делать? Какая цель преследуется? Чтобы выглядело симпатичнее, но читать-понимать было сложнее? Нет, спасибо. Вы думаете, почему на языках с большим количеством сахара так сложно программировать? Потому что вещи не то, чем кажутся.

Четвертое – иногда еще приводят аргумент, что мол геттеры мокаются/проксируются, а поля нет. Если честно, мне сложно представить что это такое и зачем это нужно. Зачем делать другой объект, который притворяется оригинальным объектом, и читать его поля. А если нужно читать поля, то зачем для этого другой объект.

Но я тупой Кложа-программист, каким-то образом у нас ничего этого нет и все прекрасно работает. Но у нас и объектов нет, так что... Тут у меня реально ощущение, что люди придумали себе проблемы и героически их решают.

И наконец пятое — что геттер/сеттер это единственный способ сделать разную видимость у чтения/записи. Тут мы упираемся в проблему, а нафига вообще ограничивать видимость/доступность операций, почему все не может быть public по умолчанию? Мое глубокое убеждение, что может.

Обычно приватную видимость защищают аргументами вроде: если программист увидит, что у массива есть поле size, открытое для записи, он сразу туда что-нибудь запишет и все сломает. То есть они как дети — видят розетку и сразу туда суют две спицы.

В такой логике (я пишу код для людей с интеллектуальным развитием 4-6 летнего ребенка, активно пытающегося самому себе навредить) жить, наверное, тяжеловато. Но тут есть такое соображение — в любой программе программист всегда может поделить на ноль и все сломать. Никто его не остановит и не помешает.

Однако же, на практике этого почему-то не происходит. Почему? На размышление дается тридцать секунд.

BY Стой под стрелой


Share with your friend now:
tgoop.com/nikitonsky_pub/691

View MORE
Open in Telegram


Telegram News

Date: |

Hashtags Hui said the messages, which included urging the disruption of airport operations, were attempts to incite followers to make use of poisonous, corrosive or flammable substances to vandalize police vehicles, and also called on others to make weapons to harm police. With the sharp downturn in the crypto market, yelling has become a coping mechanism for many crypto traders. This screaming therapy became popular after the surge of Goblintown Ethereum NFTs at the end of May or early June. Here, holders made incoherent groaning sounds in late-night Twitter spaces. They also role-played as urine-loving Goblin creatures. Invite up to 200 users from your contacts to join your channel Just as the Bitcoin turmoil continues, crypto traders have taken to Telegram to voice their feelings. Crypto investors can reduce their anxiety about losses by joining the “Bear Market Screaming Therapy Group” on Telegram.
from us


Telegram Стой под стрелой
FROM American