170 похожих чатов

А каков смысл, какое преимущество это даёт?

20 ответов

17 просмотров

Вы серьёзно спрашиваете сейчас? Почему NewUberServer не стоит делать методом UserServerParams?

Евгений Омельченко
Вы серьёзно спрашиваете сейчас? Почему NewUberServ...

Евгений, я вижу вы большой эксперт, но по делу пока ничего не сказали.

O.-J. Автор вопроса
Andrey Panov
Евгений, я вижу вы большой эксперт, но по делу пок...

Именно по той причине что мне не совсем ясен кейс использования такого подхода я и задаю вопрос, коллега. А вот вы сейчас язвите вместо того что-бы сказать что-то по делу, ата-та-та.

Andrey Panov
Евгений, я вижу вы большой эксперт, но по делу пок...

Дак потому что вопрос странный, пишешь как это уместно в конкретной ситуации. Если ты используешь подход а-ля ООП тогда первый вариант, второй уместен например в патерне method factory

O. J.
Именно по той причине что мне не совсем ясен кейс ...

Я к другому Евгению обращался, сорри.

Andrey Panov
Я к другому Евгению обращался, сорри.

Ну вот я сразу привёл пример, где неуместно использовать методы — в "конструкторах" с параметрами, например. А ещё сразу спросил про ваш конкретный пример, потому что ответ на вопрос сильно зависит от контекста

Евгений Омельченко
Ну вот я сразу привёл пример, где неуместно исполь...

а в каком кейсе и кому вообще может быть надо делать func method(s S) {} ? вместо очевидного func (s *S) method() {}

Евгений Омельченко
Ну вот я сразу привёл пример, где неуместно исполь...

У меня тут целый проект и контекстов будет много и разных. И это такой общий вопрос. Вот думаю придумать правило, что функции отдельно, для случаев когда в них нет сайд-эффектов. А экстеншен функции - с сайд эффектами.

Andrey Panov
У меня тут целый проект и контекстов будет много и...

если метод логически принадлежит структуре, нет ни одной причины не делать func (s *S) method() {}

Artur Karapetov
если метод логически принадлежит структуре, нет ни...

Сейчас подумал, что отдельная функция пригодиться на случай утиной типизации.

Andrey Panov
У меня тут целый проект и контекстов будет много и...

Откуда вот это "экстеншен-функции" взялось? В го методы и функции. Лучше спросить про каждый пример, а потом начнёте чувствовать где правильно, а где нет. Если вам хочется принцип универсального (которого нет, конечно же), то лучше вот взять у товарища @LazarenkoAN: если место в коде требует объектно-ориентированного подхода, то лучше методы, а если функциональный — то лучше функции. Ваш совсем нерабочий. Вот, например, у вас Bill, нужно по его описанию сгенерить сумму. Это чистая функция, но логично сделать её методом, потому что это неотъемлимое свойство самого счёта

Andrey Panov
Сейчас подумал, что отдельная функция пригодиться ...

есть такой антипаттерн - изобретение квадратного колеса

Artur Karapetov
а в каком кейсе и кому вообще может быть надо дела...

Ммм, т.е. вот так? type UserRepoParams{ logger log.Logger conn db.Conn } func (rp RepoParams) NewUserRepo() (*UserRepo, error) { } Выглядит это очень странно, если честно

Евгений Омельченко
Ммм, т.е. вот так? type UserRepoParams{ logger...

речь была про методы, не про конструктор

Artur Karapetov
речь была про методы, не про конструктор

Речь шла о том чем методы отличаются от функций и где нужно одно, а где другое. Подход "всё делать методами" сомнителен

Artur Karapetov
а, тогда у вас примеры не верные

Конечно неверные, потому что я показывают абсурдность подхода

Евгений Омельченко
Речь шла о том чем методы отличаются от функций и ...

Методы принадлежат структурам данных и оперируют их полями. Функции к структурам не относятся и оперируют собственными или поступающими в них данными. Есть структура данных и хотим производить с ней работу — используем методы. Есть просто кусок кода, который хотим использовать в нескольких местах — используем функцию. ИМХО

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

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

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
Ребят в СИ можно реализовать ООП?
Николай
33
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
у вас два процесса. один посылает другому сигнал. у вас есть код обоих процессов? если всё не так - расскажите как оно на самом деле. а именно кто кому чего, есть-ли консоли,...
Karagy
6
Карта сайта