You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Goed rekening gehouden met exceptions die vanuit lagerliggende lagen gegooid kunnen worden. Deze wil je altijd 'verpakken' naar iets dat je kan teruggeven aan de consumers/clients van jouw API. Dit doe je goed (e.g. BadRequest). Je kan wel eventueel kritisch kijken naar wanneer je een 4xx statuscode teruggeeft (e.g. een BadRequest) versus een 5xx internal server error. Een statuscode startend met een 4 wilt zeggen dat de 'schuld' bij de client ligt en hij in principe zijn call moet corrigeren om dan opnieuw te proberen. Een statuscode startend met een 5 wijst op een internal server error. De schuld ligt bij de server. Er is op zich weinig wat de client hier aan kan doen (hij weet dus dat hij niet opnieuw moet proberen).
Wat logging betreft: zorg dat je zeker in al je catch blokken van jouw try-catch statements aan logging doet. (in plaats van bijvoorbeeld: _customerLogger.LogInformation("hoi");. Gebruik in dat geval (voor het loggen van exceptions) niet LogInformation maar LogError.
Goeie mapping, dto's.
Services
In bijvoorbeeld de ItemService, methode CreateNewItem, kan je de grote if/else check extracten naar een methode (bijvoorbeeld: AssertValidValuesForProperties). Op die manier wordt de flow van methode CreateNewItem duidelijker. (validate --> map To Item --> Save Item --> return Dto)
Domain
Nog teveel public setters. Ik kan bijvoorbeeld op een Item het ID nadien setten op een nieuwe waarde. Zeer gevaarlijk.
Goed dat je van Address een apart object hebt gemaakt. Ik zou hier zelf wel geen aparte 'DB' hebben voorzien. Een customer heeft simpelweg een address object. Wil ik het address, dan moet ik via de customer (id) gaan.
OrderReport hoeft niet te bestaan in je domain. Uiteindelijk is het report gewoon een verzameling van data die in je ander domeinobjecten leeft (in Order, ItemGroup,...). Ik zie OrderReport dus meer als een DTO, een resultaat van een aggregatie van informatie. Een OrderReport zou je in principe ook nooit as-such gaan opslaan / persisteren. Je zou het altijd herbereken.
Integration / Unit test
Mooie suite van tests geschreven!
Unit tests: dit zit op zich best goed. Je mapper test is bijvoorbeeld een zeer nuttige en niet zo moeilijk te schrijven.
Bij de integratie tests (eigenlijk echt de controller end-to-end tests), assert je nu puur de statusCode. Dit is op zich niet slecht. In de plaats zou je ook, in de situaties waarin je een object terugkrijgt (een Dto), kunnen asserten dat deze DTO dan de waardes bevat die je verwacht.
Kleine opmerkingen
Bij het rename van een project (bv. naar Oder.Api moet je ook de achterliggende foldernaam aanpassen. Die is bijvoorbeeld nu nog gewoon Oder. Projectname != foldername)
Commits zonder een zinnige message (e.g. je hebt een commit met message t, zijn bad practice.. :) )
The text was updated successfully, but these errors were encountered:
API
_customerLogger.LogInformation("hoi");
. Gebruik in dat geval (voor het loggen van exceptions) nietLogInformation
maarLogError
.Services
ItemService
, methodeCreateNewItem
, kan je de grote if/else check extracten naar een methode (bijvoorbeeld:AssertValidValuesForProperties
). Op die manier wordt de flow van methodeCreateNewItem
duidelijker. (validate --> map To Item --> Save Item --> return Dto)Domain
Item
het ID nadien setten op een nieuwe waarde. Zeer gevaarlijk.Address
een apart object hebt gemaakt. Ik zou hier zelf wel geen aparte 'DB' hebben voorzien. Een customer heeft simpelweg een address object. Wil ik het address, dan moet ik via de customer (id) gaan.OrderReport
hoeft niet te bestaan in je domain. Uiteindelijk is het report gewoon een verzameling van data die in je ander domeinobjecten leeft (inOrder
,ItemGroup
,...). Ik zieOrderReport
dus meer als een DTO, een resultaat van een aggregatie van informatie. EenOrderReport
zou je in principe ook nooit as-such gaan opslaan / persisteren. Je zou het altijd herbereken.Integration / Unit test
Kleine opmerkingen
t
, zijn bad practice.. :) )The text was updated successfully, but these errors were encountered: