Trzymanie kilku klas w jednym pliku

0

Powiedzmy, że mam komendę DoSomething, walidator DoSomethingValidator i handler DoSomethingHandler. Są jakieś wady trzymania wszystkich tych klas w jednym pliku o takiej strukturze?

public class DoSomething
    {
        // wlasciwosci

        public DoSomething()
        {
            // konstruktor
        }

        public class DoSomethingValidator
        {
            // FluentValidation albo implementacja IValidatableObject
        }
        
        public class DoSomethingHandler
        {
            // handler
        }
    }

W sumie zazwyczaj wychodzi 100-200 linii na plik. W Reakcie powiązany ze sobą kod wrzucany jest do jednego pliku. Czemu by nie robić tak na backendzie?

0

No ja bym w ogóle trzymał handlery i walidatory w oddzielnych warstwach, a więc i projektach. Przecież mają inne zależności i w ogóle do czego innego służą.

0

@somekind: Czyli gdzie byś trzymał walidatory? W Web/API? Myślałem, że walidatory wrzuca się do Application, aby mieć w pełni działającą "aplikację", mam nadzieję, że wiesz, o co mi chodzi.

Chyba że masz na myśli ViewModele, ale ja mam Web Api i komenda == DTO.

0

Jeśli jest ich dużo, to trzymam w ogóle w oddzielnym projekcie. Jeśłi nie, to trzymałbym pewnie w application, ale nie w taki sposób, w jaki Ty proponujesz.
Nie mówię, że to złe, może to ma jakieś zalety, ale ja ich nie widzę. Po co mam patrzeć na walidator, gdy chcę zmienić logikę handlera albo odwrotnie? Do tego jeszcze w podpowiedziach IDE będą mi się plątały pod palcami jakieś klasy zwiążane z zupełnie innym aspektem. Nie wydaje mi się to wygodne.

0

Ogólnie MediatR wymaga sporo boilerplatu, a to podejście wydaje się go zmniejszać. Zobaczyłem to tutaj: https://github.com/JasonGT/CleanArchitecture/tree/master/src/Application/TodoItems/Commands/CreateTodoItem, ale jak patrzę, to i tu walidator jest trzymany osobno.

Pewnie jako frontendowiec krytykowałbyś Reakta, bo po co patrzeć na szablon, gdy chce się zmienić logikę komponentu. :)

0

No ja pisałem właśnie o rozdzieleniu handlera od validatora, do handlera z commandem się nie odnosiłem. (Chociaż dla mnie to dziwne trochę, no ale rozumiem, że to dość popularny wzorzec i właściwie niczemu nie szkodzi.)

0

Może na początek zapoznaj się z zasadami programowania obiektowego np. solid
https://www.p-programowanie.pl/paradygmaty-programowania/zasady-solid/

1 użytkowników online, w tym zalogowanych: 0, gości: 1