This blog is the communication arm of my UMWiki that is available at Craig Gjerdingen. The wiki is my preferred medium to communicate info as project manager and software developer. It allows visitors to add, link, remove, edit, and refactor content. It is a great tool for mass collaborative authoring; a knowledge base or hyperlink database.

February 7, 2007

Transformation: Ruby Smells

I keep hearing people say they couldn’t possibly use Ruby because it lacks automatic refactoring tools.

Marting Fowler tells us that Refactoring is the art and science of turning smelly code into good code, in small, incremental steps. Provably correct, by construction. Algorithms for giving your code a makeover without breaking it in the process.

February 1, 2007

Chapter 1: Layering
Most common technique to break apart a complicated software system. Layers is the cake analogy for software. Each layer rests on a lower layer. Higher layers use services of the lower layers. Lower layers are unaware of the higher. Layers hide layers beneath them.

Chapter 2: Organizing Domain Logic
Simple logic doesn't require decomposition and can be done in a "Transaction Script". But complex logic is where objects come in, and handle this problem with a "Domain Model", primarily around the nouns of the domain. Logic for handling calculations and validations are placed in the model.