about summary refs log tree commit diff stats
path: root/notes.md
blob: ed969929522e5f2708de4cff7555cdfe77b6eb7b (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# misc. axioms of big O

- Arithmetic operations are constant 
- Variable assignment is constant 
- Accessing element in an array (by index) or object (by key) is constant
- In a loop, the complexity is the length of the loop times the complexity of whatever happens inside of the loop

# SOLID

- Single responsibility principle
	- a class should only have 1 reason to change
	- *separation of concerns* -- different classes handling different, independent tasks/problems 
- Open-closed principle
	- classes should be open for extension but closed for modification
- Liskove substitution principle 
	- you should be able to substitute a base type of a subtype
- Interface segregation principle 
	- don't put too much into an interface; split into seperate interfaces 
- Dependency inversion principle 
	- high-level modules should no depend on low-level ones; use abstraction

# Builder

A component that provides an API for constructing an object step-by-step, this saves you from having a gigantic constructor.