Size: a a a

2020 June 07

VL

V L in Go-go!
Anton Kucherov
Это как с -er в интерфейсах Storager, NonSenser и прочая дичь.
Это вообще из effective go.
источник

AK

Anton Kucherov in Go-go!
V L
Это относится к любым техническим обсуждениям. Если аргументы сводятся к "мне не нравятся/так не принято", то это не аргументы.
Попробуйте поспорить об этом с вашим руководителем 😂 Иногда это приводит к плохим последствиям.
источник

s

snip in Go-go!
Anton Kucherov
Попробуйте поспорить об этом с вашим руководителем 😂 Иногда это приводит к плохим последствиям.
только если руководитель так себе )
источник

d

dmitriy in Go-go!
Anton Kucherov
Тут есть четкие примеры и четкие объяснения, когда и почему следует избегать возврата интефрейсов и их создания. Я с этими тезисами абсолютно согласен.
А есть чётко пояснение почему объявление интерфейса не стоит ставить рядом с имплементацией? Я так этого и не понял
источник

AK

Anton Kucherov in Go-go!
V L
Это вообще из effective go.
Да, но контекст там есть вполне конкретный. Вот он. Поэтому Storager, и прочие -er подставленные к существительному - это бред. И Effective Go этому не оправдание
источник

VL

V L in Go-go!
Anton Kucherov
Да, но контекст там есть вполне конкретный. Вот он. Поэтому Storager, и прочие -er подставленные к существительному - это бред. И Effective Go этому не оправдание
Не буду спорить, у меня Saver'ы 😄
источник

AK

Anton Kucherov in Go-go!
dmitriy
А есть чётко пояснение почему объявление интерфейса не стоит ставить рядом с имплементацией? Я так этого и не понял
Нету. И не должно быть. Если вы реализуете библиотеку и вы хотите чтобы кто-то мог ее расширить своим поведением, вы имеете право объявить внутри нее интерфейс чтобы человек который будет ее использовать его реализовал. И это везде используется. Это одна из форм Inversion Of Control.
источник

s

snip in Go-go!
Anton Kucherov
Да, но контекст там есть вполне конкретный. Вот он. Поэтому Storager, и прочие -er подставленные к существительному - это бред. И Effective Go этому не оправдание
в целом да, -er во многих случаях выглядит нелепо
но если абстрагировать от английского, то идея может и не так плоха в купе с идее однометодного интерфейса, то есть видя имя интерфейса мы всегда знаем какой метод оно содержит. Но это мои домыслы, руководствовались ли разработчики такой идеей или другой я не знаю. Но в целом  я например уже привык к -er и меня не коробит
источник

d

dmitriy in Go-go!
Anton Kucherov
Нету. И не должно быть. Если вы реализуете библиотеку и вы хотите чтобы кто-то мог ее расширить своим поведением, вы имеете право объявить внутри нее интерфейс чтобы человек который будет ее использовать его реализовал. И это везде используется. Это одна из форм Inversion Of Control.
Тогда зачем там пытаются сказать, что так делать нельзя
источник

d

dmitriy in Go-go!
А, или я не так прочитал
источник

s

snip in Go-go!
dmitriy
Тогда зачем там пытаются сказать, что так делать нельзя
скорее звучит как - интерфейс объявлять надо в общем там где используется
источник

AK

Anton Kucherov in Go-go!
snip
в целом да, -er во многих случаях выглядит нелепо
но если абстрагировать от английского, то идея может и не так плоха в купе с идее однометодного интерфейса, то есть видя имя интерфейса мы всегда знаем какой метод оно содержит. Но это мои домыслы, руководствовались ли разработчики такой идеей или другой я не знаю. Но в целом  я например уже привык к -er и меня не коробит
Они руководствовались здравым смыслом, ISP из SOLID и правилами Английского языка. 🙂
источник

C

Calculon in Go-go!
Anton Kucherov
Они руководствовались здравым смыслом, ISP из SOLID и правилами Английского языка. 🙂
а со storage разобрались?
источник

C

Calculon in Go-go!
DataAccessER?🤡
источник

C

Calculon in Go-go!
Или лучше manipulatER
источник

C

Calculon in Go-go!
На самом деле сторадж это очень жирная сущность, и если уж так хочется следовать канону, то можно этот интерфейс разбить на много других
Типа UserDataGetter(Loader? В таком духе)
источник

AK

Anton Kucherov in Go-go!
Давайте попробую перевести вот эту фразу из Effective Go:

By convention, one-method interfaces are named by the method name plus an -er suffix or similar modification to construct an agent noun


По соглашению интерфейсы с одним методом называются именем метода с добавлением суффикса -er или аналогичной модификации для создания существительного-агента.
источник

AK

Anton Kucherov in Go-go!
Что такое "существительное-агент", лучше погуглить. Но опять таки, в Effective Go речь идет в конткексте интерфейсов с одним методом и в контексте английского языка.
источник

AK

Anton Kucherov in Go-go!
И не все интерфейсы должны иметь один метод. Но конечно ISP лучше соблюдать и делать их как можно меньше.
источник

VL

V L in Go-go!
👍
источник