Context
We want
to write code and create applications that are:
- MVP
Make it work → improve
- named correct
Naming is key and good naming helps you the identify the purpose of your implementation
- easy to maintain
if you change things in one place
it shouldn't break things somewhere else
- easy to understand
You should not have to read the entire app to work on a single widget
- avoiding duplicate code
Sensible abstractions keep you from writing code and logic multiple times
- simple
Anyone can solve complex problems in a complex way
Break down things into simple problems and solve those
- testable
We don't do test driven development
but we want to assure that our code does not break when things are changed
All of the above will lead to easy testability
Topics
to help you achieve these goals:
- Dependency injection
- Modularization
- Well structured OOP
- Domain Driven Design / Clean Architecture
We mostly use a mixture of the two to avoid making things unnecessary complicated but still have a clear separation between the different domains
Requirements
Where am I?
People that join yamuntu should be able to start working on parts of the app
without reading the entire apps code first.
Bad code indicators?