From the source, directly... and some of these things aren't super clear to me yet. "Rules" for example. These bullets align with the "[[Complect]]" definition of complexity.
Coding constructs that are complex:
- State - everything it touches
- Object - state, identity, value
- Methods - function and state, namespaces
- Syntax - meaning, order
- Inheritance - types
- Switch/matching - multiple who/what pairs
- Vars - value, time
- Imperative loops - what/who
- Actors - what/who
- ORM - OMG
Coding constructs that are simpler:
- Values - use final, persistent collections
- Functions - use stateless methods
- Namespaces - use a language with good support for namespaces
- Data - use maps, arrays, sets, XML, JSON, etc.
- Polymorphism - through protocols, type classes
- Managed refs - Clojure, Haskell
- Set functions - via libraries
- Queues - via libraries
- Declarative data manipulation - via SQL, LINQ, Datalog
- Rules - via libraries or natively in Prolog
****
# More
## Source
- https://www.infoq.com/presentations/Simple-Made-Easy/
## Related
- [[Simple vs Easy]]
- [[Pure Function]]