仓酷云

标题: NET网页编程之关于C#代码标准的两点困惑 [打印本页]

作者: 冷月葬花魂    时间: 2015-1-16 14:28
标题: NET网页编程之关于C#代码标准的两点困惑
呵呵,那你就关注微软的招聘信息以及别人的招聘经验啊,还有也不一定去做技术的,你如果真的想去就多了解了解。(其实我的意思是说想到微软做技术是很不容易的。笔者明天被培训了C#代码标准,为了一致作风。个中我对照有贰言的两点以下:
1.范例实例的公有字段应接纳骆驼定名法(camelCasing),不该该有任何前缀,在利用时前边加"this.”;
2.要用FCL范例而不是C#的基元范例,比方要利用Int32取代int。
起首关于第一点,团体对照习气的做法是前边加下划线,说不上优劣,这两种写法在各类开源框架的源码中都见到过。因为VS默许其实不供应像Eclipse那样的对公有字段变色的功效,以是假如只是复杂的利用camelCasing的话会很难辨别哪些是公有字段,哪些是部分变量,以是才有了加this的请求。那末来做个对照:
publicvoidTest()
{
_age=DateTime.Now.Year-_birth.Year;
if(_birth>newDateTime(2000,1,1))
{
_name+="newcentury";
}
}

publicvoidTest2()
{
this.age=DateTime.Now.Year-this.birth.Year;
if(this.birth>newDateTime(2000,1,1))
{
this.name+="newcentury";
}
}
哪一个更能一眼看出个中的公有字段来?仿佛并没有分明的区分,相反政府部利用的字段对照多的时分,加下划线反而显得更混乱一点。
可是,this不是单为field而设置的,实例的属性,办法,事务都可使用,一旦我们习气了利用this:
publicvoidTest()
{
Prop1++;
_age=DateTime.Now.Year-_birth.Year;
Method1();
if(_birth>newDateTime(2000,1,1))
{
Prop2+="abcd";
_name+="newcentury";
}
Event1+=()=>{};
}

publicvoidTest2()
{
this.Prop1++;
this.age=DateTime.Now.Year-this.birth.Year;
this.Method1();
if(this.birth>newDateTime(2000,1,1))
{
this.Prop2+="abcd";
this.name+="newcentury";
}
this.Event1+=()=>{};
}
哪一个更能一眼看出个中的公有字段来?这个例子大概过火了一些,但足以表达我的意义。
另外一方面来讲,一旦我敲下了this.,因为VS的智能提醒,会呈现一年夜堆的提醒项让我脑壳启蒙,可是当我敲一个下划线以后,呈现的就只会是一切的公有字段了,洁净了很多。
m_的前缀也是一个不错的选择,并且这两种前缀当我们利用快速键天生属性的时分,VS城市伶俐地把前缀往失落,首字母年夜写,只显现我们想要的名字。
好吧假如这一条划定规矩我还能承受的话,第二个划定规矩就其实让我没法了解了。
要用FCL范例而不是C#的基元范例,比方要利用Int32取代int。
培训人并没有说分明为何要这么做,从《CLRviaC#》这本书中看出,作者也是激烈倡议利用FCL范例,他的来由大抵是:有些人对int暗示甚么有狐疑,以为在32位呆板上就代表Int32,在64位呆板上就代表Int64,假如我们间接利用Int32就不会有如许的困扰;long在良多言语中不是64位的,这让习气于这些言语的人看C#会有曲解;等等。
这些来由我都供认,但我以为不敷以压服我利用FCL范例,我的来由以下:
1.我熟悉的同事,95%都利用C#的基元范例来敲代码,假如一个划定规矩要让尽年夜多半人都变动本人的习气,那末它自己就分歧理,并且不成能实行得很顺遂。
2.VS的智能提醒都私自主意地利用C#基元范例而不是FCL范例,即便你用FCL范例编写了一个办法,在我们利用时呈现在智能提醒中的仍旧是基元范例。假如我看到一个办法前往long型,我很天然地会利用一个long往吸收它,假如前边写一个Int64吸收一个前往long的办法不以为别扭么?假如我是老手我是否是以为这仍是个隐式转型呢?
3.从习气下去说,我敲一个int比敲一个Int32快很多,也恬逸良多。我敲一个Int64更是疾苦非常,每次都要垂头往找6在哪。我按6最多的时分是玩魔兽的时分,可是玩魔兽和敲代码食指的地位纷歧样啊,我老是按到7啊。
4.我团体喜好蓝色,比谁人蓝不蓝绿不绿的悦目多了,这个地道是吐槽。
关于一致编码标准我是举双手赞成的,特别在交代事情对照频仍的时分,看着林林总总别致的定名法老是让民气里抓狂。程序员都多几少有一些洁癖吧,看到不切合本人作风的就想往改。我不是做决意的人,但我老是但愿一团体在替良多人做决意时仍是普遍收罗下定见对照好,不要容易地把本人的习气强加给他人,除非你有充分的来由压服我。关于一个酷爱这项职业的程序员来讲,能舒恬逸服地敲代码是一种幸运,可是从命下级的布置,为年夜局着想又是我的任务,如果能舒恬逸服地完成任务该多好。
一个很大的类库。应用程序之所以难以跨平台,在于直接调用了特定平台的接口,而一个巨大的类库,就能极大地减少应用程序对平台的依赖。
作者: 若相依    时间: 2015-1-18 14:44
Asp.net:首先来说,Asp.net和Asp没什么关系,看着像是升级版本什么的,其实没什么联系。Asp是脚本编程,用的是ASP语言,而ASP.net用的是C#语言,完全不同的工具。
作者: 仓酷云    时间: 2015-1-26 15:51
同时也感谢博客园给我们这个平台,也感谢博客园的编辑们做成专题引来这么多高人指点。
作者: 兰色精灵    时间: 2015-2-10 07:29
是目前ASP在UNIX/Linux上的应用可以说几乎为0)。所以平台的局限性和ASP自身的安全性限制了ASP的广泛应用。
作者: 谁可相欹    时间: 2015-3-1 04:10
ASP.net的速度是ASP不能比拟的。ASP.net是编译语言,所以,当第一次加载的时候,它会把所有的程序进行编译(其中包括worker进程,还有对语法进行编译,形成一个程序集),当程序编译后,执行速度几乎为0。
作者: 莫相离    时间: 2015-3-10 12:49
在一个项目中谁敢保证每天几千万甚至几亿条的数据不丢失?谁敢保证应用的高可靠性?有可以借签的项目吗?
作者: admin    时间: 2015-3-17 07:38
现在主流的网站开发语言无外乎asp、php、asp.net、jsp等。
作者: 小女巫    时间: 2015-3-24 02:58
碰到复杂点的问题都不知道能不能解决,现在有点实力的公司都选择自已在开源的基础上做开发。但没听说过有人在IIS上做改进的,windows、sqlserver集群方面的应用也很少见。




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2