Обновить
-1
Nikita Bondarev@blessyocean

Пользователь

Отправить сообщение

Сам до сих пор этой библиотекой не пользовался. В компании используем отчеты на allure. После просмотра доклада: https://www.youtube.com/live/WJTrjEFdZAU?t=3463s, в команде решили в ближайшее время попробовать testo вместо allure-go.
В тему рефлексии не совсем понимаю претензии к фреймворку для тестов.
"чем снова дебажить чужую рефлексию" - очень неповезло вам дебажить... даже не понимаю что, обертку над запуском тестовых функций/suite-структур?
Мне видится, что если во фреймворке для написания тестов удобный фасад, который упрощает рутинную работу, например с allure-отчетами, то мне в последнюю очередь важно есть в нем рефлексия или нет.
Библиотека из статьи тоже очень интересная, но привел в комментарии что-то похожее и возможно популярнее, так как вряд ли кто-то в крупных компаниях станет использовать фреймворк, который через какое-то время могут перестать поддерживать и развивать.

upd: в докладе есть ответ разработчика для чего во фреймворке используется рефлексия: https://www.youtube.com/live/WJTrjEFdZAU?si=fC12nMPJGfOPGYuN&t=4804

Очень похоже на библиотеку, которую переписали для замены allure-go: https://github.com/ozontech/testo

Здоровская статья. Давно задумываюсь о том, чтобы завести домашнего питомца: кошку или собаку. Пока что чувствую что не дорос до такой ответственности, так как порой забываю сам себе приготовить еду...

func withRetry(fn func() error, maxRetries int, backoff time.Duration) error {
    for i := 0; i < maxRetries; i++ {
        if err := fn(); err == nil {
            return nil
        }
        
        if i < maxRetries-1 {
            select {
            case <-time.After(backoff * time.Duration(i+1)):
                // Exponential backoff
            }
        }
    }
    return fmt.Errorf("exceeded max retries")
}

Здесь ошибка в комментарии, т.к. реализован линейный backoff.
Экспоненциальный делей можно реализовать вот так:

delay := backoff * time.Duration(1 << i)

Первый принцип идиоматики Go — простота и читаемость. Идиоматичный Go-код должен быть простым и понятным, без лишних абстракций. 

...

Среди сторонних библиотек выделяются для веб- и HTTP-API — лёгкие и быстрые gin или fiber. 

Игорь, мне кажется, что в сообществе Go веб-фреймворк gin не долюбливают из-за как раз таки лишних абстракций, присущих популярным фреймворкам из других языков программирования. Сам же я его нередко встречаю в вакансиях, но ни разу не приходилось использовать в продакшене.
Точно ли является его использование идиоматически с точки зрения Go?

Ещё по данной теме есть отличная статья, в которй более подробно рассказано про exponential backoff и его недостатки:
https://habr.com/en/companies/yandex/articles/762678/

Информация

В рейтинге
5 427-й
Зарегистрирован
Активность