Всем привет. Столкнулся с таким кодом в одном репозитории и

не могу понять, что застявляет людей так писать. Подскажите, пожалуйста.
TocElement::new("#2.1", "2.1").level(2) или TocElement::new("#1", "<em>D&amp;D<em>").raw_title("D&amp;D")
Т.е. вместо передачи параметра в конструктор, после его создания вызываются его функции для настройки (здесь в них просто сохранятюся нужные значения).
Я бы после C++ и Python'а просто создал опциональный параметр, потому что в Rust нет параметров по умолчанию, как я понял.
Люди не делают так потому что придётся передавать в некоторых случаях вместо лишних параметров писать None (если сделать их, конечно, опциональными)? Или я чего-то ещё не понимаю? Спасибо

13 ответов

9 просмотров

может быть обсуловлено бизнес-логикой

О паттерне. А если надо кучу значений передавать в конструктор? Будет конструктор с 10, 20, 30 аргументами?

Да, всё так

Forder
О паттерне. А если надо кучу значений передавать в...

Хотя, если так много параметров, то, скорее всего, архитектура хромает

Forder
О паттерне. А если надо кучу значений передавать в...

Думаю надо задуматься об уменьшении сущностей

погугли builder pattern

Dmitry-Luschan Автор вопроса
Dmitry-Luschan Автор вопроса
Forder
О паттерне. А если надо кучу значений передавать в...

И нет, никакого отношения к builder этот код не имеет. Просто такой странный стиль.

Dmitry-Luschan Автор вопроса
Алиса Кассель-Королёва
погугли builder pattern

Погуглил. Здесь ничего такого нет. Просто такой стиль

Зависит от принятой архитектуры и личного желания того или иного автора. Параметры по умолчанию есть. Они как правило реализуют Default. Опциональные параметры дороги, так как придётся всегда проверять из на None. Если можно без них, то лучше без.

Алишер Галиев
Зависит от принятой архитектуры и личного желания ...

А как Default помогает параметры по умолчанию делать? Я же все равно не смогу функцию вызвать, не перечислив все параметры И в разных функциях значение по умолчанию может быть разным в конце концов

Dmitry-Luschan Автор вопроса
Georgy Firsov
А как Default помогает параметры по умолчанию дела...

Да, увы Default далеко не равнозначен параметрам по умолачнию(

Похожие вопросы

Обсуждают сегодня

'frakturBold' => ['𝖆', '𝖇', '𝖈', '𝖉', '𝖊', '𝖋', '𝖌', '𝖍', '𝖎', '𝖏', '𝖐', '𝖑', '𝖒', '𝖓', '𝖔', '𝖕', '𝖖', '𝖗', '𝖘', '𝖙', '𝖚', '𝖛', '𝖜', '𝖝', '𝖞', '𝖟', '𝕬', '𝕭', '𝕮', '𝕯'...
Roma
4
Подскажите пж Юзер отправляет текст с картинкой, как получить айди этой картинки? Ну или саму картинку, мне она потом все равно в виде буфера нужна
Ilya Taeronn
6
а шо с ютубом совсем пиздец?
Андрей
4
Гутен морген А кто-нибудь уже изучал вопрос как делать тапалки? Часть с ботом+сам мини апп как делать понимаю, вопрос в интеграции с блокчейном. Его тоже базу уже немного пони...
𝖒 𝖊 𝖙 𝖆 𝖒 𝖔 𝖉 𝖊 𝖗 𝖓 💋❤️🖤❤️🖤💋 龙
10
Сonst magicTgHTML = (text, entities) => { let processedText = text; let offsetShift = 0; entities.forEach(entity => { const { offset, length, type, url, ...
Андрей
1
Всем привет, а может кто-нибудь подсказать Если зайти в BotFather и справа нажать на три точки, то там есть кнопка "отправить свой телефон" Можно ли это как-то реализовать в с...
Artem Stormageddon
4
а что делать если тебя убивают на картах?
Yarik yarik kyda ti lezesh
43
if (user?.choseType === 'oneDay') { await ctx.reply( 'Добро пожаловать в команду «Магнита»! Правда, на один день ☺️ ', ); await ctx.s...
Kokni
1
Товарищи, здравствуйте Подскажите, пожалуйста, по поводу deeplink Есть ли какая-то возможность передать не такой t.me/your_bot?start=XXXX А что-то такое? t.me/your_bot?new=XX...
Artem Stormageddon
5
у вас клиент тг на мобиле не висит?
meow *
3
Карта сайта