Информация об изменениях

Сообщение Re[11]: Обязательный именованный параметр с проверкой при ко от 26.07.2023 14:03

Изменено 26.07.2023 14:32 ·

Re[11]: Обязательный именованный параметр с проверкой при ком
Здравствуйте, sergii.p, Вы писали:

SP>·>Это "вариант 1" у топик-стартера в первом сообщении и его мнение "плодить класс на каждый параметр это чересчур". .

SP>у ТС класс занимал 10 строчек. Тут 3. Мне показалось что это основной критерий почему нельзя "плодить класс на каждый параметр".
Потому что ты смухлевал, удалив переводы строк и static метод для конструирования. А по сути ровно то же.

SP>·>Зачем ты это всё рассказал-то?

SP>ну ты ведь попросил, я рассказал.
Ну это уже было в стартовом сообщениии. А вопрос был об альтернативах.

SP>·>Кстати, вместо твоей колбасы с генериками давно можно просто писать record XType(int value){}.

SP>возможно. java — не мой основной язык. Если это работает, тем более идиома нового типа будет актуальна.
У этой идиомы и другие недостатки. Например, нет никакого способа запретить таки использовать один и тот же тип в разных параметрах. При копи-пастах код начнёт расползаться.
Было
Receipt transfer(AccountFrom from, AccountTo to, MoneyAmount amount, MoneyFee fee);

кто-нибудь побыстрому накопипастил и получилось
Receipt transfer(AccountFrom from, AccountTo to, MoneyAmount amount, MoneyAmount discountAmount, MoneyFee fee);

и ищи баги опять...

Мой вариант с интерфейсом этим не страдает, т.к. новые методы в интерфейс нельзя копипастить.
Re[11]: Обязательный именованный параметр с проверкой при ко
Здравствуйте, sergii.p, Вы писали:

SP>·>Это "вариант 1" у топик-стартера в первом сообщении и его мнение "плодить класс на каждый параметр это чересчур". .

SP>у ТС класс занимал 10 строчек. Тут 3. Мне показалось что это основной критерий почему нельзя "плодить класс на каждый параметр".
Потому что ты смухлевал, удалив переводы строк и static метод для конструирования. А по сути ровно то же.
Ты предложил так
class XType extends NewType<Integer> {
    XType(int val) { super(val); }
}

Можно было так:
class XType { final int val;
    XType(int val) { this.val=val; }
}

Даже короче.

SP>·>Зачем ты это всё рассказал-то?

SP>ну ты ведь попросил, я рассказал.
Ну это уже было в стартовом сообщениии. А вопрос был об альтернативах.

SP>·>Кстати, вместо твоей колбасы с генериками давно можно просто писать record XType(int value){}.

SP>возможно. java — не мой основной язык. Если это работает, тем более идиома нового типа будет актуальна.
У этой идиомы и другие недостатки. Например, нет никакого способа запретить таки использовать один и тот же тип в разных параметрах. При копи-пастах код начнёт расползаться.
Было
Receipt transfer(AccountFrom from, AccountTo to, MoneyAmount amount, MoneyFee fee);

кто-нибудь побыстрому накопипастил и получилось
Receipt transfer(AccountFrom from, AccountTo to, MoneyAmount amount, MoneyAmount discountAmount, MoneyFee fee);

и ищи баги опять...

Мой вариант с интерфейсом этим не страдает, т.к. новые методы в интерфейс нельзя копипастить.