русский

C# - pattern matching - many discards

8999   2 3 4 5 6 7 8 9 10 11 12 alle
Программист коренной житель04.03.24 08:41
NEW 04.03.24 08:41 
in Antwort alex445 03.03.24 05:42
Пока есть старпёры, которым удобнее писать развесистую лапшу с дополнительными типами, служащими лишь для хранения передаваемых данных (DTO), и длинные списки параметров методов - они будут это делать.

Пока есть те, кто заинтересован в тестируемом коде, "старперы" будут бить "новичков" по рукм. Больно. Очень больно :)

MrSanders коренной житель04.03.24 09:49
NEW 04.03.24 09:49 
in Antwort Программист 04.03.24 08:41

У нас сейчас весёлая борьба нанайских мальчиков. Я предложил погромиздам голосовать за отдельные правила написания кода, они радостно имитировади бурную деятельность, предлагали правила, обсуждали и голосовали. Принятые варианты собрал им в Code Convention, а теперь... Не даю мержить изменения, нарушающие договорённости.

Полярная лиса подкралась к коболистам незаметно. Они думали что будет как обычно. Что написано в проектной документации никого не интересует :)

И теперь два 50+ мальчика обиделись. Страдают над тикетами, к которым я уже две недели как написал всё, что они должны поправить. Но править их код у них... Нет времени. Они уже всё написали, а гадкий я не пускаю в релиз. Это провокация! Из-за меня в релиз не уйдёт супер важная фича!


Ходим по кругу. Сегодня 3й раз "побеседовали":
- когда аппрувишь мой код?

- когда приведёшь в соответствии с требованиями.

- а кто тебе дал право требовать!!!???

- команда. Мы сами установили наши требования и свели их в code conventions

- а у меня нет время на эти глупости!

- ну, найди время

- а я не должен!

- Должен. Код не пройдёт в релиз, пока не будет соответствовать правилам. Если хочешь поменять правила, на следующем ретро можешь обсудить.

- я буду жаловаться! (так и хочется добавить "прокурору!" :))


Две недели назад первый раз так побеседовали. Потом тишина на неделю, и новая итерация. Романтика.

Fleitist прохожий04.03.24 10:19
NEW 04.03.24 10:19 
in Antwort MrSanders 04.03.24 09:49, Zuletzt geändert 04.03.24 10:21 (Fleitist)

Что-то у вас не то с атмосферой в команде... Не выглядит здоровой:)

Программист коренной житель04.03.24 10:29
NEW 04.03.24 10:29 
in Antwort MrSanders 04.03.24 09:49

Жесть конечно. Ну и климат у вас похоже токсичный....

MrSanders коренной житель04.03.24 10:34
NEW 04.03.24 10:34 
in Antwort Fleitist 04.03.24 10:19

Она не то что не выглядит... Она у нас как в привокзальном туалете. Руками пощупать можно. У нас просто 4 Олёша-подобных разработчиков. Самые умные. "Чо ты мне своей арзитектурой тычешь". Которые 10-20 лет писали на коболе, потом за 3 дня "научились" писать на яве и теперь уже 5 лет пишут так, как научились за эти три дня.

Но так как у них лужёные глотки и "авторитет" они задавили всех остальных, что те не крякают. Сидят как мышь под веником, не отсвечивают. Но никто не понимает что же эти 4 гения написали. В результате остальные "разрабатывают" с помощью копипасты.


А я пытаюсь это сломать. Заставляю гениев писать документацию, чтобы другие понимали что же делает этот метод с 7 параметрами. В процессе написания гении даже приходили к мнению что оказывается все 7 и не нужны... И (о боже!) заставляю их переименовывать переменные, методы и классы, чтобы имя хоть немного соответствовало тому, что они делают. В общем отношусь без должного пиитета. У олёшенек подгорает и они устравивают подковёрную борьбу :)

Срыв покровов патриот04.03.24 12:04
NEW 04.03.24 12:04 
in Antwort MrSanders 04.03.24 09:49

можно пример кода, который ты не пускаешь в прод из-за нарушений конвенции?

Программист коренной житель04.03.24 12:27
NEW 04.03.24 12:27 
in Antwort Срыв покровов 04.03.24 12:04

Это может быть совершенно обычный код без криминала.

