I'm very honored to be speaking at Dev Day 2014 in Krakow this September!
Said Banzen, “I can think of one application whose codebase has grown confused over the years, owing to its many owners. I suspect it hides much rubbish which may be cleared away.”
When Banzen examined Djishin’s refactoring he found the code to be well-organized and greatly simplified. The most dramatic reduction had been in the number of Data Transfer Object classes.
“I retained only those classes which map directly to database tables,” Djishin explained proudly. “See, here is a query which joins the Campaign, Soldier, and Specialty tables, fetching but two columns from each. Previously there was a DTO whose only purpose was to return the six values for each row—shameful! Now the query returns a list of Campaign instances, each holding a list of Soldiers, each in turn holding a list of Specialties. True, the presentation layer must now traverse these objects, but they are common throughout the application and will be familiar to all who labor upon it.”
Banzen stroked his beard. “You have adopted the ways of the Object-Relational Mapping, in a framework of your own devising. I am acquainted with the virtues of this approach, but also with its vices. These three tables have about twenty columns each; the domain objects which mirror them have likewise twenty fields. So now instead of fetching six columns per row, are you fetching sixty? Or executing the query in three passes? Or employing some sort of cache?”
“None of these,” said Djishin with satisfaction. “I fetch only the original six columns, plus primary keys. All other fields in the domain objects are simply left uninitialized.”
Banzen sighed and reached for his staff.
Djishin awoke outside with a pounding headache, covered by a blanket of new-fallen snow. He was alone in the middle of a tidy, perfectly level field surrounded by great pines. All gleamed white in the morning sun, and a few flurries were still spinning through the air.
At his feet a long stick had been thrust into the ground. A note was tied around the middle. Djishin unrolled it.
I ordered the One Shoe Clan to remove all the refuse from the temple’s rubbish yard. Is it not lovely now?
Sadly, this left behind many deep pits that would require too much effort to fill, so we covered the tops quite artfully with the thinnest layer of branches and leaves. Since a good snow has been forecast for this evening, I expect you will awaken to a picture of perfection.
Watch your step,
Provided under the Creative Commons Attribution-NonCommercial 3.0 Unported License.