How to Design Good Functions and Classes | Writing Clean Code