У нас например в кодинг стандартах написано, что сначала должны быть перечислены все using System.*, потом все остальные. Разумное это требование или нет - вообще не важно.


Есть стандарт кода и ему надо следовать. Если не нравится - нет проблем, стандарты кода можно поменять, но им все равно надо следовать.


В данном случае скоманда сама сформулировала для себя требования к коду, но некоторые члены комманды считают себя ровнее :)

Murr патриот04.03.24 13:12
Murr
NEW 04.03.24 13:12 
in Antwort AlexNek 03.03.24 18:39

любой проект за 15-20 лет можно изменить до неузнаваемости в худшую сторону

------

Хи-хи... Покажи мне хоть один. который активно эксплуатируется, модифицируется и остается в том же качестве...

Murr патриот04.03.24 13:26
Murr
NEW 04.03.24 13:26 
in Antwort AlexNek 03.03.24 23:17

то таким он и должен быть остаться.

---------------

почему?

мой заводик помнишь? переход с оракла на постгрее... и коннективити под постгрее обрабатывающая ошибки... оракла.

Все всегда делается в меру понимания исполнителем и чаще всего исполнитель не интересуется архитектурой

Murr патриот04.03.24 13:39
Murr
NEW 04.03.24 13:39 
in Antwort MrSanders 04.03.24 09:49

Должен.

-----

Угу...

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

Murr патриот04.03.24 13:41
Murr
NEW 04.03.24 13:41 
in Antwort Программист 04.03.24 12:27

должны быть перечислены все using System.*

-----

а как учитывается то, что в .НЕТ не только System.*?

Программист коренной житель04.03.24 14:10
NEW 04.03.24 14:10 
in Antwort Murr 04.03.24 13:41
а как учитывается то, что в .НЕТ не только System.*?

Никак. Требование - сначала System.*


Но можно ввести и иерархию:

1) System.*

2) Все 3rd party

3) Свои

alex445 коренной житель04.03.24 14:14
NEW 04.03.24 14:14 
in Antwort MrSanders 04.03.24 09:49

У нас сейчас весёлая борьба нанайских мальчиков. Я предложил погромиздам голосовать за отдельные правила написания кода, они радостно имитировади бурную деятельность, предлагали правила, обсуждали и голосовали. Принятые варианты собрал им в Code Convention, а теперь... Не даю мержить изменения, нарушающие договорённости.

Полярная лиса подкралась к коболистам незаметно. Они думали что будет как обычно. Что написано в проектной документации никого не интересует :)

И теперь два 50+ мальчика обиделись. Страдают над тикетами, к которым я уже две недели как написал всё, что они должны поправить. Но править их код у них... Нет времени. Они уже всё написали, а гадкий я не пускаю в релиз. Это провокация! Из-за меня в релиз не уйдёт супер важная фича!


Ходим по кругу. Сегодня 3й раз "побеседовали":
- когда аппрувишь мой код?

- когда приведёшь в соответствии с требованиями.

- а кто тебе дал право требовать!!!???

- команда. Мы сами установили наши требования и свели их в code conventions

- а у меня нет время на эти глупости!

- ну, найди время

- а я не должен!

- Должен. Код не пройдёт в релиз, пока не будет соответствовать правилам. Если хочешь поменять правила, на следующем ретро можешь обсудить.

- я буду жаловаться! (так и хочется добавить "прокурору!" :))


Две недели назад первый раз так побеседовали. Потом тишина на неделю, и новая итерация. Романтика.

Прямо "Санта-Барбара".

alex445 коренной житель04.03.24 14:16
NEW 04.03.24 14:16 
in Antwort MrSanders 04.03.24 10:34, Zuletzt geändert 04.03.24 14:18 (alex445)
В процессе написания гении даже приходили к мнению что оказывается все 7 и не нужны... И (о боже!) заставляю их переименовывать переменные, методы и классы, чтобы имя хоть немного соответствовало тому, что они делают.

А время на конструирование абстрактных фабрик для абстрактных фабрик остаётся? Если ещё скажете, сколько примерно зарабатывают ваши "ветераны", будет совсем хорошо.


Чёта мне кажется, что даже у меня ситуация получше. ))

