У меня припекает от кода, который пишет тимлид. Прям на концептуальном уровне есть две вещи, которые до дрожи меня волнуют.
Во-первых, везде используются "магические" функции init(). Для непосвященных - в golang эта функция вызывается во время импорта пакета, это неявный вызов код, это происходит "за кадром", этого не видно при чтении кода. Считается плохим тоном их использовать. Бывают случаи когда без них никак, но у нас не такой случай. Попытки переубедить его ни к чему не привели. Объясняли ему, что так не стоит, что это неявные вызовы, что не надо так писать. Но тимлид не должен слушать нас, на то он и тимлид. В одном пакете могут быть десятки этих функций (в каждом файле по одной), и чтобы потом оказалось сюрпризом - они все ближе к концу файла, но не строго в конце.
Во-вторых, он использует глобальные переменные на уровне пакета. Это тоже плохой тон. Пакет должен представлять из себя объект с методами. И чтобы метод мог использовать какие-то ресурсы их можно хранить внутри самого объекта. Создаешь объект и передаешь в него подключение к базе данных, например. Всё, пакет работает с базой, базу я инициализировал вот тут с такими-то параметрами и передал ее одному объекту, второму объекту и так далее. А он создал пакет с синглотонами к разным бд и дергает их в разных местах в других пакетах.
Есть еще чисто личностные придирки к его коду. 1. никаких комментариев, 2. никаких проверок на data race, 3. "да нахера нужны ваши линтеры, только красным все время светят", 4. часто абсолютно неинформативный комментарий у коммита, 5. пуш в мастер, 6. отсутствие тестов в принципе, 7. "сейчас некогда вводить процессы, надо срочно релизить <-> как же меня задолбало отсутствие процессов", 8. нет одного стиля именования и написания переменных, 9. пакет это часть методы, часть просто функции, зависит от фазы луны, ведь с глобальными переменными похеру как писать.
Я максимально старался заниматься другими частями проекта, чтобы нигде с ним не пересекаться. Но сейчас я занимаюсь одной общей с ним подсистемой. У меня две недели просто горит пукан. Руки опускаются, потому что переубедить его не реально. За много лет я уже даже не трачу на эти убеждения силы, просто говорю "в пустоту" где и что не правильно.
Да, он тимлид; потому что; он выстроил сложную систему взаимоотношений с начальством; слишком большое чсв; непозволительно огромный bus-factor; тут очень хорошо платят.
@sattellite
> они все ближе к концу файла, но не строго в конце.
В голосину с подставы