Coder Social home page Coder Social logo

zetroot / safehouseams Goto Github PK

View Code? Open in Web Editor NEW
4.0 1.0 6.0 2.48 MB

Assistance management system for Safehouse Foundation NGO

License: GNU General Public License v3.0

HTML 22.07% C# 77.43% CSS 0.38% Dockerfile 0.12%
blazor blazor-webassembly crm ngo

safehouseams's Introduction

SafeHouse AMS

smoke test codecov

safehouseams's People

Contributors

dependabot[bot] avatar zetroot avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar

safehouseams's Issues

Proposal for help

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

Настроить deploy на staging среду

  • хостинг статического сайта? DO?
  • хостинг приложнния (та же машина, но другие порты? Отдельная машина? Oracle облако?)

Разделить объявление структуры команды от её обработки

Сейчас все команды имеют одновременно:

  1. Свойства, которые описывают структуру команды
  2. Метод ApplyOn, который хранит в себе логику обработки команды (почти всегда там просто вызов репозитория)

Я вижу в этом следующие проблемы:

  1. Нарушение SRP.
  2. Проблемы с расширяемостью. Когда для обработки команды нужно будет больше кода, чем вызов репозитория, то непонятно, куда этот код ложить - в саму команду, в сервис выше или в репозиторий.
  3. Смешение парадигм - команда одновременно и ДТО, и объект. Выходит, тут одновременно и структурное програмирование, и ООП.

Я предлагаю сделать команды просто как ДТО, а логику их обработки выносить в отдельные хендлеры. При этом, репозитории могут принимать саму команду в своих методах, что освободит от лишнего перекладывания параметров.

Более того - такой подход можно использовать и для query запросов. Все get запросы тоже можно оформить как дто+обработчик. Тогда высокоуровневые сервисы (каталоги) будут создавать команду или запрос и передавать их в нужный хендлер. Чтобы уменьшить связанность, можно использовать MediatR. Он будет находить подходящий обработчик для команд и запросов автоматически.

Создать проект SafeHouseAMS.Infrastructure

В этот проект можно положить следующую логику:

  1. Генерация Guid
  2. Взаимодействие с внешними системами (IdenityServer4, SMTP server etc)
  3. Интеграция разных библиотек - MediatR, FluentValidation etc
  4. Взаимодействие с базой данных. Сейчас это лежит в DataAccess, можно этот проект трансформировать в Infrastructure.

Сделать комменты необязательными

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

  1. Комменты не нужны, ведь разработчик и так может подсмотреть всю нужную информацию в IDE
  2. Комменты опасны, ведь после рефакторинга можно забыть их проапдейтить - и тогда они будут хранить ложную информацию
  3. Комменты замедляют девелопмент
  4. Комменты уменьшают читабельность кода

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

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.