3 ms·
Keep states where they are needed. Make most things immutable. Prefer composition to extension. Treat Types as contracts. Sandbox "unsafe" codes (codes that
by valand 7y ago
Keep states where they are needed.
Make most things immutable.
Prefer composition to extension.
Treat Types as contracts.
Sandbox "unsafe" codes (codes that interacts with network, file storage, etc).
Eliminate side effects.
Eliminate premature abstractions.
Prefer explicit over implicit.
Keep components functional.
Prioritize semantic correctness and readability.
Use events to for inter-component communication when those components don't need to care about each other's functionality.
Think protocol over data.
- croo 7y agoI nodded along expect the last one. What do you mean by thinking protocol over data?
- valand 7y agoI meant: When creating an endpoint, a component, a feature, or a data structure, I treat them like protocol. Protocols enable other components to do more things while being robust and efficient. It must be, to certain degree, extensible and forward compatible. With that mindset, you're likely going to avoid more trouble in the future, while indirectly enforcing open-closed principle in every level.