Click here to monitor SSC
SQLServerCentral is supported by Red Gate Software Ltd.
 
Log in  ::  Register  ::  Not logged in
 
 
 

Invisible Comments

By Leon Platt,

Tip of the month -
INVISIBLE COMMENTS - Now you see'em, Now you don't

If you've read any of my articles or downloaded any of my code you will quickly discover that I love using client-side JavaScript. You'll also discover that I write almost as many comments as I write lines of code. This is great for my colleagues at work. This stuff's hard enough to understand without good commenting. I ran into a dilemma when I was told that I should not allow potential competitors to view my JavaScript comments. If they wanted to figure the code out; make them work for it.

This was simple enough to do; so I thought. I simply wrapped my comments in ASP script tags <%..comments..%> and put a ' in front of each line to make the ASP interpreter think it was an ASP comment. The results were great, competitors could no longer see my comments. An added advantage of this was that the comments no longer needed to be sent to the clients browser! Check it out, smaller HTTP packets! This can make a big difference if you comment like I do! Unfortunately, when I did this my color scheme in InterDev was thrown completely out of whack. You see I like to make all my comments appear as white text on a green background. I thought to myself, what am I going to do? I can't program without green comments!

Determined as I am, I finally found my solution. Wrap the ASP tags in a JavaScript comment. So what I ended up with was, a JavaScript comment, wrapped by a ASP comment, wrapped by another JavaScript comment. My color scheme works, my collages can see my comments, my competitors need to work to figure out my code, and my boss is happy. Note: not all three layers are necessary to achieve my results. I could just use ASP comments wrapped by JavaScript Comments. However, doing it with the three layers allows you to do search and replaces on your JavaScript comments without getting them mixed up with your real ASP comments.

While we're talking about comments, I just want to throw in something about Microsoft's new C# language. If you've ever looked at any C# code, you may have seen comments done in XML format. We all like XML right? This really hit me as a great idea. So....Why not implement this in your current ASP or VB code. There's no reason why you can't. A comment is a comment. A XML comment is still a comment, but is there anything to be gained by doing this? Well, it would make it really easy to write an VB add-in to document your code. How about using XPATH to search all your code for certain functions or subroutines? What about shareware sites where you have people searching for code to solve a particular problem. No more keeping a separate database with keyword indexes. The source code has everything you need. Just for thoughts....

An example of Leon's JavaScript commenting
JavaScript Comments, wrapped by ASP comments, wrapped by JavaScript comments.

/*<%
'//<FUNCTION>display_book(whichone,tmpbookIndex)
'//<HEADER>
'//---------------------------display_book()--------------------------
'//
'//	<CALLED BY> get_books(),vcr(),allbooks_onclick(),movebook(),Ddelete_onclick(),Spaste_onclick()
'//</CALLED BY>
'//
'//	<INPUT>	whichone - 1=saved book list  0=queried book list
'//			tmpbookIndex - the books position in the list
'//	</INPUT>
'//		
'//	<PURPOSE>  Select the current book from the dom containing all books
'//				query the book object and get the info to populate the form controls
'//				update the listbox containing the IDs of all books in the dom
'//</PURPOSE>
'//
'//	<OUTPUT>	 Xbooknumber - the current books position in the list
'//				objXbook - an object containing all info on the current selected book
'//</OUTPUT>
'//
'//	<DEVELOPER>	Leon Platt</DEVELOPER>
'//
'//	<DATE>    Feb 18, 2000  </DATE>
'//</HEADER><CODE>
'//%<*/
function display_book(whichone,tmpbookIndex)
  {  
  if (tmpbookIndex<1) return;
  if (whichone==1)  //Saved book list
	{
		Dbooknumber = tmpbookIndex;
		//the position of a book in the DOM is always Dbooknumber - 1 
		objDbook= objDallbooks.childNodes.item(1).childNodes.item(Dbooknumber-1);
		var DbookName= objDbook.selectSingleNode("FIELD[@gcolumnname='title']").text.toUpperCase();
		/*<% '//display the book name%>*/
		document.all.Dbookname.innerText=
		 DbookName;varDbookType=objDbook.selectSingleNode("FIELD[@gcolumnname='type']").text;
		/*<% '//display type of book%>*/
		document.frmFields.Dtype.value=
		 DbookType;varDbookWhen=objDbook.selectSingleNode("FIELD[@gcolumnname='pubdate']").text;
		/*<% '//display when the book was published%>*/
		document.frmFields.Dwhen.value=
		 DbookWhen;varDbookPrice=objDbook.selectSingleNode("FIELD[@gcolumnname='price']").text;
		/*<% '//display the book price%>*/
		document.frmFields.Dprice.value=
		 DbookPrice;varDbookSales=objDbook.selectSingleNode("FIELD[@gcolumnname='ytd_sales']").text;
		/*<% '//display the books year to date sales%>*/
		document.frmFields.Dsales.value=
		 DbookSales;varDbookid=objDbook.selectSingleNode("FIELD[@gcolumnname='title_id']").text;
		/*<% '//display the book id%>*/
		document.frmFields.Dtid.value=Dbookid;
		/*<% '//display book xx of xx %>*/
		document.all.Dbookid.innerText="[ "+Dbooknumber+" of "+Dnumberofbooks+" ]";
		/*<% '//set the length of the list box to the number of books%> */
		document.frmFields.Dallbooks.length=Dnumberofbooks;
		/*<%'//get the notes about the book%> */
		var Denglish = objDbook.selectSingleNode("FIELD[@gcolumnname='notes']").text;
		/*<%'//display the books notes%>*/
		document.all.Denglish.children(1).innerHTML=Denglish;
		/*<%'//fill in the available books list box with the current books from the xml doc%>*/
		for (i=
		0;i<Dnumberofbooks;i++)
			{document.frmFields.Dallbooks.options[i].text=objDallbooks.childNodes.item(1).childNodes.item(i).selectSingleNode("FIELD[@gcolumnname=
			'title_id']").text;document.frmFields.Dallbooks.options[i].value=objDallbooks.childNodes.item(1).childNodes.item(i).selectSingleNode("FIELD[@gcolumnname='title_id']").text;
		}
		document.frmFields.Dallbooks.selectedIndex=Dbooknumber-1;
	}
	/*<%'//</CODE></FUNCTION>*/
Total article views: 3465 | Views in the last 30 days: 1
 
Related Articles
FORUM

Comments to be displayed on export to EXCEL or PDF

Comments to be displayed on export to EXCEL or PDF

FORUM

Changing Format of field for display

Changing Format of field for display

FORUM

Fillable Comment Fields

To create a field within a report that can be fillable

FORUM

Use xp_cmdshell to run a javascript

Use xp_cmdshell to run a javascript

FORUM

How to display the data fields in the french language in the rdl

How to display the data fields in the french language in the rdl

Tags
asp    
programming    
 
Contribute

Join the most active online SQL Server Community

SQL knowledge, delivered daily, free:

Email address:  

You make SSC a better place

As a member of SQLServerCentral, you get free access to loads of fresh content: thousands of articles and SQL scripts, a library of free eBooks, a weekly database news roundup, a great Q & A platform… And it’s our huge, buzzing community of SQL Server Professionals that makes it such a success.

Join us!

Steve Jones
Editor, SQLServerCentral.com

Already a member? Jump in:

Email address:   Password:   Remember me: Forgotten your password?
Steve Jones