alex445 коренной житель04.03.24 14:20
NEW 04.03.24 14:20 
in Antwort Программист 04.03.24 12:27, Zuletzt geändert 04.03.24 14:28 (alex445)
Это может быть совершенно обычный код без криминала.
У нас например в кодинг стандартах написано, что сначала должны быть перечислены все using System.*, потом все остальные. Разумное это требование или нет - вообще не важно.
Есть стандарт кода и ему надо следовать. Если не нравится - нет проблем, стандарты кода можно поменять, но им все равно надо следовать.

Разве нет штуки, которая сама сортирует юзигни по вашему шаблону после любой команды автоформата (ctrl + K, D, например)?


У меня обычно этими юзингами почти полный экран засориться может. Ещё после рефакторинга могут быть дырки между ними (после удаления строк). Я всю портянку с юзингами просто сворачиваю. После появления в Студии фичи автодобаления юзингов, я туда даже смотреть перестал. Максимум, если какой конфликт имён классов. Но это тоже не требует уделять внимание юзингам - просто соглашаешься на какой-нибудь предложенный Студией рефакторинг, типа добавить полное имя класса.


Вот бы кто подсказал, как в Студии удалить строку без замены её на пустую строку. Я обычно использую окошко "найти-заменить", где в "заменить" оставляю пустое место. Но это оставляет пустые строки в коде.

Murr патриот04.03.24 14:21
Murr
NEW 04.03.24 14:21 
in Antwort Программист 04.03.24 14:10

Значит постоянные терки по поводу что тут, что там...

alex445 коренной житель04.03.24 14:26
NEW 04.03.24 14:26 
in Antwort Программист 04.03.24 14:10
а как учитывается то, что в .НЕТ не только System.*?

Никак. Требование - сначала System.*


Но можно ввести и иерархию:

1) System.*

2) Все 3rd party

3) Свои

Наф оно нужно вообще? Это ещё тупее, чем "пробелы против табов".

Программист коренной житель04.03.24 14:42
NEW 04.03.24 14:42 
in Antwort alex445 04.03.24 14:26
Наф оно нужно вообще?

От куда ж мне знать? :) Но требование такое есть. Будь любезен исполнять.


Это ещё тупее, чем "пробелы против табов".

Пробелы против табов - это как раз не тупо. Тут важно, чтобы у всех были одинаковые настройки. Если у кого-то настройки отличаются, то трындец.

MrSanders коренной житель04.03.24 14:54
NEW 04.03.24 14:54 
in Antwort Срыв покровов 04.03.24 12:04
можно пример кода, который ты не пускаешь в прод из-за нарушений конвенции?

Как уже отметили, совершенно обычный код, без особого криминала. Просто нарушающий принятые соглашения. Если я с криминалом нахожу, мне никакие конвеншены не нужны :)
Например, вот такая фигня (кто на яве пишет, поймёт, остальным поясню, имя класса поменял, мало ли, Datenschutz и всё такое):

/**
 * identisch zu
 * @param adresse AdresseMitLand
 */
public Boolean identischZu(AdresseMitLand adresse) {
    return true;
}

Начинаем с вопроса - а нафига мне метод сравнения, которые ничего не сравнивает? Нет ответа. Почему в документации не написано, мол, временная реализация, в настоящий момент, говорит что все всем равны, но надо использовать там-то и там-то потому что в будущем будет заменено.
Где описание параметра, где описание результата? Метод-то публичный.
Почему Boolean? (объект - оболочка вокруг примитивного типа boolean). Он может быть null. Зачем нам такое счастье? Мы (даже в конвенции написали) "используем примитивные типы если нет причин использовать врэпперы, причина описывается в документации".


До сих пор всё такое счастье тупо коммитилось, потом проходило 3 года и все сидели чесали репу а нафига ж такое сотворили, и чего хотели этим сказать.

Murr патриот04.03.24 15:50
Murr
NEW 04.03.24 15:50 
in Antwort MrSanders 04.03.24 14:54

нафига мне метод

------

Как зачем?

Дырку в интерфейсе затыкает...


даже в конвенции написали

------

Ну это только из-за объема писанины/поддержки.

Есть охрененные преимущества когда все элементы строго типизированы - просто дооределяешь что можно делать и не беспокоишься, скажем, об сложение количества чего-нибудь с телефонным номером... причем - на этапе трансляции.

2 3 4 5 6 7 8 9 10 11 12 alle