RSS 2.0 Feed
Microhelper.Net
摘要:代码组织 http://blog.joycode.com/microhelper/posts/19661.aspx 基本命名约定 http://blog.joycode.com/microhelper/posts/19663.aspx 最佳实践:string对象 http://blog.joycode.com/microhelper/posts/19665.aspx 待续.........[阅读全文]

posted @ | Feedback (0) |

摘要:基本说明   string是不可变得对象。 所以字符串连接操作并不更改当前字符串,只是创建并返回新的字符串,速度慢。 所以string有独特的Intern/IsInterned方法   对字符串运算前要检查字符串是否为null null意味着字符串没有赋值,没有分配内存。   检查一个字符串是否为空字符串 使用Length来检查一个字符串是否为空。   计算Length时,只需要检查内部数组的长度,不需要字节比较。   字符串连接 频繁进行字符串连接操作时,使用StringBuilder类来改善性能,连接操作越频繁,差别越明显。 StringBuilder 具有多个构造函数,可以从字符串初始化对象并设置其容量和最大容量。(默认的最大容量约为 20 亿个字符)对象的容量可以根据需要调高,只要不超过最大容量即可。构造 StringBuilder 之后,就不能再调整其最大容量。 频繁进行字符串连接操作用时用StringBuilder速度快是指如下形式。 private void TestA() {     string test = "";     for(int i=0; i < 100000; i++){test = test + "Test";} }   private void TestB() {     StringBuilder sb = new StringBuilder();     for(int i=0; i < 100000; i++){sb.Append("Test");} } TestB >> TestA   不是指如下形式 private void TestC() {     for(int i=0; i < 100000; i++){         StringBuilder sb = new StringBuilder(); sb.Append("A"); sb.Append("B") ;         sb.Append("C") ;         } } private static void TestD() {     for(int i=0; i < 100000; i++)     {         string test; test = "A" + "B" + "C";     } }   TestD > TestC   比较字符串 String.Equals方法来比较两个字符串   空字符串 用String.Empty表示空字符串,不要用””。String.Empty的定义为public static readonly string Empty,编译时会转化成””,但是String.Empty是一个常数,””是一个字符串对象,对字符串对象进行运算总是很慢的。   Unicode表示字符串 \U + 字符串的unicode编码,比如\U0066b   Clone字符串 因为字符串是不可改变的,所以具有相同值的两个单独字符串并没有多大意义。所以,虽然 String 实现了 IClonable,但 String.Clone 只返回对相同字符串的引用,而不进行克隆。 使用静态方法 Copy可以创建字符串的副本 字符串转换 string实现了IConvertible,但是没有办法从外部访问IConvertible定义的Toxxx函数,(声明为private)但是需要用Convert 类中的 To... 方法将字符串转换为其他内置值类型 字符串比较 值比较 string是对象,但是string重载了==运算符,所以==运算符实际调用 String.Equals 如果您希望使用......[阅读全文]

posted @ | Feedback (8) |

摘要:基本命名约定   说明: Pascal:每个单词首字母大写。 Camel:第一个单词首字母小写,余下的单词首字母大写。 缩写:两个字母的缩写,Pascal命名法两个字母都大写,Camel命名法,如果两个缩写字母是首单词,两个字母都小写,否则按照常规来处理。两个以上字母的缩写都按照常规处理。   基本规则: 用Pascal或者Camel方式。 不要把变量的数据类型作为变量名称的前缀或者后缀(GUI控件命名除外)。 不要滥用缩写,除非缩写形式为大家所公认。 不要定义依赖字母的大小写才能区别的名称。比如myValue和myvalue。属姓名和属性依赖的私有变量除外比如string MyValue {get {return myValue;}} 名称中不要使用下划线_(类的私有成员变量可以以下划线_作为前缀)。 名称中涉及数据类型时,使用CLR的标准类型名称。比如ToInt32,不要用Tolong。 不要把易混淆的数字和字母放在一起。比如 bool  b001 = (lo == l0) ? (I1 == 11) : (lOl != 101);   类: 用名词或者名词短语来命名类,结构。 不要在类名或结构名前加类似class之类的前缀或者后缀(特殊类型的类除外,比如Attribute类)。   Attribute类 Attribute类类名加Attribute后缀。   Exception类 Exception类类名加Exception后缀。   枚举 枚举名称不要加Enum前缀或者后缀。 枚举名用单数形式,不要用复数形式。   接口 接口名加I前缀。   事件,委派 如果delegate用来定义事件,加EventHandler后缀。 如果delegate用来定义callback方法,加Callback 后缀(实际的callback方法不要加Callback后缀)。 用动词命名事件,不要加Event后缀或者前缀 用ing和ed后缀来表示先后概念,不要用before,after,begin,end模式。 事件触发函数用加On前缀.   总结   Type Case Notes Example Class / Struct Pascal   HttpContext Interface Pascal 加前缀I IDataAdapter Enum values Pascal   CommandType Enum type Pascal   CommandType.Text Events Pascal   SelectedIndexChanged Exception Pascal 加后缀Exception ArgumentException public Fields Pascal   Int32.MaxValue Methods Pascal   ToString Namespace Pascal   System.Xml Property Pascal   BackColor Protected/private Fields Camel   myVariable Parameters Camel   cmdText  ...[阅读全文]

posted @ | Feedback (2) |

摘要:文件组织 -------------- 为每一个类建一个新文件,以类名作为文件名,不包含实际逻辑的类以及自动生成的类可以除外。 为每一个命名空间建一个新目录,目录名为命名空间的名字。 不要把第三方提供的代码与自己的代码混合在一起。 代码与其unit测试代码放在同一namesapce下面,同一文件里。   基本 --------------- 代码太长时,在逗号或者运算符后换行,换行时不要打乱运算的逻辑,新行与上一行的被断开的表达式对齐。 缩进用tab,避免用空格。 保持代码排版清晰。 if-else;for/foreach ;while/do-while;switch;try-catch等按照visual studio IDE的默认风格。 逻辑独立的代码块之间用空行分割。 一行代码中,逗号、分号等分隔符后面应该加空格改善可读性,运算符,冒号应该前后都加空格或者都不加。 一元运算符以及自增,自减,[],()与运算数之间不要加空格 用#region #endregion将类的成员分组。 从函数返回一个值不要用括号。   注释 ----------------- 注释应该与被注释的代码处于相同的缩进级别,并且位于代码的前一行。 一般来说,注释不应该多于代码,如果需要大块的注释,使用c#的标准格式 ///,不要使用//-------------------之类的格式。 对于类,方法,接口的注释使用C#标准的xml格式 (Documentation Comments)   xml标示说明:   <summary>说明 <remarks>附加信息,比如前提条件 <param> 函数参数 <returns>函数返回值 <exception>可能抛出的异常 <value>属性方法可以接受的值的类型或者函数返回值的类型 <example>示例 <seealso>相关的其他成员 <overloads>重载列表(位于重载列表中的第一个函数前) <see> <paramref> <code> <c> <para> <list> <b> <i>   变量,类,接口,函数 ---------------------------------------------------------------- 每行定义一个变量,尽量在定义变量时赋初始值 类的私有变量以及公共变量定义在类的开始,先定义私有变量,再定义公共变量。...[阅读全文]

posted @ | Feedback (1) |