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
The base use case classes like UseCase, StreamUseCase etc bring us only one benefit: they keep the use cases interface consistent. They force us to use the run method.
But we never operate with use cases using their base classes, e.g. you will never see
But by using the base class we are forced to always have a single parameter in the run method. If we'd need two or more parameters, we would be forced to create an Input class. This is:
Not convenient
Expands our code base for no reason
// Bad
_myUseCase.run(MyInput(param1:0, param2:1));
// Good
_myUseCase.run(param1:0, param2:1);
The solution
Remove the inheritance from all the use cases. But then we will have to somehow ensure that all the use cases follow the same interface, having a public run method.
The problem
The base use case classes like
UseCase
,StreamUseCase
etc bring us only one benefit: they keep the use cases interface consistent. They force us to use therun
method.But we never operate with use cases using their base classes, e.g. you will never see
It will always be:
But by using the base class we are forced to always have a single parameter in the
run
method. If we'd need two or more parameters, we would be forced to create anInput
class. This is:The solution
Remove the inheritance from all the use cases. But then we will have to somehow ensure that all the use cases follow the same interface, having a public
run
method.We could use this GitHub action to validate our pull requests to have the same use case structure. You can find an example here, it has a valid PR and an invalid PR.
But it is less convenient than a linter rule that could highlight the error in our IDE right when we code, not when we submit a PR.
So... We can create a linter rule that would validate our use case classes. custom_lint could be used for this purpose — but it needs investigation.
The text was updated successfully, but these errors were encountered: