仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1672|回复: 13
打印 上一主题 下一主题

[学习教程] ASP.NET网页编程之.NET代码计划复杂标准仓酷云

[复制链接]
萌萌妈妈 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:29:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
我也不知道,我原来理解的,NET就是C++编程,只是与net网页编程相对,呵呵。以为.ET就是高级C++编程。上面这个标准是我为伴侣写的几点倡议,写的很范,作为BLOG,愿与人人一同分享。只给出部分计划标准样例,关于.NET编程的具体标准、计划请参考相干书本。
1、定名标准
1.1定名空间定名,一样平常定名为”公司简称+产物称号+程序包”的情势,如ARSC.EngineMap.Geometry、SharpMap.Framework、SharpMap.Controls、GoogleMap.Downloader、GoogleMap.App等,其长度一样平常请求不克不及过于太长。程序集的称号能够和定名空间坚持一向。注重能够在分歧的.DLL内里界说不异的定名空间。
1.2变量定名,假如是部分变量、函数接口变量,次要以易于表达观点的英语举行定名。单词第一个字符必需小写,假如是组合单词,第二个单词应当年夜写,如firstName、computerName。
PublicvoidConcactName(stringfirstName,stringlastName);
关于成员变量必要界说以”_”开首,如:
PublicclassPerson
{
Privatestring_firstName;
Privatestring_lastName;
Privateint_age;
}
1.3类定名,类次要由名词性短语定名,类的第一个单词都是年夜写,做到见名知意,如Person、Computer、ExtensionManager、PrintManager、FormatTransform、HttpDownloader、TcpDownloader、CommandPool、XmlHelper、XmlUtility、ProductFinder、ProductRepository、CourseCatalog等。注重的是类定名不克不及加单数情势如Persons暗示人的汇合,准确定名应当为PersonCollection。
1.4接口定名,接口定名能够参考类定名划定规矩,可是其必要在定名前加”I”。如ICommandPool、IDownloader、IPrintManager、IProductFinder等。
1.5办法定名,次要以动名词短语组成,函数次要表达一种盘算功效大概义务,因而给函数取一个符合的名字十分主要,如CaculateArea、QueryProduct、CreateBar、ExportView、CanSeek、HasValue、HasChildern等。长称号函数一样平常用于公有函数中,如CopyProductsToRepositoryFromCache这个函数要比正文好的多。
1.6代办署理定名,如供应回调的代办署理必要加上CallBack后缀:
PublicdelegatevoidProgressNotificationCallBack(intcurPos,inttotalSize);供应事务原型的代办署理必要加上EventHandler后缀,如:
PublicdelegatevoidCurrentToolChangedEventHandler(objectsender,MapToolEventArgse);
1.7事务定名,次要是要可以见名知意,如
PubliceventCurrentToolChangedEventHandlerCurrentToolChanged;
PubliceventEventHandlerCurrentLayerChanged;
1.8属人命名,供应公有成员的会见把持如
PublicstringName
{
Get{return_name;}
Set
{
If(value==null)
ThrownewArgumentNullException(“Namecan’tbesetnull.”);
_name=value;
}
}
2、成员会见把持
成员会见把持次要由internal(在该DLL内能够会见)、protected(子类能够会见)、private(公有会见)、public(会见不受把持)和Protectedinternal(在其子类大概该DLL外部能够会见),我们将一切成员变量都计划成公有,假如必要公然该数据,必要供应属性。如:
PublicclassPerson
{
Privatestring_name;

PublicstringName
{
Get{return_name;}
Set{_name=value;}
}
}
3、XML代码正文
关于公然函数接口必需供应代码XML正文,便于构成开辟文档。公有函数可得当加以正文。具体请参考MSDN。
///<summary>
///命令池对象,次要用于命令按钮的注册和反注册。

///</summary>

///<remarks>

///每个命令池都和一个<seealsocref="ICommandBars"/>绑定在一同,

///假如想将按钮增加到<seealsocref="ICommandBars"/>上,起首必需在命令池中注册该按钮项目。

///</remarks>

publicinterfaceICommandPool

