I am not happy with the architecture of Ene at this moment. We are at a point that the application is not a prototype anymore and we need to carefully think about this before adding on more features without thinking. Besides poor code quality in general in cases such as this and this, the code architecture also needs to be reworked. Here's a non-exhaustive list of examples that reflects the problems:
-
Unit tests writing to disk:
-
Bushiness logic mixed with database access:
-
Configuration logic mixed with UI:
-
Not using dependency injection and creating object in __init__ methods:
-
Classes knowing about raw file paths when they really shouldn't:
What needs to happen, in order:
- There will be no additional features added to Ene before the architecture issues are addressed.
asyncio branch must be merged to master before we address any of these issues, otherwise it will just lead to merge conflicts.
- @MaT1g3R and @jsedge needs to read this blog post and watch this talk
- We need to clearly define the set of layers of our application, and the APIs that they provide.
- Refactor the code to reflect the reworked design.
Why are we doing this?
If we do not address this issue now, it will be hard for us to test and add additional features to our application. This will bite us in the ass in the future.
I am not happy with the architecture of Ene at this moment. We are at a point that the application is not a prototype anymore and we need to carefully think about this before adding on more features without thinking. Besides poor code quality in general in cases such as this and this, the code architecture also needs to be reworked. Here's a non-exhaustive list of examples that reflects the problems:
Unit tests writing to disk:
Bushiness logic mixed with database access:
Configuration logic mixed with UI:
Not using dependency injection and creating object in
__init__methods:Classes knowing about raw file paths when they really shouldn't:
What needs to happen, in order:
asyncio branch must be merged to master before we address any of these issues, otherwise it will just lead to merge conflicts.Why are we doing this?
If we do not address this issue now, it will be hard for us to test and add additional features to our application. This will bite us in the ass in the future.