How not to use OOP
5th December 2003
Via Hans Nowak, Understanding Object Oriented Programming, or how to turn 19 lines of easily maintained code in to an OO monstrosity spanning 7 class files. This is not the way to make code more maintainable. For comparison, here’s how I would implement a solution to the same problem in Python, assuming the availability of an equivalent function to Java’s System.getProperty("os.name") (os.name is similar but inappropriate for this example):
MESSAGES = (
('SunOS', 'Linux'), 'This is a UNIX box and therefore good.'),
('Windows NT', Windows 95'), 'This is a Windows box and therefore bad.),
)
DEFAULT_MESSAGE = 'This is not a box.'
def get_os():
name = System.getProperty("os.name")
for names, message in MESSAGES:
if name in names:
return message
return DEFAULT_MESSAGE
if __name__ == "__main__":
print get_os()
In my book, smart data-driven programming beats over-engineered class-based programming any day of the week.
More recent articles
- Reverse engineering Codex CLI to get GPT-5-Codex-Mini to draw me a pelican - 9th November 2025
- Video + notes on upgrading a Datasette plugin for the latest 1.0 alpha, with help from uv and OpenAI Codex CLI - 6th November 2025
- Code research projects with async coding agents like Claude Code and Codex - 6th November 2025