Jason on what the software industry is missing.
Excellent.
May, 2006
16
May 06
Smell to Refactoring Cheat Sheet
Nice overview of code smells and what to do about them: Smell to Refactoring Cheat Sheet.
(Via William C. Wake)
13
May 06
The Smalltalk Browser
Andy Dent on Object Master & the classic beauty of the Smalltalk Browser.
That’s something I crave: Having a Smalltalk 3-pane browser to edit C++ code – like Object Master. Occasionally, I spent some time googling for one, but it looks like there’s nothing like that out there.
13
May 06
Foundation
Here‘s an excellent post by Jonathan Pickup on the need for a solid foundation to successfully complete advanced projects.
I would like to add that you will need to work on your foundation, the basic skill set of your profession every day. It’s one of most important things you can do.
7
May 06
Martin Luther King, Jr.: I Have a Dream
If Christoph blogs, you can count on him blogging something deeply relevant: Martin Luther King, Jr.: I Have a Dream.
Even though the speech was delivered more than 40 years ago, it’s still relevant today.
Back to our regular scheduled programming.
3
May 06
Wrapping (procedural) APIs
Why wrap a (procedural) API of a third-party library / host application – instead of using the API straight away? Here are some reasons plus some simple techniques to accomplish just that:
* Wrapping the API makes unit testing much easier because you can mock your own classes instead of mocking the API itself (which tends to have more dependencies)
* Creating your wrapper may actually deepen your understanding of the API
* You may be able to tie up a few loose ends in the API (e.g. mix of deprecated and new API functions to accomplish a task)
* Creating your wrapper may simplify the API (witness the change from AddPopupItem() to AppendPopupItem() in the sample provided below
Here are some simple techniques for wrapping:
* Save on parameters – Instead of using AddPopupItem(..., long dialogID, short popupID, short insertAfterEntry, String entry) you could use MyAppendPopupItem(long dialogID, short popupID, String entry) – not a substantial improvement, but if combined with the next techniques quite powerful…
* Transmogrify the API into an object-oriented API – Use myDialog.AppendPopupItem(short popupID, String entry) instead
* Make it even more object-oriented – Use myPopup.Append(String entry) instead
There are a number of arguments against wrapping an API – but at the end of the day, I’m quite firmly in the “Wrap it” camp.
2
May 06
On setters, constructors and modelling reality
Darren Hobbs:
…just because all the fields (of a class) are final and there are no setters, this doesn’t mean that the object is immutable.