{

///<summary>

///猎取命令池中工具条项目。

///</summary>

///<paramname="uid">命令按钮全局独一标识符。</param>

///<returns>前往工具条项目。</returns>

ICommandItemGetCommandItem(GuidClassuid);


///<summary>

///猎取和设置使用程序钩子其为<seealsocref="Jackey.Framework.IApplication"/>。

///</summary>

objectHook{get;set;}


///<summary>

///猎取和设置COM对象钩子。该钩子只必要在COM使用程序中举行设置。

///</summary>

objectCOMHookObject{get;set;}


///<summary>

///猎取和设置命令按钮单击回调函数。

///</summary>

ButtonClickCallBackButtonClick{get;set;}


///<summary>

///使用指定全局独一标识符注册命令按钮。

///</summary>

///<paramname="cmd">命令对象。</param>

///<paramname="guid">命令按钮全局独一标识符。</param>

///<returns>前往工具条项目。</returns>

ICommandItemRegisterCommandItem(ICommandObjectcmd,GuidClassguid);


///<summary>

///使用指定全局独一标识符注册命令按钮。

///</summary>

///<paramname="cmd">命令对象。</param>

///<paramname="cmdType">工具条项目范例</param>

///<paramname="guid">命令按钮全局独一标识符。</param>

///<returns>前往工具条项目。</returns>

ICommandItemRegisterCommandItem(ICommandObjectcmd,CommandTypeEnumcmdType,GuidClassguid);


///<summary>

///从设置文件中注册一切已设置的命令按钮项目。

///</summary>

///<paramname="exeConfigPath">设置文件路径</param>

voidRegisterCommandItemFromConfiguration(stringexeConfigPath);


///<summary>

///刊出一切命令按钮。

///</summary>

voidUnRegisterAll();


///<summary>

///刊出指定全局独一标识符的命令项目。

///</summary>

///<paramname="cmdID">命令按钮全局独一标识符。</param>

voidUnRegisterCommandItem(GuidClasscmdID);


}


再如:

///<summary>

///从XML文件中提取工具条和按钮,静态天生体系菜单,菜单天生算法存储于菜单天生引导者类.

///</summary>

publicclassXmlCommandBuilder:ICommandBuilder

