Size: a a a

2020 May 21

AP

Andrey Privalov in Go-go!
Shade
Некоторые просто не умеют жить без паравозов
плюс наглядно покрытие тестами было - видно, какие ветки покрыты, какие нет
источник

S

Shade in Go-go!
Хотя геттеры отчасти спасают, но они также часто хоронят ошибки
источник

S

Shade in Go-go!
Короче "ритуальщики" ревью бы не прошли 🤔
источник

RS

Roman Sharkov in Go-go!
Andrey Privalov
я бы как-то так делал
if f == nil {
   return
}

if f.Baz == nil {
   return
}

...
ну вот стравни:

switch {
case f == nil:
   return nil
case f.Bar == nil:
   return nil
case f.Bar.Baz == nil:
   return nil
case f.Bar.Baz.Muz == nil:
   return nil
}
return f.Bar.Baz.Muz.Fuz


или

return ? f.Bar.Baz.Muz.Fuz
источник

AP

Andrey Privalov in Go-go!
если лишние пять строк помогают быстрее понять код, (мне кажется в этом случае сильно быстрее), я за +5 строк)
источник

D

Darwin in Go-go!
Anton Kucherov
А зачем обычно может понадобится такая функция как описаная выше:
GetMuz(f *Foo) *Muz
Есть более приближенные к жизни примеры?
стуктура с указателем на структуру в которой есть указатель на какой-то тип
источник

AS

Andrew Stishenok in Go-go!
Всем привет. Есть N-ное количество сервисов (http server’ов), хотелось бы логировать
1) все http запросы приходящие в этот сервис
2) все исходящие запросы из этого сервиса и полученные на них респонсы
Все запросы/респонсы нужно сохранить в полном виде (с payload, headers и т.д).
Есть вариант сделать все это не изменяя код самих сервисов?
источник

D

Darwin in Go-go!
например адовый джейсон с нилаблами
источник

S

Shade in Go-go!
Andrey Privalov
если лишние пять строк помогают быстрее понять код, (мне кажется в этом случае сильно быстрее), я за +5 строк)
Я за другое: за похороненную ошибку надо расстреливать ржавой гайкой из рогатки, на месте
источник

AP

Andrey Privalov in Go-go!
Roman Sharkov
ну вот стравни:

switch {
case f == nil:
   return nil
case f.Bar == nil:
   return nil
case f.Bar.Baz == nil:
   return nil
case f.Bar.Baz.Muz == nil:
   return nil
}
return f.Bar.Baz.Muz.Fuz


или

return ? f.Bar.Baz.Muz.Fuz
Ну мы же не на олимпиаде по кол-ву строк кода) И опять же - кто его знает, а если тебе вложенные структуры недостаточно инициализировать как &Foo{} ? если там мапы и тд? все еще сложнее, правда?
источник

DS

Dmitry Soloma in Go-go!
Andrew Stishenok
Всем привет. Есть N-ное количество сервисов (http server’ов), хотелось бы логировать
1) все http запросы приходящие в этот сервис
2) все исходящие запросы из этого сервиса и полученные на них респонсы
Все запросы/респонсы нужно сохранить в полном виде (с payload, headers и т.д).
Есть вариант сделать все это не изменяя код самих сервисов?
на входящие запросы мидлварину, на исходящие - враппер
источник

RS

Roman Sharkov in Go-go!
Andrew Stishenok
Всем привет. Есть N-ное количество сервисов (http server’ов), хотелось бы логировать
1) все http запросы приходящие в этот сервис
2) все исходящие запросы из этого сервиса и полученные на них респонсы
Все запросы/респонсы нужно сохранить в полном виде (с payload, headers и т.д).
Есть вариант сделать все это не изменяя код самих сервисов?
> Есть вариант сделать все это не изменяя код самих сервисов?

нет
источник

VK

Vadim K in Go-go!
Andrew Stishenok
Всем привет. Есть N-ное количество сервисов (http server’ов), хотелось бы логировать
1) все http запросы приходящие в этот сервис
2) все исходящие запросы из этого сервиса и полученные на них респонсы
Все запросы/респонсы нужно сохранить в полном виде (с payload, headers и т.д).
Есть вариант сделать все это не изменяя код самих сервисов?
С - сниффер
источник

М

Мерль🛠 in Go-go!
Andrew Stishenok
Всем привет. Есть N-ное количество сервисов (http server’ов), хотелось бы логировать
1) все http запросы приходящие в этот сервис
2) все исходящие запросы из этого сервиса и полученные на них респонсы
Все запросы/респонсы нужно сохранить в полном виде (с payload, headers и т.д).
Есть вариант сделать все это не изменяя код самих сервисов?
источник

AK

Anton Kucherov in Go-go!
Andrew Stishenok
Всем привет. Есть N-ное количество сервисов (http server’ов), хотелось бы логировать
1) все http запросы приходящие в этот сервис
2) все исходящие запросы из этого сервиса и полученные на них респонсы
Все запросы/респонсы нужно сохранить в полном виде (с payload, headers и т.д).
Есть вариант сделать все это не изменяя код самих сервисов?
Они напрямую ходят друг к другу?
источник

s

snip in Go-go!
Roman Sharkov
ну вот стравни:

switch {
case f == nil:
   return nil
case f.Bar == nil:
   return nil
case f.Bar.Baz == nil:
   return nil
case f.Bar.Baz.Muz == nil:
   return nil
}
return f.Bar.Baz.Muz.Fuz


или

return ? f.Bar.Baz.Muz.Fuz
второй вариант очень плох, потому что:
muz := ? f.Bar.Baz.Muz
muz++
f.Bar.Baz.Muz = muz // panic
источник

М

Мерль🛠 in Go-go!
Andrew Stishenok
Всем привет. Есть N-ное количество сервисов (http server’ов), хотелось бы логировать
1) все http запросы приходящие в этот сервис
2) все исходящие запросы из этого сервиса и полученные на них респонсы
Все запросы/респонсы нужно сохранить в полном виде (с payload, headers и т.д).
Есть вариант сделать все это не изменяя код самих сервисов?
источник

AS

Andrew Stishenok in Go-go!
Anton Kucherov
Они напрямую ходят друг к другу?
нет, эта группа сервисов вызывается другим сервисом. Между собой не контачат
источник

AK

Anton Kucherov in Go-go!
Andrew Stishenok
нет, эта группа сервисов вызывается другим сервисом. Между собой не контачат
Может в этом сервисе который их всех дергает написать proxy middleware который будет это все перехватывать? Ну или поставить между ними и этим сервисом nginx как прокси?
источник

RS

Roman Sharkov in Go-go!
Andrey Privalov
Ну мы же не на олимпиаде по кол-ву строк кода) И опять же - кто его знает, а если тебе вложенные структуры недостаточно инициализировать как &Foo{} ? если там мапы и тд? все еще сложнее, правда?
v := ? f.Bar.Baz[“mapkey”][5].Fuzz

эквивалентно:

v := func() *Fuzz {
 if f == nil || f.Bar == nil {
   return nil
 }
 x, ok := f.Bar.Baz[“mapkey”]
 if !ok {
   return nil
 }
 if len(x) < 6 {
   return nil
 }
 return x[5].Fuzz
}()


не согласен, что разница в читабельности есть?
источник