Guidance on how to break down problems and structure solutions.
Decoupling methods, by reducing assumptions and minimizing interfaces.
What's a good way to open a conversion method to extension? Let's find out!
Eliminating astonishment with a special Ruby idiom for object creation.
A naming guideline to avoid confusion and latent bugs.
Some domain concepts are easier to spot than others. Today we deal with one of most slippery concepts of all.
Having model attributes at different levels of abstraction can quickly complicate an application. In this episode, we'll level the playing field.
In this sequel to #430, we apply a powerful pattern for encapsulating problem values.
In which we examine some of the pitfalls of handling badly-formed user input for Whole Value fields.
Sometimes we put data into a cache, only to find that things break when we try to take it back out again. Here's how to avoid this problem.