{

#regionprivateandprotectedmembers


privateICommandBarsiCmdBars;

privateList<ICommandBar>_cmdBarList;


///<summary>

///xmldocument.

///</summary>

protectedXmlDocument_document;


///<summary>

///toolbaritemcommandid.

///</summary>

protectedreadonlystaticstringCOMMAND_ITEM_GUID="commandid";


#endregion


///<summary>

///机关函数。

///</summary>

///<paramname="xmlConfigPath">工具条设置文件路径。</param>

///<paramname="cmdBars">工具条办理器接口。</param>

///<exceptioncref="System.ArgumentNullException">当xmlConfigPath为空抛出该非常。</exception>

///<exceptioncref="System.ArgumentNullException">当cmdBars为空抛出该非常。</exception>

publicXmlCommandBuilder(stringxmlConfigPath,ICommandBarscmdBars)

{

if(String.IsNullOrEmpty(xmlConfigPath))

thrownewArgumentNullException("xmlConfigPathcan"tbenullorempty.");


if(cmdBars==null)

thrownewArgumentNullException("cmdBarscan"tbenull.");


this.iCmdBars=cmdBars;

_document=newXmlDocument();

_document.Load(xmlConfigPath);

}

}



4、尺度形式计划

4.1尺度IDispoable形式计划

关于具有非托管资本,如文件指针、数据库毗连、套接字等必需完成尺度IDisposable形式。关于组合完成IDisposable的类也应当完成IDisposable形式。

上面是一个尺度完成IDisposable的类。


publicclassBaseClass:IDisposable

{

privateFileStream_readStream;

privateFileStream_writeStream;

protectedbool_disposed;


//假如该类没有非托管资本则正文该闭幕器函数,该函数的增加会从必定

//水平上毁伤程序功能。

~BaseClass()

{

this.Dispose(false);

}


//同意子类重写该函数。

protectedvirtualvoidDispose(booldisposing)

{

if(!_disposed)

{

if(disposing)

{

//这里开释托管资本


if(_readStream!=null)

_readStream.Dispose();


if(_writeStream!=null)

_writeStream.Dispose();

}


//这里开释非托管资本

//dosomethingreleaseunmanagedresources.


_disposed=true;

}

}


publicvoidDispose()

{

this.Dispose(true);

GC.SuppressFinalize(this);

}


}

publicclassDerivedClass:BaseClass

{

privateFileStream_myStream;


//假如该类没有非托管资本则正文该闭幕器函数,该函数的增加会从必定

//水平上毁伤程序功能。

~DerivedClass()

{

this.Dispose(false);

}


publicvoidReadNextChunk()

{

if(_disposed)

thrownewObjectDisposedException("objecthasbeendisposed.");


//dotherealthing.

}


protectedoverridevoidDispose(booldisposing)

{

if(!_disposed)

{

try

{

if(disposing)

{

//这里开释托管资本


if(_myStream!=null)

_myStream.Close();

}


//这里开释非托管资本

}

finally

{

base.Dispose(disposing);

}


//这句能够不加。

_disposed=true;

}

}

}


5、.Net开辟几点功能和计划成绩的倡议:

5.1制止在一个年夜的轮回内里实行装箱和拆箱操纵。办理举措是使用泛型如List<T>代替ArrayList。

ArrayListlist=newArrayList();

for(inti=0;i<10000;i++)

{

//装箱

list.Add(i);


//拆箱

Debug.WriteLine(list[i].ToString());

}

5.2关于庞大的事务交互的体系,在每一个类被闭幕前确保其已刊出一切事务。不然及易产生内存保守。这类情形在.Net和COM互操纵中常常呈现,如ArcObject的各类事务。

5.3关于工具类如WorkspaceHelper(封装AO的事情空间操纵的类)应当做到复杂和易于了解,不要把Helper和Utility类看成年夜杂烩,甚么办法都往内里放,这将招致代码十分难以修正。工具类的办法多数为静态办法,该类也为静态类。只管不要把类计划为静态类,一旦计划成静态类,将没法使用多态的上风。

来自:http://www.ckuyun.com/wobushixiaocai/archive/2008/04/17/1157722.html

其实net网页编程之所以在曾经独步天下,就是因为他的跨平台、安全性,这两方面,效率可不是net网页编程的强项,反而是他最短的一块挡板,虽然net总是用理论证明比.NET快。
莫相离 该用户已被删除
沙发
发表于 2015-1-20 06:01:45 | 只看该作者
ASP(ActiveServerPages)是Microsfot公司1996年11月推出的WEB应用程序开发技术,它既不是一种程序语言,也不是一种开发工具,而是一种技术框架,不须使用微软的产品就能编写它的代码。
第二个灵魂 该用户已被删除
板凳
发表于 2015-1-25 20:31:33 | 只看该作者
这也就是最近几年来随着各种新的后台技术的诞生,CGI应用在Internet上越来越少的原因。CGI方式不适合大访问量的应用。
分手快乐 该用户已被删除
地板
发表于 2015-2-5 12:24:22 | 只看该作者
以上是语言本身的弱点,在功能方面ASP同样存在问题,第一是功能太弱,一些底层操作只能通过组件来完成,在这点上是远远比不上PHP/JSP,其次就是缺乏完善的纠错/调试功能,这点上ASP/PHP/JSP差不多。
小妖女 该用户已被删除
5#
发表于 2015-2-6 03:46:32 | 只看该作者
大哥拜托,Java在95年就出来了,微软垄断个妹啊,服务器市场微软完全是后后来者,当年都是Unix的市场,现在被WindowsServer和Linux抢下大片,包括数据库也一样。
爱飞 该用户已被删除
6#
发表于 2015-2-8 05:27:40 | 只看该作者
ASP.net的速度是ASP不能比拟的。ASP.net是编译语言,所以,当第一次加载的时候,它会把所有的程序进行编译(其中包括worker进程,还有对语法进行编译,形成一个程序集),当程序编译后,执行速度几乎为0。
不帅 该用户已被删除
7#
发表于 2015-2-19 04:24:21 | 只看该作者
主流网站开发语言之CGI:CGI就是公共网关接口(CommonGatewayInterface)的缩写。它是最早被用来建立动态网站的后台技术。这种技术可以使用各种语言来编写后台程序,例如C,C++,Java,Pascal等。
灵魂腐蚀 该用户已被删除
8#
发表于 2015-2-25 09:14:23 | 只看该作者
ASP.NET可以无缝地与WYSIWYGHTML编辑器和其他编程工具(包括MicrosoftVisualStudio.NET)一起工作。这不仅使得Web开发更加方便,而且还能提供这些工具必须提供的所有优点,包括开发人员可以用来将服务器控件拖放到Web页的GUI和完全集成的调试支持。微软为ASP.net设计了这样一些策略:易于写出结构清晰的代码、代码易于重用和共享、可用编译类语言编写等等,目的是让程序员更容易开发出Web应用,满足计算向Web转移的战略需要。
只想知道 该用户已被删除
9#
发表于 2015-3-4 08:11:39 | 只看该作者
但是java靠开源打出的一片天地,特别是在微软的垄断下能打开今天的局面还是有它的生命力的。
再现理想 该用户已被删除
10#
发表于 2015-3-6 18:49:41 | 只看该作者
逐步缩小出错代码段的范围,最终确定错误代码的位置。
老尸 该用户已被删除
11#
发表于 2015-3-9 02:37:49 | 只看该作者
主流网站开发语言之JSP:JSP和Servlet要放在一起讲,是因为它们都是Sun公司的J2EE(Java2platformEnterpriseEdition)应用体系中的一部分。
因胸联盟 该用户已被删除
12#
发表于 2015-3-13 02:07:17 | 只看该作者
ASP是把代码交给VBScript解释器或Jscript解释器来解释,当然速度没有编译过的程序快了。
小魔女 该用户已被删除
13#
发表于 2015-3-20 09:28:38 | 只看该作者
提供基于组件、事件驱动的可编程网络表单,大大简化了编程。还可以用ASP.NET建立网络服务。
愤怒的大鸟 该用户已被删除
14#
发表于 2015-4-9 02:51:58 | 只看该作者
在调试JSP代码时,如果程序出错,JSP服务器会返回出错信息,并在浏览器中显示。这时,由于JSP是先被转换成Servlet后再运行的,所以,浏览器中所显示的代码出错的行数并不是JSP源代码的行数。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-4-25 13:53

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表