Query string is only an example. You can use almost any cgi var. If your site is dynamic using the query_string tests quite fast and well. You could also pass url or test for attributes in len(). I would not gauge this on professional or unprofesional. Code is gauged on how it works. With that said you can also test on the HTTP_REFERER, but the contains clause I belive takes longer to process.
Or typical scenario is a modified fusebox. In this case if the query string is modified without being passed through index.cfm, then they page defaults to home. Here is an example of how we dynamically include or exclude content. This is a dsp_header:
<!--- Begin header --->
<cfoutput>
<html>
<head>
<title>#attributes.pageTitle#</title>
<cfinclude template="dsp_meta.cfm">
<script language="JavaScript" src="#js#/clientsniff.js" type="text/javascript"></script>
<script language="JavaScript" src="#js#/popupwindow.js" type="text/javascript"></script>
<script language="JavaScript" src="#js#/popupwindow2.js" type="text/javascript"></script>
<script language="JavaScript" src="#js#/checkbox.js" type="text/javascript"></script>
<cfif findnocase("my.register",query_string)>
<script language="JavaScript" src="#js#/password.js" type="text/javascript"></script>
</cfif>
<cfif findnocase("my.charities",query_string)>
<script language="JavaScript" src="#js#/confirm.js" type="text/javascript"></script>
</cfif>
<script type="text/javascript">
function toAnchor(anchorName)
{
if(location.href.split("##"

)
location.href = location.href.split("##"

[0] + "##" + anchorName;
else
location.href = location.href + "##" + anchorName;
}
</script>
..........and so on
<!--- Giving Calc --->
<cfif findnocase("givingcalc",query_string)>
<script language="JavaScript1.2" src="../_js_/calc/calc.js"></script>
</cfif>
<!--- /Giving Calc --->
<link rel="stylesheet" href="#css#/#request.MainCSS#" type="text/css">
</head>
<body marginheight="0" marginwidth="0"#iif(Len(attributes.onload),DE(" onload="""&attributes.onload&""""

,DE(""

)#>
<table width="765" border="0" cellspacing="0" cellpadding="0" height="100%">
<!--- height="100%" moved here see below comment --->
<tr>
<td bgcolor="999999" align="center" valign="top" width="165">
<table width="100%" border="0" cellspacing="0" cellpadding="0" >
<!--- removed height="100%" look over site to make sure page still is 100% no matter the content size. See above--->
<tr>
<td bgcolor="000066" valign="top" align="right"><a href="#attributes.BaseURL#"><img src="_gfx_/images/logo1.gif" width="165" height="160" alt="Charity Navigator" border="0"></a></td>
</tr>
<tr>
<td bgcolor="336699" align="center" valign="middle" height="28" class="welcome">
<!--- Logged in or Out --->
<cfif isdefined("client.user.status"

and client.user.status is 1>
<b><a href="#attributes.BaseURL#/?bay=my.charities" class="welcome">Review #client.user.fname#'s Charities</a></b><br>
(Not #client.user.fname#? <a href="#attributes.BaseURL#/?bay=my.logout" class="welcome">Click here</a>)
<cfelse>
<a href="#attributes.BaseURL#/?bay=my.login" class="welcome">Log In or Join</a>
</cfif>
<!--- /Logged in or Out --->
</td>
</tr>
</table>
<cfif findnocase("search.adv",query_string)>
<!--- nada --->
<cfelse>
<cfinclude template="../search/dsp_sidesearch.cfm">
</cfif>
<br>
<cfinclude template="dsp_factoid.cfm">
<br>
<cfif not findnocase("bay",query_string)>
<!---ONLY HOME PAGE --->
<!--- Poll --->
<cfinclude template="inc_poll.cfm">
<!--- /Poll --->
<br>
<!--- Mail --->
<cfinclude template="inc_email.cfm">
<!--- /Mail --->
<p> </p>
<!--- /ONLY HOME PAGE --->
</cfif>
</td>