1. Go / Говнокод #27530

    +1

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    func (c *Client) DeleteFile(filename string) {
    	_, err := s3.New(c.session).DeleteObject(&s3.DeleteObjectInput{
    		Bucket: aws.String(c.bucket),
    		Key:    aws.String(filename),
    	})
    	if err != nil {
    		return
    	}
    }

    Ошибочка обработана

    Vitanaki, 21 Июля 2021

    Комментарии (77)
  2. Go / Говнокод #27453

    +2

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    func Map[F, T any](s []F, f func(F) T) []T {
        r := make([]T, len(s))
        for i, v := range s {
            r[i] = f(v)
        }
        return r
    }

    Го сдался.

    PolinaAksenova, 02 Июня 2021

    Комментарии (161)
  3. Go / Говнокод #27411

    +1

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    func getTransport(tt string) (iTransport, error) {
    	if tt == "scooter" {
    		return newElectricScooter(), nil
    	}
    	if tt == "quadcopter" {
    		return newQuadcopter(), nil
    	}
    	return nil, fmt.Errorf("Wrong type")
    }

    https://habr.com/ru/post/556512/
    > Factory Method Pattern
    > Привет, друзья. С вами Alex Versus.
    > Ранее мы говорили про шаблоны проектирования Одиночка и Стратегия, про тонкости реализации на языке Golang.
    > Сегодня расскажу про Фабричный метод.

    PolinaAksenova, 10 Мая 2021

    Комментарии (48)
  4. Go / Говнокод #27395

    +1

    1. 1
    2. 2
    3. 3
    if req.Lang != "" {
    	req.Lang = "EN"
    }

    Я сказал английский!

    [Поставленная задача: если пришёл запрос без поля, поставить значение по умолчанию]

    anon007, 06 Мая 2021

    Комментарии (20)
  5. Go / Говнокод #27261

    +1

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    // https://docs.docker.com/engine/api/v1.24/#create-a-container
    
    POST /v1.24/containers/create HTTP/1.1
    Content-Type: application/json
    Content-Length: 12345
    
    {
           "Hostname": "",
           "Domainname": "",
           "User": "",
           "AttachStdin": false,
           "AttachStdout": true,
           "AttachStderr": true,
           "Tty": false,
           "OpenStdin": false,
           "StdinOnce": false,
           "Env": [
                   "FOO=bar",
                   "BAZ=quux"
           ],
           ...
    }

    Ядро предоставляет сисколл execve. Execve принимает переменные окружения в виде массива строк A=B -
    не знаю конкретных причин, почему так сделано, но скорее всего просто потому что писать хэшмапу под
    это дело, которая еще и будет выкинута из памяти через относительно небольшое время - дело дорогое и
    ненужное, плюс наверняка какой-нибудь лишний пердолинг со стеком.
    https://man7.org/linux/man-pages/man2/execve.2.html

    Го, "человеческий язык" с поддержкой обычных мап из коробки, ничтоже сумляшеся не замечает никакой
    проблемы и заставляет пользователя передавать переменные окружения в том же формате, потому что у
    языка не только синтаксис должен быть таким же тупым, как программист на нём и вообще мы же тут
    делаем вид, что мы C, только лучше.
    https://golang.org/pkg/os/exec/#example_Command_environment

    Докер, "человеческий сервис" с HTTP API, использующим формат JSON с поддержкой обычных мап из коробки,
    ничтоже сумляшеся не замечает никакой проблемы и заставляет пользователя передавать переменные
    окружения в том же формате, потому что на программист на языке должен быть тупым, как этот язык.
    https://docs.docker.com/engine/api/v1.24/#create-a-container

    В результате мы имеем пачку долбоебов, из-за которых оперирующие (мапами / объектами / словарями / как угодно назовите)
    нормальные люди должны вести себя как типичные гошники.

    Fike, 17 Февраля 2021

    Комментарии (42)
  6. Go / Говнокод #26985

    0

    1. 1
    2. 2
    func verbMatches(p abac.Policy, a authorizer.Attributes) bool {
    	// TODO: match on verb

    серёга, задолбал, давай уже в прод катить, потом свою авторизацию сделаешь

    https://github.com/kubernetes/kubernetes/blob/master/pkg/auth/authorizer/abac/abac.go#L178

    Fike, 28 Сентября 2020

    Комментарии (14)
  7. Go / Говнокод #26841

    0

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    switch platform {
    case "Azure":
    	heartbeat = "500"
    default:
    	heartbeat = "100"
    }

    Инфраструктуру для мимосервисов чай тоже люди пишут.

    https://github.com/openshift/cluster-etcd-operator/blob/release-4.5/pkg/cmd/render/env.go#L52-L81

    [size=8]там еще и табы[/size]

    Fike, 04 Августа 2020

    Комментарии (72)
  8. Go / Говнокод #26743

    0

    1. 1
    https://m.vk.com/wall-30666517_1672469

    Из исходников и документации Go убрали фразы whitelist/blacklist и master/slave.
    Всё из-за протестов, которые сейчас проходят в Америке.

    Фразы «blacklist» и «whitelist» заменили на «blocklist» и «allowlist», а «master» и «slave»
    в зависимости от контекста на «process», «pty», «proc» и «control».

    Отмечается, что изменения не приведут к нарушению обратной совместимости и путанице, так как
    большая часть исправлений приходится на комментарии, тесты и внутренние переменные.

    OlegUP, 08 Июня 2020

    Комментарии (77)
  9. Go / Говнокод #26717

    0

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    func GetUser() *User {
        defer func() {
            time.Sleep(100 * time.Millisecond)
        }()
        return &User{}
    }

    Паттерн: поработал - отдохни.

    Pattern: worked hard - have a rest

    anon007, 01 Июня 2020

    Комментарии (6)
  10. Go / Говнокод #26716

    +1

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    func (svc *UserSvc) isEmptyName(name model.User_Name) bool {
      if name.First.RU == "" {
        if name.First.EN == "" {
          if name.First.TR == "" {
            if name.First.IT == "" {
              if name.Last.RU == "" {
                if name.Last.EN == "" {
                  if name.Last.TR == "" {
                    if name.Last.IT == "" {
                      return true
                    }
                  }
                }
              }
            }
          }
        }
      }
      return false
    }

    Проверка заполненности имени пользователя хотя - бы на одном из языков.

    anon007, 01 Июня 2020

    Комментарии (54)