• Какие книги по SOLID принципам стоит прочитать?

    @danilstepa
    Лучшее, что я читал по SOLID, это четвертая часть этой книги Паттерны проектирования на платформе .NET Автор очень хорошо и по полочкам раскладывает все принципы. Знать .NET совсем не обязательно
    Ответ написан
    Комментировать
  • Как в неопытной команде найти баланс в code rewiew между требуемым качеством кода и объемом исправлений?

    именование не соответствует конвенциям и договоренностям,

    Это можно линтерами отловить.


    И я понимаю, что если я не укажу на недочеты, то потом мне работать с этим кодом будет трудно, а если укажу, то либо возникнут споры, и ревью затянется на неделю, либо человеку придется много чего переделывать, только чтобы угодить мне. Остальным коллегам-джунам при этом все удобно и нормально.

    Тогда пытайся понять - действительно ли код плохой или это лишь твоя вкусовщина.
    Попробуй проводить ревью "от крупного" - тоесть сначала указывать только на действительно катастрофические вещи и действительно катастрофически плохую архитектуру. Не следует сходу вываливать десяток замечаний из-за нейминга.
    Практикуй парное программирование, чтобы повышать качество и уменьшать время на ревью.
    Вводи дизайн-ревью и делай более подробную постановку, чтобы заранее определять архитектуру и путь решения проблемы.
    Собери всю команду и напишите гайдлайн, который всех будет устраивать и который все смогут соблюдать.
    Ответ написан
    Комментировать
  • Почему исчез мой вопрос, созданный 4 часа назад на этом сайте?

    pragmatik
    @pragmatik Куратор тега Тостер
    Вопрос был удален модератором по причинам: Это вообще не вопрос; На вопрос невозможно дать однозначный ответ; Вопрос вне тематики ресурса. Если Вы не обнаружили уведомления об этом во входящих, пожалуйста, проверьте папку со спамом https://mail.google.com/mail/u/1/#spam
    Ответ написан
    3 комментария
  • Как в неопытной команде найти баланс в code rewiew между требуемым качеством кода и объемом исправлений?

    saboteur_kiev
    @saboteur_kiev Куратор тега Организация работы
    software engineer

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

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

    Мне неудобно читать их код. У них часто нарушается инкапсуляция, не соблюдается SOLID, именование не соответствует конвенциям и договоренностям, бывает дубляж, просто странные решения; в общем, мне категорически не нравится, как они пишут.

    За именование не по конвенциям - бить по рукам. Это однозначно. Конвенции описать в документе и просто режектить скидывая ссылку на документ с конвенциями. Без подробного разжевывания. Через небольшое время все выучат конвенции. Убедить менеджмент что нужно поддержать идею о конвенции легко, ибо не только общеизвестные практики, но еще и очень легко объяснимые с точки зрения удешевления последующей поддержки этого кода.
    Ну и если конвенции соблюдены, то читать код должно быть удобно.
    В конвенциях - правила именования функций, переменных, файлов, переноса строк, оформление комментариев и коммитов (например хорошее именование коммитов в мастере - возможность автоматизации отчетов, релиз ноутс, а также интеграция CI с код ревью по заголовкам коммитов). Также необходимо контролировать использование библиотек. Если кому-то для реализации задачи нужно подключить еще одну библиотеку, это надо согласовать - какую, где, краткий инвестигейшн кто эту библиотеку делает. Вдруг она уже устарела, никто ее не саппортит и через год-два придется ее менять на что-то новое. В идеале иметь внутренний репозиторий куда подтягивать то, чем пользуетесь в проекте и регулярно но контролируемо его обновлять.

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

    Можно попробовать решение, чтобы одну фичу реализовывало два человека, или один реализовал, второй тут же провел рефакторинг. Времени займет естественно раза в два больше, но пересмотрят реализацию друг и друга и со временем прийдут к чему-то среднему.
    Если не лень, можешь писать комменты опциональные к исполнению. И собирать статистику кто переделал согласно комментариям, кто нет. Потом, когда возникнут проблемы из-за кривой реализации, добавить это в статистику и через полгода посмотреть насколько твои комментарии потенциально могли бы принести пользу.

    Например в процессе эксплуатации выявлялись проблемы, которые были исправлены. Но по статистике 90% этих проблемы ты комментировал еще в момент реализации, и если бы изначально тебя послушались, то проблем бы не возникло, и не надо было бы переписывать - это прямая экономия времени и денег.
    Или наоборот, 5% комментариев были бы полезны, остальные - практически никак не повлияли на работу в пролакшене. Сам сделаешь тогда выводы.
    Ответ написан
    Комментировать