Notes for Code & Coffee: 1/28/2022
- Replacing the six year old mouse
- Tried and didn't like two new mice
- Talked about battery life of wireless mice
- Trackball vs. Mouse vs. Trackpad vs. Trackpoint
- Trackpoint is the best but overuse causes pain, so just use vim
- Vimium for Chrome
- SICP for javascript is available for pre-order
- link
- Found this out from hacker newsletter
- https://hackernewsletter.com/
- Also check out:
- x Driven x
- Intro
- What drives your daily or monthly work.
- Value Objects
- Treated in Domain Driven Design
- Also more concisely in "Refactoring" as "Data Clumps"
- Coupling question
- Building an interface just for the sake of building an interface
- Talked about the usefulness and when to use and not use an interface
- It is cheap to extract so what is the reason to make them unnessecarily
- Stringly typed interfaces
- Open API contract first
- Contract is outside the code so does not get accidently changed
- Service POJO is generated from Open API
- First thing that happens is a conversion from the POJO to a Domain Object
- (Immutable) Domain Object has the validation
- Each Domain Object has invariants and will throw and exception if attempting to construct an invalid object
- Validation code is concentrated into the Domain Objects, not strewn about
- Disadvantages
- Changing the rules can expose issues with previously stored data
- Example changing a business rule that will make a newly required field
- There will be a problem loading the previously saved fields.
- Just be careful ;-)
- DRY
- What is too dry
- Rule of three
- Is code that looks the same really the same?
- maybe/maybe not
- Summing the budget and the audience is not the same.
- How do you round the audience members?
- Splitting the domain object
- In three parts
- ID - invented key or perhaps multi-part
- guid
- or guid + userId
- validated at ID construction time
- don't cross the streams ;-)
- Data - User controllable data
- MetaData - System created data
- Insert - xData comes in and is validated - return ID
- Update - .... something something something.
- Only need the parts you need.
- Immutable grass is what I need
- it doesn't grow so I don't need to waste time cutting it.