作为ASP.NET开发人员必须养成的编程习惯

news/2024/7/8 3:53:53

让我们的程序写得更加平易近人,更加生动对我们的编程是大有益处的。对我们的程序学习也能起到事半功倍的作用。编程过程中遵守的不成文的标准,对于我们和他人的交流和自己的再学习都是有益无害的。毕竟有时我们写的程序不是只给自己看的,也不是一时兴起,不管以后。 好的编码可使源代码的可读性强且意义清楚,与其他语言约定相一致,并且尽可能直观。

1.错误(以外)的处理

程序健壮性最基本要求就是程序错误的处理与捕捉,在ASP.NET中,错误的处理有和其他编程语言一样的机制,可以使用Try…Catch… Finally等方式,这一点和ASP相比具有较大的进步。而且,使用这些错误处理方法,可以大大提高程序的可读性和程序调试速度,在这几个优势结合的情况下,我们更加应该注意这一点。

2.字符串的处理

网页设计中,字符串的处理几乎是最常见的了。使用ASP.NET以后,字符串的处理比ASP的速度快,而且,在ASP.NET中,专门增加一个字符串处理类StringBulider,使用这个类可以完成一些常见的字符串操作,而最主要的,使用StringBuilder可以大大提高字符串处理速度。

在ASP.NET中,最常见的就是使用“&”来连接两个字符串:

Dim myOutputString As String = "My name is"
Dim myInputString As String = " Alex"
myOutputString = myOutputString & myInputString
Response.Write(myoutputString)

现在,我们来看看StringBuilder的使用,在使用StringBuilder的时候,我们对字符串可以做一些基本的操作,比如Append、Replace、Insert、Remove等,现在我们来看具体举例。

(1)StringBuilder中Append的使用

Append和其他语言的Append一样,就是在字符串最后增加其他字符。

