ITPub博客

首页 > Linux操作系统 > Linux操作系统 > ASP编码规范

ASP编码规范

原创 Linux操作系统 作者:iDotNetSpace 时间:2009-10-14 15:09:56 0 删除 编辑
第一章 ASP编码规范通述

    ASP编码分为两大部分,一部分为静态文件编码,一部分为包含服务器端脚本的动态文件编码。
    静态文件编码分script编码和HTML编码两部分。
    服务器端编码则分为服务器脚本、客户端脚本、HTML脚本三部分。
    编码规范采用如下约定:
     所有客户端脚本一律使用Javascript
     所有服务器端脚本一律使用VBscript
     静态页面输出一律使用HTML脚本
    本规范不适用于由服务器端脚本所产生的客户端脚本代码。
  第二章 静态文件编码规范:
    静态文件脚本部分采用Javascript编写。输出部分采用HTML标记语言。
  1. HTML标记语言编码规范
  1.1 标记的换行规范:
  * 一个标记必须占用一行。不得出现两个标记在同一行的情况(同一标记的关闭标记除外),如:
  text
  而必须写成:
  
   text
    
  1.2 标记的关闭规范
  * 静态文件内容必须包含在标记中间
  * 标记必须包含在标记中间
  * 对于需要关闭的标记,如:
     <body><table><tr><td><p><textarea><select><font><option><div><span></div><div>    必须同其关闭标记同时出现。如</div><div>    <body>…<p>…<font>….</font>….</p>…..</body></div><div>  * 不得出现交叉包含的语句,如:</div><div>  <p><font>…..</p></font></div><div>  1.3 标记的属性赋值规范</div><div>    对于接受属性的标记,属性值必须使用双引号或者单引号包围。如:</div><div>    <body bgcolor=”red”></div><div>    <font size=’7’></div><div>  1.4 标记的缩进规范</div><div>  * 最高一级的父标记采用左对齐顶格方式书写。</div><div>  * 下一级标记采用左对齐向右缩进一个Tab的方式书写</div><div>    在下一级依此类推,分别左对齐相对于父标记向右缩进一个Tab的方式书写</div><div>  * 同一级标记的首字符上下必须对齐。</div><div>  2. 客户端Javascript规范</div><div>  2.1 变量命名规范</div><div>  * 常量以及全局变量名必须全部使用大写字母</div><div>  * 变量名首字母必须小写。</div><div>  * 变量名必须使用其类型的所写字符串开始。各种类型的所写字符串如下:</div><div>  * 整型变量:int</div><div>  * 长整型变量:lng</div><div>  * 浮点型变量:flt</div><div>  * 双精度变量:dbl</div><div>  * 对象引用变量:obj</div><div>  * 字符串变量:str</div><div>  * Date类型变量:dtm</div><div>  * 变量名必须采用有意义的单词命名,如:</div><div>  strUserName、lngArrayIndex</div><div>  * 变量名除首字母小写外,其他单词首字符必须大写</div><div>  * 如果变量名过长可以使用单词缩写,除了被广泛了解的单词缩写以外,所有使用单词所写的变量名必须在定义时给出注释,如:</div><div>  var strAdName //用于表示Administrator帐户的名称</div><div>  var strAdminName //不用给出注释,Admin被广泛了解</div><div>  2.2 变量使用规范</div><div>  * 变量使用前必须定义。没有定义的变量禁止使用</div><div>  * 变量的使用尽量缩小到小的作用域。如循环使用</div><div>  for(var I=0;I<12;I++){</div><div><br></div><div>}</div><div>  而不是:</div><div>  var I;</div><div>  for(I=0;I<12,I++){</div><div><br></div><div>}</div><div>  2.3 对象命名规范</div><div>  各种页面对象如text输入框、按钮、下拉选择框在命名时必须使用以下对应前缀:</div><div>  * text输入框:txt</div><div>  * button按钮:btn</div><div>  * select下拉选择框:sel</div><div>  * option项:opt</div><div>  * form表单:frm</div><div>  * frame框架:fra</div><div>  * hidden表单项:hdn</div><div>  * div标记:div</div><div>  * span标记:span</div><div>  * 对话框对象:dlg</div><div>  * 窗口对象:win</div><div>  2.4 函数以及子过程命名规范</div><div>  * 函数命名必须使用动词+名词对的方式,并且能够体现函数的功能</div><div>  * 函数命名的动词前缀必须是同函数功能相关的完整动词</div><div>  * 函数命名第一个单词的首字母小写,后面每一个单词的首字母大写</div><div>  第三章 动态文件编码规范</div><div>  1. HTML书写规范</div><div>    HTML书写规范必须符合静态文件HTML标记书写规范,参考(第二章第一节)</div><div>  2. 客户端脚本规范</div><div>    动态文件客户端脚本一律采用Javascript书写,并必须符合静态文件编码规范中有关Javascript编码规范的规定(参考第二章第二节)</div><div>  3. 服务器端脚本书写规范</div><div>    服务器端脚本书写采用VBscript书写</div><div>  3.1 命名规范</div><div>  3.1.1 VBscript脚本变量命名规范</div><div>  * 常量以及全局变量必须全部使用大写字母</div><div>  * 常量必须使用CONST_前缀</div><div>  * 全局变量必须使用G_前缀</div><div>  * 变量名首字母必须小写。</div><div>  * 变量名必须使用其类型的所写字符串开始。各种类型的所写字符串如下:</div><div>  * 整型变量:int</div><div>  * 长整型变量:lng</div><div>  * 浮点型变量:flt</div><div>  * 双精度变量:dbl</div><div>  * 对象引用变量:obj</div><div>  * 字符串变量:str</div><div>  * Date类型变量:dtm</div><div>  * 变量名必须采用有意义的单词命名,如:</div><div>  strUserName、lngArrayIndex</div><div>  * 变量名除首字母小写外,其他单词首字符必须大写</div><div>  * 如果变量名过长可以使用单词缩写,除了被广泛了解的单词缩写以外,所有使用单词所写的变量名必须在定义时给出注释,如:</div><div>  dim strAdName ‘用于表示Administrator帐户的名称</div><div>  dim strAdminName ‘不用给出注释,Admin被广泛了解</div><div>    </div><div>  3.1.2 对象命名规范</div><div>  各种对象如Connection、Recordset、Command在命名时必须使用以下对应前缀:</div><div>  * Connection对象:conn</div><div>  * Recordset对象:rs</div><div>  * Command对象:cmd</div><div>  * Parameter对象:param</div><div>  * Field对象:fld</div><div>  * Error对象:err</div><div>  3.1.3 函数以及子过程命名规范</div><div>  * 函数命名必须使用动词+名词对的方式,并且能够体现函数的功能</div><div>  * 函数命名的动词前缀必须是同函数功能相关的完整动词</div><div>  * 函数命名第一个单词的首字母大写,后面每一个单词的首字母大写</div><div>  3.1.4 常用变量命名规范:</div><div>    说明:包含在[>中的部分为可省略部分</div><div>  * Connection对象:conn[Name>。Name为所连接数据库的服务器名字</div><div>  * Recordset变量命名规范:rs[Name>。Name为自定义的同rs存储内容有关的英文单词组合</div><div>  * Command对象:cmd[Name>。Name为自定义的同command目的有关的英文单词组合</div><div>  * SQL语句字符串变量:strSql[CommandName>。CommandName为自定义的同Sql语句功能相关的英文单词组合,如:</div><div>  strSqlUpdateModify</div><div>  strSqlInsertUser</div><div>  3.2 代码书写规范</div><div>  3.2.1 变量明确声明原则</div><div>  * 所有ASP程序文件,必须在代码的第一行包含<%option explicit%>。转为变量明确声明模式</div><div>  3.2.2 字符集设定原则</div><div>  * 所有将对客户端产生中文输出的ASP程序文件,必须在输出前设定Charset为”GB2312”.如:Response.Charset = “GB2312”</div><div>  3.2.3 函数使用原则</div><div>  * 尽量使用函数封装代码块</div><div>  * 连续代码块尽量不要超过50行。最多不得超过70行</div><div>  * 尽量使用局部变量。</div><div>  * 如有涉及到全局的资源,如Connection,尽量作为函数的参数传入</div><div>  * 所有在函数内部创建打开的资源,在退出函数前必须关闭释放。如:Recordset,Command</div><div>  3.2.4 Request、Session、Application使用规范</div><div>  * 所有需要放入Session、Application中的对象,必须采用有意义的英文名字。除了被广泛了解的单词缩写以外,不得采用单词缩写。如:</div><div>  Session(“cp”) = strCurrentUserIP ‘不允许</div><div>  Session(“CurrentUserIP”) = strCurrentUserIP</div><div>  Session(“Pwd”) = strPwd ‘允许,Pwd被广泛了解为密码</div><div>  * 所有需要在代码内用到的Request、Session、Application中的元素,必须在代码头部赋值给代码内声明的变量。</div><div>  * 如果获得Form中提交的内容,必须使用Request.Form(“itemName”).</div><div>  * 如果获得QueryString中提交的内容,必须使用Request.QueryString(“itemName”)</div><div>  * 不得在代码中出现Request(“”)这样的引用方式</div><div>  3.2.5 HTML同服务器端脚本混合使用原则</div><div>  * 服务器端脚本标记“<%”必须同其上一行紧邻的标记左对齐,如:</div><div>  <table></div><div>  <% </div><div>  do while not rs.eof </div><div>  %></div><div>   <tr></div><div>   <td>text</td></div><div>   </tr></div><div>  <%</div><div>   rs.movenext</div><div>   loop</div><div>  %></div><div>  </table></div><div>  * 服务器端脚本标记“<%”同其后的代码不得在同一行书写</div><div>  * “%>”同其前面的代码不得在同一行书写</div><div>  * 服务器端脚本标记”%>”同其最近的”<%”标记对齐</div><div>  * 服务器端内部的HTML代码依据静态文件的HTML缩进规则编写,不遵循服务器端脚本缩进规则</div><div>  * HTML标记内部的代码,依据服务器端脚本的缩进规则,不遵循HTML代码缩进规则</div><div><br></div><div>第四章 常见错误</div><div>  1. ADO的事务处理</div><div>  1.1 错误代码:80004005。</div><div>  1.1.1 错误描述:</div><div>    Microsoft OLE DB Provider for ODBC Drivers 错误 '80004005' </div><div>    不能在 firehose 方式下启动事务 </div><div>  1.1.2 解决方法:</div><div>    在开始ADO的事务的时候,必须首先关闭使用同一个连接对象打开的记录集,或者在打开那些游标集之前,设置游标集位置类型为adUseClient.(使用客户端游标集)</div><div>    </div><div>  第五章 代码习惯书写示例</div><div>  1. ADO对象的使用</div><div>  1.1 ADODB.Connection对象</div><div>  1.2 ADODB.Command对象</div><div>  1.3 ADODB.Recordset对象</div><div>  1.3.1 创建:</div><div>    Set rs = Server.CreateObject(“ADODB.Recordset”)</div><div>    rs.CursorLocation = adUseClient</div><div>    rs.Open strSql,conn,1[,1> ‘必须指定游标类型 </div><div>文章出处:DIY部落(http://www.diybl.com/course/4_webprogram/asp.net/netjs/20090318/163080.html)</div> <div></div> <p class="translate"> 来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/12639172/viewspace-616551/,如需转载,请注明出处,否则将追究法律责任。 </p> </div> </div> <div class="preview-footer clearfix"> <!--已点赞、收藏--> <div class="icon-praise" id="praise" onclick="blogObj.praise($(this),'/praise/')"><span class="text"></span><span class="num">0</span></div> <div class="icon-collect" id="collect" onclick="blogObj.praise($(this),'/favour/')"><span class="text"></span><span class="num">0</span></div> <div class="share-group fr"> <div class="bdsharebuttonbox bdshare-button-style0-16" data-bd-bind="1522216707615"> <span class="fl">分享到:</span> <a href="javascript:;" class="bds_tsina" data-cmd="tsina" title="分享到新浪微博"></a> <a href="javascript:;" class="bds_sqq" data-cmd="sqq" title="分享到QQ好友"></a> <a href="javascript:;" class="bds_qzone" data-cmd="qzone" title="分享到QQ空间"></a> <a href="javascript:;" class="bds_weixin" data-cmd="weixin" title="分享到微信"></a> </div> <script> window._bd_share_config = { "common": { "bdSnsKey": {}, "bdText": "", "bdDesc": "", "bdMini": "", "bdMiniList": false, "bdPic": "", "bdStyle": "0", "bdSize": "32" }, "share": {"bdSize": 16} }; with (document) 0[(getElementsByTagName('head')[0] || body).appendChild(createElement('script')).src = 'http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion=' + ~(-new Date() / 36e5)]; if ($(window).width() < 1320) { if ($(window).width() < 1200) { $(".sideslip").css({ "left": "20px", "margin-left": 0 }) } else { $(".sideslip").css({ "margin-left": "-590px" }) } }</script> </div> </div> <div class="article-context"> <div class="fl"> <span class="color77">上一篇:</span> <a href="http://blog.itpub.net/12639172/viewspace-616550/">让IE8自动使用兼容模式显示网页的方法</a> </div> <div class="fr"> <span class="color77">下一篇:</span> <a href="http://blog.itpub.net/12639172/viewspace-616552/">ASP.NET网络编程中经常用到的27个函数集</a> </div> </div> <input type="hidden" id="blogId" value="616551"> <!--评论开始--> <div class="blog-comment"> <div class="new-comment"> <input type="hidden" id="hid" name="hid" value="616551"> <input type="hidden" name="_token" value="tBJoa8ipzJUEAzONL89zXueNxCAgUKIRvF4K8T44"> <a class="avatar" href="javascript:;"> <img src="http://blog.itpub.net/images/user_pic_default.png"></a> <!--用户未登录--> <div class="sign-container"> <span>请登录后发表评论</span> <a class="btn btn-sign"> <a class="layui-btn ml30" onclick="blog.login(event)">登录</a> </a> </div> <!--用户已登录--> <textarea placeholder="请写下你的评论…" onfocus="blogObj.textareaFocus($(this),200)" maxlength=200></textarea> </div> <div class="comment-list"> <div class="top-title"><span class="all-comment">全部评论</span> <span class="colorbb ml20"></span> </div> <div class="comment-items" id="comment_items"> <script type="text/template" id='blog_template'> <%for(var i=0;i <items.length;i++){%> <div class="comment-item"> <div class="author"> <a target="_blank" href="/<%=items[i].uid%>" class="avatar"> <img src="<%=items[i].headimg%>" alt=""> </a> <div class="info"> <div class="name"><a target="_blank" href="/<%=items[i].uid%>"><%=items[i].username%></a> <span class="fr reply-btn" onclick="blogObj.newComment($(this),'<%=items[i].username%>',<%=items[i].id%>)">回复</span></div> <div class="time colorbb"><%=items[i].createtime%></div> </div> </div> <p class="comment-wrap"><%=items[i].content%></p> <%if(items[i].items.items.length) { %> <div class="sub-comment-list"> <%for(var j=0;j<items[i].items.items.length;j++){%> <div class="sub-comment"> <div class="color77 time-reply"> <span class="time"><%=items[i].items.items[j].createtime%></span> <span class="reply-btn fr" onclick="blogObj.newComment($(this),'<%=items[i].items.items[j].username%>',<%=items[i].items.items[j].id%>)">回复</span> </div> <p><a href="/<%=items[i].uid%>"><%=items[i].items.items[j].username%></a>   回复   <a href="/<%=items[i].touid%>"><%=items[i].items.items[j].tousername%></a>: <span class="content"><%=items[i].items.items[j].content%></span></p> </div> <%}%> <%if(items[i].items.total > 5) { %> <div class="more-comment"><span class="sub-comment-count">还有<i class="count"><%=items[i].items.total-5%></i>条评论</span><span class="more-comment-btn" onclick=blogObj.loadSubComment($(this),<%=items[i].id%>) data-count=1 data-flag=true>点击查看</span></div> <%}%> </div> <%}%> </div> <%}%> </script> </div> </div> </div> <!--评论结束--> </div> <script> </script> <div class="fr w290"> <!--作者信息开始--> <!--作者信息开始--> <div class="author-info right-fixed "> <div class="head-img"> <a href="http://blog.itpub.net/12639172/"><img src="http://account.itpub.net/api/avatar.php?uid=12639172" alt=""></a> </div> <div class="author-name"><a href="http://blog.itpub.net/12639172/">iDotNetSpace</a></div> <div class="author-intro"> </div> <p class="register-time"><span class="color77">注册时间:</span>2008-01-04</p> <ul class="tree-list clearfix"> <li> <div class="item-tt">博文量</div> <a href="http://blog.itpub.net/12639172/"><span class="item-num blognum">2376</span></a> </li> <li> <div class="item-tt">访问量</div> <div class="item-num blogviewnum">5297914</div> </li> </ul> </div> <!--作者信息结束--> <script> var data = {uid: 12639172}; $._ajax({ url: '/getAuthorInfo/', data: data, type: 'get', dataType: 'json', success: function (data) { if (data.code == 200) { var data = data.data; $(".blognum").text(data.blognum); $(".blogviewnum").text(data.visitednum); } } }); </script> <!--作者信息结束--> <!--博文推荐开始--> <div class="blog-choice right-fixed"> <h3 class="choice-title">最新文章</h3> <ul class="newul"> <li class="new-item"> <a href="http://blog.itpub.net/12639172/viewspace-683059/" class="clearfix"> ASP.NET入门五步详解 </a> </li> <li class="new-item"> <a href="http://blog.itpub.net/12639172/viewspace-683057/" class="clearfix"> ASP.NET配置错误页面浅析 </a> </li> <li class="new-item"> <a href="http://blog.itpub.net/12639172/viewspace-683056/" class="clearfix"> 介绍ASP.NET控件ID </a> </li> <li class="new-item"> <a href="http://blog.itpub.net/12639172/viewspace-683055/" class="clearfix"> ASP.NET中批量删除--只调用一次存储过程 </a> </li> <li class="new-item"> <a href="http://blog.itpub.net/12639172/viewspace-683054/" class="clearfix"> C#后台调用前台javascript的五种方法 </a> </li> <li class="new-item"> <a href="http://blog.itpub.net/12639172/viewspace-683051/" class="clearfix"> 学习ASP.NET的流程 </a> </li> <li class="new-item"> <a href="http://blog.itpub.net/12639172/viewspace-683050/" class="clearfix"> 详解ASP.NET页面的aspx扩展 </a> </li> <li class="new-item"> <a href="http://blog.itpub.net/12639172/viewspace-683049/" class="clearfix"> asp.net中GridView导出数据 </a> </li> <li class="new-item"> <a href="http://blog.itpub.net/12639172/viewspace-683048/" class="clearfix"> ASP.NET中获取URL重写前的原始地址 </a> </li> <li class="new-item"> <a href="http://blog.itpub.net/12639172/viewspace-682721/" class="clearfix"> C#常用线程同步方法应用场景和实现原理 </a> </li> <ul> </div> <!--大牛精选结束--> </div> </div> <div class="icon-back-top" onclick="$('html,body').animate({scrollTop:0},'slow');"></div> <!--main部分结束--> <!--百度推送--> <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> <!--2019-04-25 23:50:34--> <!--footer部分开始--> <div class="blog-footer"> <div class="w1200 pr"> <div class="footer-links"> <a class="icon-blog icon-wx mr30"> <div class="wx-qrcode"> <img src="http://edu.itpub.net/images/qrcode.jpg" alt=""> </div> </a> <a href="https://weibo.com/itpub2001?from=myfollow_all" class="icon-blog icon-wb" target="_blank"></a> </div> <p class="footer-nav"> <a href="http://www.it168.com/bottomfile/it168.shtml" target="_blank">支持我们</a> <a href="http://www.it168.com/bottomfile/tgzn.shtml" target="_blank">作者招募</a> <a href="http://www.it168.com/bottomfile/sytk.shtml" target="_blank">用户协议</a> <a href="http://blog.itpub.net/31509949/viewspace-2157750/" target="_blank">FAQ</a> <a href="http://edu.itpub.net/contactus.html" target="_blank">Contact Us</a> <script src="https://s22.cnzz.com/z_stat.php?id=1274521965&web_id=1274521965" language="JavaScript"></script> </p> <p>北京盛拓优讯信息技术有限公司. 版权所有  <a style="color:#777777;" target="_blank" href="http://www.miitbeian.gov.cn">京ICP备09055130号-4</a>  北京市公安局海淀分局网监中心备案编号:11010802021510</p> <p>广播电视节目制作经营许可证(京) 字第1234号 中国互联网协会会员</p> </div> </div> <!--footer部分结束--> <script> var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?5016281862f595e78ffa42f085ea0f49"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })(); </script> <!-- END STAT PV --> </body> </html>