Size: a a a

2020 July 28

AS

Andrei 🦉 Sergeev in Go-go!
Никита
Ее выражение все будет ограничено техническими проблемами. Вот у вас пост, и в нем комментарии. Если мы хотим выразить домен как можно больше в коде, то наверняка будет что-то типа

type Post struct {
 Id int
 Comments []Comment
}


Только что этот код значит? Что каждый раз, когда мы подтянем пост, у нас сразу подтянутся комментарии? А сколько их подтянется? Мы же не можем подтянуть все. Да и не нужны нам каждый раз комментарии, в основном только для отображения поста. И как у нас сохраняются комментарии? Пушим просто в поле Comments и оно сохранит посты с комментарием? Скорее всего нет. В общем, оно только внешне отображает домен, но оно не отображает технический аспект никак, который мы должны учитывать
ну вот вы привели пример из го на котором и правда ничего не понятно

а теперь смотрим на питон
class Post:
    @property
     def id(self):
           pass
     
     def comments(self, limit=100, offset=0):
          pass

мне не нужно знать есть ли там комментарии и сколько их, в случае необходимости они благодаря сахару лениво подгрузятся при обращении к свойству comments

я просто беру этот класс и использую дальше с такими же высокоуровневыми абстракциями, которые легко создаются несколькими строками кода

на го же мне бы пришлось реализовывать это всё руками и низкоуровневые вещи торчали бы изо всех щелей
источник

VM

Vladislav Milenin in Go-go!
Макс Юю
нет ключом будет set-cookie  и получить можно будет только последнюю запись
сколько пользовался, resp.Header.Get(“Cookie”) всегда работал
источник

МЮ

Макс Юю in Go-go!
потому что заголовки по стандарту можно только 1 раз выставлять
источник

Н

Никита in Go-go!
Andrei 🦉 Sergeev
ну вот вы привели пример из го на котором и правда ничего не понятно

а теперь смотрим на питон
class Post:
    @property
     def id(self):
           pass
     
     def comments(self, limit=100, offset=0):
          pass

мне не нужно знать есть ли там комментарии и сколько их, в случае необходимости они благодаря сахару лениво подгрузятся при обращении к свойству comments

я просто беру этот класс и использую дальше с такими же высокоуровневыми абстракциями, которые легко создаются несколькими строками кода

на го же мне бы пришлось реализовывать это всё руками и низкоуровневые вещи торчали бы изо всех щелей
В Active Record с подтягиваем проблемы меньше, lazy loading все решит. А с добавлением комментариев что?
источник

AS

Andrei 🦉 Sergeev in Go-go!
Никита
В Active Record с подтягиваем проблемы меньше, lazy loading все решит. А с добавлением комментариев что?
зависит от конкретной задачи, в общем случае нет никаких проблем сделать Comment отдельным классом и добавить в Post метод для создания экземпляра этого класса
источник

AS

Andrei 🦉 Sergeev in Go-go!
в общем если не углублятся в частности - динамические языки не зря доминируют на рынке и, скорее всего, будут доминировать всегда
источник

Н

Никита in Go-go!
Andrei 🦉 Sergeev
ну вот вы привели пример из го на котором и правда ничего не понятно

а теперь смотрим на питон
class Post:
    @property
     def id(self):
           pass
     
     def comments(self, limit=100, offset=0):
          pass

мне не нужно знать есть ли там комментарии и сколько их, в случае необходимости они благодаря сахару лениво подгрузятся при обращении к свойству comments

я просто беру этот класс и использую дальше с такими же высокоуровневыми абстракциями, которые легко создаются несколькими строками кода

на го же мне бы пришлось реализовывать это всё руками и низкоуровневые вещи торчали бы изо всех щелей
Даже в этом примере все равно нам подятнутся 100 коментариев, даже если они нам не нужны. тоже нужно тянуть Active Record
источник

AK

Andrei Kravz in Go-go!
Никита
Даже в этом примере все равно нам подятнутся 100 коментариев, даже если они нам не нужны. тоже нужно тянуть Active Record
Hello Никита
источник

AS

Andrei 🦉 Sergeev in Go-go!
Никита
Даже в этом примере все равно нам подятнутся 100 коментариев, даже если они нам не нужны. тоже нужно тянуть Active Record
нет, не подтянутся, это методы
источник

Н

Никита in Go-go!
Andrei Kravz
Hello Никита
Hello
источник

DP

Daniel Podolsky in Go-go!
Andrei 🦉 Sergeev
ну вот вы привели пример из го на котором и правда ничего не понятно

а теперь смотрим на питон
class Post:
    @property
     def id(self):
           pass
     
     def comments(self, limit=100, offset=0):
          pass

мне не нужно знать есть ли там комментарии и сколько их, в случае необходимости они благодаря сахару лениво подгрузятся при обращении к свойству comments

я просто беру этот класс и использую дальше с такими же высокоуровневыми абстракциями, которые легко создаются несколькими строками кода

на го же мне бы пришлось реализовывать это всё руками и низкоуровневые вещи торчали бы изо всех щелей
да почему же? можно же и по-человечески сделать
источник

AS

Andrei 🦉 Sergeev in Go-go!
но они могут иметь интерфейс свойства, могут под капотом делать много всякого от работы с внешним апи до походов в базы

да, эта магия сложна в поддержке, особенно если её начинают пихать во все места
но эта магия при правильном применении позволяет поддерживать и развивать гигантские кодовые базы минимальными усилиями
источник

AS

Andrei 🦉 Sergeev in Go-go!
Daniel Podolsky
да почему же? можно же и по-человечески сделать
можно, но всё равно техническую реализацию не скрыть в удобной и функциональной обёртке как в каком-нибудь python / php / nodejs / etc
источник

Н

Никита in Go-go!
Еще почему-то Active Record не любят. Уже не помню почему
источник

DP

Daniel Podolsky in Go-go!
Andrei 🦉 Sergeev
можно, но всё равно техническую реализацию не скрыть в удобной и функциональной обёртке как в каком-нибудь python / php / nodejs / etc
можно скрыть в другой
источник

AK

Artem Krapivin in Go-go!
>> плюс, во время компиляции выдает две ошибки : \mains.go:27:6: no new variables on left side of :=
.\mains.go:64:1: syntax error: non-declaration statement outside function body
ну и что в этих ошибках непонятно вам?:)
источник

AS

Andrei 🦉 Sergeev in Go-go!
Daniel Podolsky
можно скрыть в другой
уши всё равно будут торчать, особенно при работе с коллекциями
я понимаю, почему в го нет открытого для имплементации интерфейса итератора, но невозможность сделать range по кастомному типу заставляет местами городить очень многословный код без возможности обобщения
источник

Н

Никита in Go-go!
Как мне кажется натягивать домен на код 1 в 1 не очень практично. Потому что мы все равно завязаны на технических аспектах, как перфоманс и concrurrency
источник

AS

Andrei 🦉 Sergeev in Go-go!
Никита
Как мне кажется натягивать домен на код 1 в 1 не очень практично. Потому что мы все равно завязаны на технических аспектах, как перфоманс и concrurrency
ну вот для 90% проектов не нужен гошный перф и конкурентность гошная не нужна
источник

AS

Andrei 🦉 Sergeev in Go-go!
а нужен удобный и практичный dsl
источник