Андрей
<offtopic>Всегда хотелось узнать, где вы вот этого "в ковычках" понабрались?</offtopic>
Андрей
теги же, так верно называется?)
Чего теги? Всегда "кавычки" в русском языке было
Dmitriy
Vladislav
Кстати, а Теги в Go несут еще какие-либо функции, кроме помощи при рефлексии?
Ivahaev
Ну можно и кастомной информацией их загрузить.
Alexander
Mike
ну это если таких функций 20, и у всех набор разный, то под каждую структуру делать не оч, да
Alexander
вполне нормально, если это разные данные то и тсруктуры должны быть разные
Alexander
лезьти и пихать везде пустые интерфесы в го, потому что это лучше выглядит – это опитонивание языка
Alexander
не надо так
Mike
не, я согласен, что лучше именованная структура
Mike
но неименованная лучше чем 20 параметром
Alexander
лучше 20 параметров, чем пустой интерфейс
Alexander
это хоть зарефакторить можно потом
Mike
ага, может ты еще винапи вспомнишь?
Mike
как классно было помнить, что между 2 и 3 аргументом нужно еще 3 нулла передать
Mike
Mike
обертки — это уже что-то на уровне тех же именованных структур
Mike
еще раз, я не говорю, что пустой интерфейс — хорошо, я говорю, что 20 параметров — хуже
Anonymous
Нужно голосование. Я голосую за 20 параметров.
явное лучше
Ivan
а все параметры в структуру нельзя что ли обернуть и передавать ее одну?
Anonymous
явное лучше
Java тут не место! ))
Мерль
Господа, ну вы что Какие двадцать параметров Какие интерфейсы
Мерль
Используйте структуры и будет вам счастье
Dmitriy
Как лучше передавать много параметров в функцию? Использовать структуру – 40 👍👍👍👍👍👍👍 83% Другое – 5 👍 10% Стопицот парметров - так и передавать. С группировкой по типам – 3 👍 6% Использовать interface{} ▫️ 0% 👥 48 people voted so far. Poll closed.
Java тут не место! ))
Блин, с опазданием понял шутку
Anton
есть вот такая спорная баянистая статья: https://dave.cheney.net/2014/10/17/functional-options-for-friendly-apis
Anonymous
есть вот такая спорная баянистая статья: https://dave.cheney.net/2014/10/17/functional-options-for-friendly-apis
Было бы наверно неплохо иметь возможность задавать дефолтные значения для аргументов функций...
Igor
Фабрики параметров с фабриками объектов! С фабриками для первых двух фабрик
Anton
и фабриками фабрик первых двух фабрик
Anonymous
и фабриками фабрик первых двух фабрик
Не понял, прошу объяснить.
Igor
по фабрике на каждый параметр
Anton
Не понял, прошу объяснить.
больше фабрик хороших и разных
Anonymous
Похоже, что я не знаю, что такое "фабрика"...
Anonymous
погуглил, вроде начал догадываться
Anton
в джаве их много, ибо язык располагает
Anton
вот например в apache xml-rpc: https://ws.apache.org/xmlrpc/apidocs/org/apache/xmlrpc/server/RequestProcessorFactoryFactory
Konstantin
В идеале, чтобы помимо дефолтных значений у аргументов, можно было бы еще вызывать функцию с именнованными аргументами. x := a(name="Adolf", age=13), а те что не заданы в функции использовали бы значения по умолчанию. Привет, Питон)
Konstantin
А так, та функция с кучей аргументов, как и сказал выше - база для оберток вокруг нее же.
Konstantin
x := a(params{name: "Adolf", age: 13}) Какие проблемы?
Я говорю, чтобы это было в функциях самих, а не находить обходной путь)
Anonymous
x := a(params{name: "Adolf", age: 13}) Какие проблемы?
Как убедиться, что остальные параметры дефолтные, а не заданы пользователем?
Konstantin
params struct { a *int } // ... if p.a == nil { // use defaults, Luke }
тобишь если аргументов снова таки море, то должно быть море if'ов, шикарно)
Anonymous
А какая разница?
Например, в функции age равен нулю. Это пользователь передал 0 или он ничего не передал?
Kirill
нет. хочешь — не делай if'ы. делай как хочешь, понимаешь? хоть рефлектом из мапы дефолты вгружай, хоть что
Kirill
всем по-фи-гу.
Igor
Konstantin
Например, в функции age равен нулю. Это пользователь передал 0 или он ничего не передал?
Плюс еще, дефолтное значение может быть не обязательно дефолтным в системе. То есть, может мне нужен дефолтный age = 10)
Konstantin
нет. хочешь — не делай if'ы. делай как хочешь, понимаешь? хоть рефлектом из мапы дефолты вгружай, хоть что
зачем вообще влезать в разговор о том как передавать аргументы, если всем пофигу? :)
Kirill
зачем вообще влезать в разговор о том как передавать аргументы, если всем пофигу? :)
затем, чтобы натолкнуть на мысль, что выбор всё равно останется за тем, как захотелось, а не за тем, как кто-то посоветовал)
Anonymous
Наставить на истинный путь пофигизма всех, кому не пофиг!
Kirill
Konstantin
Используй паттерн Builder
Я думал об этом, но по мне тогда простота, к которой стремлюсь в данном пакете пропадет.
Konstantin
Либо сложно, либо уродливо, впрочем ничего нового
как уже сказал - уродливо только пока нет оберток для функции)
Konstantin
Еще, к слову, очень не хватает перегрузки функций)
Konstantin
Для чего?
для, кто бы подумал, перезагрузки функций. по мне это очень удобно бывает.
Dmitry
для, кто бы подумал, перезагрузки функций. по мне это очень удобно бывает.
Перегрузки - сомнительное счастье. Уж лучше это всё неймингом разрулить, как по мне, тк перегрузки это вообще не нужная фича, которая только язык усложняет
Konstantin
Перегрузки - сомнительное счастье. Уж лучше это всё неймингом разрулить, как по мне, тк перегрузки это вообще не нужная фича, которая только язык усложняет
По мне отличная альтернатива значениям по умолчанию и возможность использовал одно действие по разному. Уж точно лучше чем городить по сути одни функции, но с разными именами. А про усложняет язык разве что в реализации, уж читать и понимать исходники от этого сложнее точно не становится.
Konstantin
*Если делать с умом, разумеется. Но с умом надо все делать, иначе и if можно сделать такой, что язык усложняется, это же не повод отказываться от него
Anonymous
Так можно и до дженериков дойти. ))
А ВОТ ТЕПЕРЬ ПАБЛИК
кстати как справлятся без них?:
Anonymous
кстати как справлятся без них?:
писать функции под все варианты данных
Dmitry
По мне отличная альтернатива значениям по умолчанию и возможность использовал одно действие по разному. Уж точно лучше чем городить по сути одни функции, но с разными именами. А про усложняет язык разве что в реализации, уж читать и понимать исходники от этого сложнее точно не становится.
Тк не нужно ничего городить, просто определяешь одну "базовую" функцию и несколько более конкретных, которые вызывают базовую с частью параметров, которые предопределены. Это гораздо лучше, потому что это явно и не добавляет идиом в сам язык
Dmitry
кстати как справлятся без них?:
Без дженериков? Кодогенерацией, ну или рефлексией