• Как вы обычно оцениваете риски при разработке проекта?

    AlexanderByndyu
    @AlexanderByndyu
    IT-архитектор, эксперт в Agile&Lean
    Я нашел много практических советов в книге Вальсируя с Медведями: управление рисками в проектах по разработке программного обеспечения https://www.ozon.ru/context/detail/id/2314340/

    В конце книги есть шаблон для описания риска, который мы используем на практике.
    Ответ написан
    Комментировать
  • Куда писать sql запросы при реализации репозиториев (DDD)?

    AlexanderByndyu
    @AlexanderByndyu
    IT-архитектор, эксперт в Agile&Lean
    Я рекомендую использовать Dapper и шаблон QueryObject blog.byndyu.ru/2013/03/dapper-queryobject-orm.html

    Есть пример реализации инфраструктуры на таком подходе с CQRS https://github.com/Byndyusoft/Byndyusoft.Dotnet.Co...
    Ответ написан
    Комментировать
  • Как правильно использовать DTO в реальных проектах asp.net core WebAPI?

    AlexanderByndyu
    @AlexanderByndyu
    IT-архитектор, эксперт в Agile&Lean
    TimeCoder я подробно рассматривал этот вопрос в статье blog.byndyu.ru/2012/05/viewmodel-domain-model.html

    Если останутся вопросы, буду рад ответить.
    Ответ написан
    Комментировать
  • Правильно ли понимаю полиморфизм?

    AlexanderByndyu
    @AlexanderByndyu
    IT-архитектор, эксперт в Agile&Lean
    Основаные цели при использовании полиморфизма:
    • уменьшение дублирования в коде
    • создание более "гибкого" кода


    Суть в том, что за счет абстракции вы можете передавать разные объекты в одни и те же методы, при этом вам будет не важно какой конкретно объект пришел в метод.

    Приведу пример. Представьте, что у вас есть автомойка - класс Автомойка - которая может работать только для желтой Лады Калина. Другие автомобили в ней не могут быть помыты. В классе есть метод ПомытьЖелтуюЛадуКалину(ЖелтаяЛадаКалина автомобиль). Т.е. есть конкретный метод, который принимает конкретный тип автомобиля.

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

    Вы будете добавлять новый метод каждый раз, когда будет появляться новый тип автомобиля, который вы сможете мыть. Самое главное, что каждый из этих методов будет делать практически одно и тоже. Тут у нас 2 проблемы:
    1. дублирование в методах Помыть*
    2. зависимость нашего класса Автомойка от внешнего контекста, где появляются новые типы автомобилей. При появлении нового автомобиля нам приходится модифицировать класс Автомойки (нарушение принципа blog.byndyu.ru/2009/10/blog-post_14.html)


    Какое решение? Надо выделить важные для класса Автомойка характеристика автомобиля и сделать один метод Помыть(Автомобиль автомобиль). Например, это будет высота, ширина и тип кузова автомобиля. Этого набора характеристик будет достаточно для того, чтобы помыть любой автомобиль.

    Получаем:
    класс Автомобиль
        свойство Высота
        свойство Ширина
        свойство ТипКузова
    
    класс Автомойка
        метод Помыть(Автомобиль автомобиль)
            настроитьМойкуПоВысоте(автомобиль.Высота)
            настроитьМойкуПоШирине(автомобиль.Ширина)
            настроитьМойкуПоТипуКузова(автомобиль.ТипКузова)
            начатьМойку()


    Теперь сколько бы разных автомобилей не добавлялось в систему наш класс Автомойка не будет меняться. Мы убрали дублирование и сделали наш класс более устойчивым к изменениям во внешней среде. У класс Автомобиль может быть наследник ЖелтаяЛадаКалина и у нее будут свойства/методы базового класса. Т.к. метод Помыть работает с абстракцией, то он будет вызывать полиморфные свойства/методы, ничего не зная о конкретной реализации и иерархии наследования, которая лежит под классом Автомобиль.

    При проектировании классов надо обращать внимание еще на один принцип blog.byndyu.ru/2009/10/blog-post_29.html, тогда дизайн вашей системы будет еще более гибким.
    Ответ написан
    2 комментария
  • Как правильнос построить N-Tier/N-Layer архитектуру для ASP.NET проекта?

    AlexanderByndyu
    @AlexanderByndyu
    IT-архитектор, эксперт в Agile&Lean
    А про CQRS я сейчас пишу довольно объемную статью, а пока есть видео vimeo.com/90706105 и слайды www.slideshare.net/AlexanderByndyu/cqrs-36278020
    Ответ написан
    2 комментария
  • OpenSource проекты на ASP.NET, которые можно рассматривать как образец структуры проекта и стиля кода?

    AlexanderByndyu
    @AlexanderByndyu
    IT-архитектор, эксперт в Agile&Lean
    Мы выложили пример проекта на ASP.NET MVC с использованием различных шаблонов проектирования и CQRS https://github.com/AlexanderByndyu/ByndyuSoft.Infr...
    Ответ написан
    Комментировать
  • Мотивация программирования — деньги. Это нормально?

    AlexanderByndyu
    @AlexanderByndyu
    IT-архитектор, эксперт в Agile&Lean
    Для начала я считаю, что программистом может быть не каждый, если у вас это получается, считайте, что это отличная возможность для карьеры.

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

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

    Я бы так работать не смог, потому что у меня другие потребности, даже на великолепной работе я бы не остался за 5 тыс в месяц.

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

    Этот подход выглядит очень «по-западному», что с того? Можно работать над проектами, которые меняют жизнь к лучшему и при этом зарабатывать хорошие деньги, только придется попотеть пока такое сочетание найдешь.
    Ответ написан
    1 комментарий
  • Как сделать валидацию модели представляющую из себя список элементов в ASP.NET MVC?

    AlexanderByndyu
    @AlexanderByndyu
    IT-архитектор, эксперт в Agile&Lean
    Для настройки валидации я бы посоветовал MvcExtensions. Введение blog.hazzik.ru/post/19465323230/mvcextensions-intro, вам в раздел Метаданные.
    Ответ написан
    Комментировать