Walidacja ujemnego kosztu wydatku

0

Pisze sobie apke do zarządzania wydatkami i zastanawiam się czy jeśli user poda ujemną wartość kosztu np. "-100.00" to powinienem rzucać wyjątek i zwrócić jakiś błąd czy wystarczy jak zmienię te wartość na dodatnią i zwrócę wydatek z poprawioną wartością? Na razie mam samo API

2

@Nofenak: skoro piszesz sobie apke to sam sobie jesteś biznesem - your call 😅

1

Lepiej od razu zwrócić błąd niż po cichu poprawiać, bo to potem może prowadzić do mindfucków, no i jak zdecydujesz w przyszłości wprowadzić ujemne wydatki to będzie problem.

7

To jest pytanie nie tyle programistyczne, co typowo biznesowe.
Zastanów się, czy w scenariuszach, które chcesz obsłużyć, dopuszczalne (oraz są realnie szanse, że takie coś się stanie) jest podanie ujemnej wartości. Jeśli tak i nie jest to nic mocno naciąganego - zostawiłbym taką możliwość.

Z tego co piszesz jednak - nie wchodzi to w grę i rozważasz dwa scenariusze: po cichu podmienić na wartość dodatnią lub wywalić błąd/ostrzeżenie (*), więc zdecydowanie jestem za sygnalizowaniem tej sytuacji userowi i niech on to ręcznie poprawi. Magiczne podmianki to jest (moim zdaniem oczywiście) typowy antypattern, coś co nie powinno mieć miejsca. Jeśli jest błąd we wprowadzonych danych, to niech użytkownik sam je poprawi - w ten sposób mamy pewność, że na pewno to, co docelowo trafi do apki jest zgodne z tym, czego user oczekiwał.

Jeśli chcesz dać możliwość wstawiania ujemnych kosztów, to nie rób tego na zasadzie -100 zł za prąd w kwietniu tylko stwórz osobny rodzaj pozycji w zestawieniu - coś w stylu korekty kosztu, zwrot, nadpłata czy coś w ten deseń - żeby było jasno widać, że to jest obciążenie w drugą stronę, a nie błąd przy wpisywaniu kwoty.

Na razie mam samo API

Jeśli planujesz to rozbić na warstwy - typu front i back-end albo jakieś MVC itp. pamiętaj, żeby weryfikację zrobić po obu stronach. W sensie - dobrze, żeby najpierw sam front wywalił ostrzeżenie, że chcesz wpisać niepoprawną kwotę i żeby to działało bez serwera. Ale serwer też musi sprawdzać otrzymane z frontu dane, bo ktoś może próbować to obejść, może będzie jakiś błąd i nie wyłapiesz, że poleciała błędna wartość itp. Jeśli masz zrobić walidację tylko w jednym miejscu to zrób to na serwerze, ale dobrze jest już wstępnie posprzątać na froncie/po stronie klienta.


(*) pisząc tutaj o błędzie nie mam na myśli typowo programistycznego - typu rzucić wyjątek, ale poinformować użytkownika o tym, że wprowadzona wartość jest niedopuszczalna

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