Michael
Alex
swagger
Это видели . А аналоги есть ? Неплохие
Alex
А confluence используете ?
Michael
Vladislav
фабричная функция (не ооп)
Ну это на самом деле неважно. Т.к. в коммьюнити принято определенные функции называть конструкторами. И нет никакого смысла это оспаривать и прививать другим. (Учитывайте, что я имею именно функции вида NewType. Из этого имени следует, что назначение этой функции примерно соответсвует конструкторам.)
Michael
Alex
Michael
Платно ?
я не в курсе, вероятно, да
Alex
Aleksandr
Vladislav
Michael
Michael
т.е. NewTypename из Go вполне соответствует
Michael
фабрика не обязательно возвращает один и тот же конкретный тип
Aleksandr
Mikhail
gc?))
Michael
gc?))
та вроде Банда Четырёх говорит, что an existing object might be reused
Aleksandr
Vladislav
И так то она производит новое.
Vladislav
Только не всегда.
Aleksandr
ничего страшного
andrew
фабрика и пул - разные паттерны
andrew
https://ru.wikipedia.org/wiki/Порождающие_шаблоны_проектирования
Michael
в описании fabric method банда 4 часто употребляет понятие и слово interface, по хорошему что обозвать гошную NewTypename() *Typename вот этими словами fabric method, она должна возвращать интерфейс, т.к. в ориг книге примеры на С++ , то там используется абстрактный класс
Michael
ещё сами они fabric method называют так virtual constructor
Michael
Если оно крякает как утка, плавает как утка и выглядит как утка - то можно это обозвать конструктором
Roman
конструктор, т.к. конструирует новый объект. а фабрика - это кому то моча ударила в свое время, совсем не нужная абстракция. Массив создаваемых объектов с методом добавления нового - типа вот фабрика
Alexander
Фабрикой обычно называют что-то, что может создавать _разные_ объекты в зависимости от параметров. Эти разные объекты обычно реализуют какой-то общий интерфейс. Например функция СделайГеометрическуюФигуру(тип) может вернуть Квадрат или Прямоугольник. Конструктор же всегда возвращает один строго определенный тип объекта (если возвращает вообще).
Aleksandr
Aleksandr
Alexander
Это абстрактная фабрика
Ну я бы не стал уже углубляться в различия между фабрикой, фабричным методом и еще какими-то вариациями. Фабрика может быть не абстрактной и возвращать разные типы объектов.
Aleksandr
Aleksandr
Aleksandr
gof?
Aleksandr
Всем привет. Задался вопросом, как правильно организовать свой код web приложения или просто программы на Go. Можете посоветовать какую-нибудь литературу, статьи, каналы? Репозитории на Github с примерами
Спасибо.
Anonymous
Michael
Michael
Посмотри код стандартных пакетов на гитхабе
Aleksandr
Aleksandr
+. Спасибо. Буду изучать и пробовать
Andrew
О, салют)
Gleb
Привет, народ) Только начал копать Go, есть какие-нибудь проекты по транспилированию какого-нибудь расширенного синтаксиса в Go? Нашёл только всякие поделки по типу Go -> JS, не более. Хочется хотя бы классы и прочее OOP плюшки иметь. Не надо мне рассказывать, что и так нормально жить можно. Жить можно как угодно, но DX от такого языка будет достаточно уныл. Сам раньше писал много лет на C++, а потом перескочил в JS и вот как-то не получается из JS-а вырваться. Основной бум скорости развития JS получил с появлением нормального транспайлера в виде Babel и возможности быстро и просто налепить плагин для твоего пропосала в стандарт языка. Что-то мне слабо вериться, что в Go комьюнити такого не напилили. Киданите в меня ссылочкой)
Vladislav
Vladislav
А вообще странно полагать, что сообщество пошло по пути js. Как будто других путей нет.
Gleb
Спасибо, изучу) Понятно, что путей много, просто я не видел ни в одном языке за много лет такого бурного развития и выработки самых лучших решений всем миром. У нас вон огромный кусок в виде статической типизации тем же Flow привнесли, а почти тут жа запилили babel plugin, который транспайлит ваши инструкции "статической" типизации в runtime проверки и ещё и в runtime'е начинает проверять. Если бы такое было в Go комьюнити, то как мне кажется, об отсутвии OOP в Go я бы даже и не услышал.
Заур
js сообществу js приходится воспринимать как данность, от него никуда не уйти
Заур
golang изначально осознанно создавался под конкретные задачи. Зачем же его как-то расширять, если всё, что сочли нужным, уже в него добавили
Заур
есть конечно некоторые вещи, которые в этой группе нельзя называть 😃 , но это надо на уровне компилятора добавлять
Vladislav
Gleb
Самые лучшие решения, ага. Тысячи либ для одной функции.
Я говорю не про либы, я говорю про фичи самого синтаксиса языка. Тот же pipeline operator из Erlang/Elexir/etc " |> " можно внести путём тупого и прямоленейного преобразования в обычный синтаксис вложенного вызова функций. Синтаксический сахар - очень важная штука, которая сильно улучшает читаемость кода. Взгляни на тот же async/await в C#.
Заур
Vladislav
Gleb
Но либы вообще тоже, просто их надо в свой проект с умом тянуть, а не закидывать вёдрами всё, что попало. Я у себя в компании постоянно бью по рукам за не нужные либы, равно как и за велосипеды.
Gleb
В рамках ФПшного подхода безумно нужная вещь
Vladislav
А делает то он что?
Vladislav
Отправляет поочередно?
Vladislav
Ух достижение.
Gleb
С добавлением каррирования и частичного применения это очень мощная штука, серьёзно
Gleb
Ну или те же полноценные классы в JS были сначала полностью реализованны путём транспайлинга, а потом уже запиленны в движок.
Gleb
Или те же интерфейсы (First-Class Protocols), пока на этапе рассмотрения, но мы можем это уже использовать, просто транспилируя код в обычный JS.
Gleb
Понимаешь, это примерно как проверка бизнес модели на маленьком кривеньком прототипе, а потом уже запуск нормальной разработки VS долгое и муторное запилинивание того, что не взлетит.
Alexander
Не надо сравнивать JS и Go, т.к. в JS приходится работать с огромным количеством легаси, да еще и зоопарком браузеров. Так что там без транспайлера новые фичи просто не выживут. Их никто не сможет использовать и, соответственно, никто не будет знать.
Alexander
Сама по себе идея транспайлеров, по-моему, нигде кроме JS так активно не используется. Go, кстати, в ранних версиях тоже сначала конвертировался в С++, а потом компилировался обычным gcc. Но, думаю, это как минимум сильно медленее
Roman
Alexander
Читаемость кода. Вместо лесенки коллбэков безумной глубины - более-менее удобоваримая структура получается
Roman
Gleb
А что именно улучшает async/await?
Ну представь, что ты можешь запустить горутину и тут же на месте дождаться результата её выполнения. При этом у тебя в горутине происходит, допустим, обращение к БД или нечто в этом роде, а стоимость запуска такой вот спецаильной горутины равна нулю.
Roman
Gleb
Подождали, пока выполнится первая функция, потом воспользовались её результатом и т.д. Никакого ничетаемого кода)
Slava
зачем это всё если можно синхронно в корутине? )
Roman