|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
既然话题已经抄起,我打算今晚发篇博文再引导一下舆论方向,使它再火两天,抛砖引玉,而且赵劼先生一直在跟帖,使.NET阵营的我感到万分难得。功能优化.NET的功能
1)制止利用ArrayList。
由于任何工具增加到ArrayList都要封箱为System.Object范例,从ArrayList掏出数据时,要拆箱回实践的范例。倡议利用自界说的汇合范例取代ArrayList。.net2.0供应了一个新的范例,叫泛型,这是一个强范例,利用泛型汇合就能够制止了封箱和拆箱的产生,进步了功能。
2)利用HashTale取代其他字典汇合范例(如StringDictionary,NameValueCollection,HybridCollection),寄存大批数据的时分可使用HashTable.
3)为字符串容器声明常量,不要间接把字符封装在双引号""内里。
//制止
//
MyObjectobj=newMyObject();
obj.Status="ACTIVE";
//保举
conststringC_STATUS="ACTIVE";
MyObjectobj=newMyObject();
obj.Status=C_STATUS;
4)不要用UpperCase,Lowercase转换字符串举行对照,用String.Compare取代,它能够疏忽巨细写举行对照.
例:
conststringC_VALUE="COMPARE";
if(String.Compare(sVariable,C_VALUE,true)==0)
{
Console.Write("SAME");
}
5)用StringBuilder取代利用字符串联接符“+”,.
//制止
StringsXML="<parent>";
sXML+="<child>";
sXML+="Data";
sXML+="</child>";
sXML+="</parent>";
//保举
StringBuildersbXML=newStringBuilder();
sbXML.Append("<parent>");
sbXML.Append("<child>");
sbXML.Append("Data");
sbXML.Append("</child>");
sbXML.Append("</parent>");
6)IfyouareonlyreadingfromtheXMLobject,avoidusingXMLDocumentt,insteaduseXPathDocument,whichisreadonlyandsoimprovesperformance.
假如只是从XML工具读取数据,用只读的XPathDocument取代XMLDocument,能够进步功能
//制止
XmlDocumentxmld=newXmlDocument();
xmld.LoadXml(sXML);
txtName.Text=xmld.SelectSingleNode("/packet/child").InnerText;
.
//保举
XPathDocumentxmldContext=newXPathDocument(newStringReader(oContext.Value));
XPathNavigatorxnav=xmldContext.CreateNavigator();
XPathNodeIteratorxpNodeIter=xnav.Select("packet/child");
iCount=xpNodeIter.Count;
xpNodeIter=xnav.SelectDescendants(XPathNodeType.Element,false);
while(xpNodeIter.MoveNext())
{
sCurrValues+=xpNodeIter.Current.Value+"~";
}
7)制止在轮回体里声明变量,应当在轮回体外声明变量,在轮回体里初始化。
//制止
for(inti=0;i<10;i++)
{
SomeClassobjSC=newSomeClass();
.
.
.
}
//保举
SomeClassobjSC=null;
for(inti=0;i<10;i++)
{
objSC=newSomeClass();
.
.
.
}
8)捕捉指定的非常,不要利用通用的System.Exception.
//制止
try
{
<somelogic>
}
catch(Exceptionexc)
{
<Errorhandling>
}
//保举
try
{
<somelogic>
}
catch(System.NullReferenceExceptionexc)
{
<Errorhandling>
}
catch(System.ArgumentOutOfRangeExceptionexc)
{
<Errorhandling>
}
catch(System.InvalidCastExceptionexc)
{
<Errorhandling>
}
9)利用Try...catch...finally时,要在finally里开释占用的资本如毗连,文件流等
否则在Catch到毛病后占用的资本不克不及开释。
try
{
...
}
catch
{...}
finally
{
conntion.close()
}
10)制止利用递回挪用和嵌套轮回,利用他们会严峻影响功能,在不能不用的时分才利用。
11)利用得当的Caching战略来进步功能
好了明天就写到这里,今后有空再写。
我实在想不明白java的机制,为什么非要那么蛋疼,在同一个平台下重复编译。 |
|