一.string非空验证
第二种方法加+“”是为了当str为null时的验证
二.bool返回值
if(i==1){ return true;}else{return false;}
i==1?true:false
运用三元符节省代码
三.习惯性加上后缀
抽象基类 | -Base |
接口 | I- |
异常 | -Exception |
事件参数 | -EventArgs |
事件委托 | -EventHandler |
特性 | -Attribute |
泛型类型参数 | T-
|
i, j, k | 循环变量(类型:System.Int32) |
o | System.Object |
s | System.String |
e | 事件实参(基类:System.EventArgs) |
ex | 异常(基类:System.Exception) |
g | System.Drawing.Graphics |
x, y, z | Lambda表达式的形参
|
工厂模式:-Factory
枚举:-Enum
bool类型命名要能体现bool特征 例如 IsDelete CanRemove
命名空间的命名:公司名.产品名.技术/模块名。将相互依赖的类型放在同一命名空间下。不要污染框架命名空间(例如在System命名空间中添加类型)。
不依赖运算符优先级 应加上括号:1+2*3 1+(2*3)
六.字符串相关
不分大小写的比较应当用string.Compare(str1, str2, true)而不是str1.ToUpper() == str2.ToUpper()。
大量拼接字符串要使用StringBuilder类。
考虑使用string.Format()方法而不是字符串拼接来输出结果。
七.使用查询表达式代替循环
points中点按到原点距离排序:var q=points.OrderBy(x=>x.DistTo(new Point(0,0)));
List<int> list 判断list中的数是否有大于100的(是否都大于100): list.Any(x=>x>100) list.All(x=>x>100)
八.返回多个参数
在Matlab中可以用矩阵返回多个值,这就是元组(Tuple)当函数需要返回多个值时,应当使用元组(Tuple)而不是输出参数(out ref同样避免使用)
九.小函数
将大函数分拆成小函数。这样做的好处有:
合并重复代码,便于维护
增加函数层级,便于调试
方法参数也不宜过多,否则也应考虑拆分。
十.充分利用BCL
- BCL中提供了很多常用算法,并且还在不断扩充。例如,.NET 4增加了System.Numerics命名空间,目前包括BigIntegar和Complex类,而在bcl.codeplex.com上已经放出了BigRational类的候选版和源代码。
- 尽可能只依赖BCL,减少第三方依赖。
- 对字符串的操作都有简单的方法可以调用。用这些方法不仅能更方便省时、稳定高效,而且能使你的代码趋向于可读性强的声明式风格。
- 尽可能只用系统定义的委托,而不是自己定义委托类型。系统定义的委托包括:各种泛型参数数目的Func, Action; 一个Predicate<T>;各种EventHandler。
- 使用虚函数和多态而不是频繁使用引用转换
- 创建枚举0值表示未初始化、无效、未指定或默认
- 总是在派生类构造函数的初始化列表中列出所有基构造函数
- 总是重写ToString()方法