Cascading Style Sheets are an excellent tool used by web developers to put the repetitive formatting details -- font Tahoma, color Mauve, weight Bold, etc -- in a single, easy to maintain place. Of course, no developer actually expects to work on a site that utilizes them. But still, it's comforting to think that maybe, one day, one of us just might be lucky enough to come across that one client who actually uses them somewhat properly.

When a client of Philip Bathe's company requested a change to their website, Philip expected a mangled mess of HTML with improperly formed FONT tags nested inside of CENTER tags with the occasional use of platform-specific CSS. If only he was that fortunate. The moment he opened up the home page and saw what it consisted of, he knew that he'd be in for a "treat" ...

<!--#INCLUDE FILE="includes/box0.asp" -->
<!--#INCLUDE FILE="includes/box.asp" -->
<!--#INCLUDE FILE="includes/box2.asp" -->
<!--#INCLUDE FILE="includes/box3.asp" -->
<!--#INCLUDE FILE="includes/box6.asp" -->
[ ... snip ... ]
<!--#INCLUDE FILE="includes/boxF.asp" -->

Most of these include-files (which I'll call "boxes") contained only more boxes. And many of those boxes contained even more boxes. Unlike our matryoshka dolls, some of the boxes contained boxes that were already boxed within other boxes. Confused yet? Philip's pain only got worse.

The majority of the boxes didn't contain any literal HTML. Instead, they utilized a series of VBScript functions that output HTML. These functions tended to call functions defined in other boxes and were named just as undescriptively as the include files were. Following is one of the functions from box2-3.asp:

function BoxB66()
    response.Write ("</table>")
    'response.Write ("</td></tr>")
    'response.Write ("</table>")
    call BoxBEnd()
end function

In the end, Philip was able to accomplish the task he was charged with doing: add a second row to the top navigation links. And it only took him the better part of a week.

[Advertisement] BuildMaster allows you to create a self-service release management platform that allows different teams to manage their applications. Explore how!