http://www.CodeHighlighter.com/
-->Dim sb as StringBuilder = New StringBuilder()
sb.append( "







" )For i = 0 To RowCount - 1sb.Append("
")For k = 0 To ColCount - 1sb.Append("
")
sb.Append( dt.Rows(i).Item(k, DataRowVersion.Current).toString())
sb.Append( "
" )Nextsb.Append("
")Nextsb.Append( " ")
Dim strOutput as String = sb.ToString()
lblCompany.Text = strOutput

在以上的程序中,用Append方法实现了一个表格的输出,需要注意的一点是,StringBulider必须首先使用ToString()方法将其转化为String类型才可以直接输出。在以上的举例中,我们看到的全部是Append一个直接的字符串,其实,这个方法有一个很方便的功能,那就是可以直接 Append其他类型的变量,比如可以直接Appemd一个Integer类型的数值,当然,我们输出以后自动转化为一个字符串:

http://www.CodeHighlighter.com/
-->Sub Page_Load(Source As Object, E As EventArgs)
Dim sb As System.Text.StringBuilder
Dim varother As Integer
varother=9999
sb =new System.Text.StringBuilder()
sb.append("可以Append其他类型:")
sb.append(varother)
Response.write(sb.toString())
End Sub

(2)字符串中其他方法的使用

我们还可以使用其他方法,我们来看看常见的:

Insert方法,可以在指定位置插入其他字符,使用方法:Insert(插入位置,插入字符);

Remove方法,可以在指定位置删除指定字数字符,使用方法:Remove(其实位置,字符数);

Replace方法,可以替换指定字符,使用方法:replace(被替换字符串,替换字符串)

3.数据库链接Connection和DataReader的关闭

在使用ASP编程的时候,我们就已经知道,在使用数据库连接以后,一定要将连接关闭,然后设置为NoThing。在Asp.NET中,我们仍然需要这样使用,不过,在ASP.NET中,由于使用了ADO.NET,所以,在一些相关的处理方面,实际还是有一些细微的区别,而这些区别,往往也就是我们设计的时候最需要注意的。现在,我们通过举例,来看看在常见的ADO.NET操作中,需要注意哪些问题。

(1)举例一

Dim myConnection As SqlConnection = 
new SqlConnection(ConfigurationSettings.AppSettings("DSN_pubs"))
Dim myCommand As SqlCommand =
new SqlCommand("Select pub_id, pub_name From publishers", myConnection)
Dim myDataReader As SqlDataReader
Try
myConnection.Open()
myDataReader = myCommand.ExecuteReader(CommandBehavior.CloseConnection)
DropDownList1.DataSource = myDataReader
DropDownList1.DataBind()
Catch myException As Exception
Response.Write("An error has occurred: " & myException.ToString())
Finally
If Not myDataReader Is Nothing Then
///'关闭DataReader
myDataReader.Close()
End If
End Try

在以上的举例中,我们注意到,这里只关闭了DataReader,并没有关闭Connection。为什么呢?仔细观察以上的ExecuteReader方法,原来,设置了ExecuteReader参数,当执行完ExecuteReader以后,会自动关闭Connection。所以,这样设置以后,就没有必要再手动关闭Connection了。

(2)举例二

http://www.CodeHighlighter.com/
-->Dim myConnection As SqlConnection =
new SqlConnection(ConfigurationSettings.AppSettings("DSN_pubs"))
Dim myCommand As SqlCommand =
new SqlCommand("Select pub_id, pub_name From publishers", myConnection)
Try
myConnection.Open()
DropDownList1.DataSource = myCommand.ExecuteReader()
DropDownList1.DataBind()
Catch myException As Exception
Response.Write("An error has occurred: " & myException.ToString())
Finally
If Not myConnection Is Nothing AndAlso
((myConnection.State And ConnectionState.Open) = ConnectionState.Open) Then
myConnection.Close()
End If
End Try

在以上的举例中,我们发现,居然没有关闭DataReader。为什么呢?其实上面的代码中,没有直接生成DataReader对象,当然也就无从关闭了。需要注意一点的是,在关闭Connection之前,程序首先判断Connection是否已经打开,如果没有打开,也就没必要关闭了。

【编辑推荐】

  1. 白话详解ASP.NET的设计思想
  2. 简单理解ASP.NET MVC基本知识
  3. ASP.NET获得新浪天气预报几种方式总结

http://www.niftyadmin.cn/n/2644047.html

相关文章

不要让开源架构代替我们的设计

2019独角兽企业重金招聘Python工程师标准>>> 现在开源的各种framework非常的多。干什么的都有。但是,是不是我们使用了这些开源framework就能够一劳永逸的解决我们的设计问题呢?我觉得答案是否定的。如果没有自己对设计和系统的理解。框架滥用…

使用飞信带的.net虚拟机vmdotnet精减.net安装文件包 (非托管运行)

飞信中带的VMDotNet,也就是所谓的.NET FRAMEWORK虚拟机吧。相信有很多人也已经看过相关文章了,但是对于新手我还是再提一下,在你的飞信的安装目录下有一个VMDotNet文件夹,这 个就是我们要用的最主要的内容了,先把它COP…

安全域的划分

安全域概述•网络安全域是指同一系统内有相同的安全保护需求,相互信任,并具有相同的安全访问控制和边界控制策略的子网或网络,且相同的网络安全域共享一样的安全策略。广义可理解为具有相同业务要求和安全要求的IT系统要素的集合。网络安全域…

JAVA中list,set,数组之间的转换详解

JAVA的list,set,数组之间的转换,主要是使用Apache Jakarta Commons Collections,具体的方法如下:import org.apache.commons.collections.CollectionUtils; String[] strArray {"aaa", "bbb", "ccc"}; …

CuteEditor6.0使用配置心得体会

CuteEditor是一款功能非常强大,支持图片上传、文件下载和word类似的文字编辑器。并且Vs2003和Vs2005都可以适用。对于新闻发布系统和博客之类的系统,是非常的方便的。对一个刚接触这款编辑器的朋友来说或许会遇到和我一样的许多问题,现在我就…

rsync-服务器之间备份

需求:需要把A服务器上的某些数据定期备份到B服务器中A服务器:#yum install -y rsync#rpm -qa | grep rsync#vim /etc/xinetd.d/rsyncyes改成no ,开启 rsync#chkconfig rsync on #chkconfig --list rsync生成配置文件#vim /etc/rsyncd.…

基线的定义

基线(Baseline)说起. 基线是软件文档或源码(或其它产出物)的一个稳定版本,它是进一步开发的基础.所以,当基线形成后,项目负责SCM的人需要通知相关人员基线已经形成,并且哪儿可以找到这基线了的版本.这个过程可被认为内部的发布.至于对外的正式发布,更是应当从基线了的版本中发布…

经纬度编码转换

众所周知,包括LT在内的所有导航软件的地图,就是经纬度坐标的点的集合。然后,与GPS的经纬度信号匹配,才能应用成为导航。但是由于国家政策原因,LT不能直接用经纬度定位一个目标。为此,LT用了一种变通的方法&…