"When you're designing a piece of code, or a web page, or you're putting together an image, always keep one logical action or piece of work in one file or one named block. If you want to do several things, then write an encompassing element to contain them both."
Such is Computer Science Theory, but what does it mean, and why? Let me give you an example.


On the left hand side of our web page, we have an image that's 132 pixels wide by 300 pixels tall, and until the current version of our site it also included a band of 8 white pixels on the right to space the text in. Great - the site worked very well. Until we came to add in colour changes required under the UK's Disability Discrimination Act. Then we saw an ugly white line to the right of the image on all non-standard pages and had to make retrospective changes.
Had we used two images in a table to start with, "one image, one function", then not only would that problem have been solved, but also we could have made use of the images for other purposes. I'm glad to say that's done on the new site, which is why you can see images of Lisa and I to the sides of this page - great reuse of work and THAT's what allows us to do so much with such a small team!
(written 2005-12-19, updated 2006-06-05)
Associated topics are indexed as below, or enter http://melksh.am/nnnn for individual articles
Q907 - Object Orientation and General technical topics - Object Orientation: Design Techniques [4098] Using object orientation for non-physical objects - (2013-05-22)
[3978] Teaching OO - how to avoid lots of window switching early on - (2013-01-17)
[3928] Storing your intermediate data - what format should you you choose? - (2012-11-20)
[3887] Inheritance, Composition and Associated objects - when to use which - Python example - (2012-10-10)
[3878] From Structured to Object Oriented Programming. - (2012-10-02)
[3844] Rooms ready for guests - each time, every time, thanks to good system design - (2012-08-20)
[3798] When you should use Object Orientation even in a short program - Python example - (2012-07-06)
[3763] Spike solutions and refactoring - a Python example - (2012-06-13)
[3760] Why you should use objects even for short data manipulation programs in Ruby - (2012-06-10)
[3607] Designing your application - using UML techniques - (2012-02-11)
[3454] Your PHP website - how to factor and refactor to reduce growing pains - (2011-09-24)
[3260] Ruby - a training example that puts many language elements together to demonstrate the whole - (2011-04-23)
[3085] Object Oriented Programming for Structured Programmers - conversion training - (2010-12-14)
[3063] Comments in and on Perl - a case for extreme OO programming - (2010-11-21)
[2977] What is a factory method and why use one? - Example in Ruby - (2010-09-30)
[2953] Turning an exercise into the real thing with extreme programming - (2010-09-11)
[2889] Should Python classes each be in their own file? - (2010-07-27)
[2878] Program for reliability and efficiency - do not duplicate, but rather share and re-use - (2010-07-19)
[2865] Relationships between Java classes - inheritance, packaging and others - (2010-07-10)
[2785] The Light bulb moment when people see how Object Orientation works in real use - (2010-05-28)
[2747] Containment, Associative Objects, Inheritance, packages and modules - (2010-04-30)
[2741] What is a factory? - (2010-04-26)
[2717] The Multiple Inheritance Conundrum, interfaces and mixins - (2010-04-11)
[2523] Plan your application before you start - (2009-12-02)
[2501] Simples - (2009-11-12)
[2380] Object Oriented programming - a practical design example - (2009-08-27)
[2327] Planning! - (2009-08-08)
[2170] Designing a heirarcy of classes - getting inheritance right - (2009-05-11)
[2169] When should I use OO techniques? - (2009-05-11)
[1538] Teaching Object Oriented Java with Students and Ice Cream - (2008-02-12)
[1528] Object Oriented Tcl - (2008-02-02)
[1435] Object Oriented Programming in Perl - Course - (2007-11-18)
[1224] Object Relation Mapping (ORM) - (2007-06-09)
[1217] What are factory and singleton classes? - (2007-06-04)
[1047] Maintainable code - some positive advice - (2007-01-21)
[836] Build on what you already have with OO - (2006-08-17)
[831] Comparison of Object Oriented Philosophy - Python, Java, C++, Perl - (2006-08-13)
[747] The Fag Packet Design Methodology - (2006-06-06)
[656] Think about your design even if you don't use full UML - (2006-03-24)
[507] Introduction to Object Oriented Programming - (2005-11-27)
[236] Tapping in on resources - (2005-03-05)
[80] OO - real benefits - (2004-10-09)
4916
Some other Articles
A company we can work withDaily Image SantafiedCancellations and penaltiesMySQL permissions and privilegesDesign - one name, one actionBigger Box CampaignCopyright - how much can I legally copy?Packages in packages in PerlPerl course during the week, getting married at the weekendHalal in Melksham