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
- Experimenting with Starlette 1.0 with Claude skills - 22nd March 2026
- Profiling Hacker News users based on their comments - 21st March 2026
- Thoughts on OpenAI acquiring Astral and uv/ruff/ty - 19th March 2026