开发者论坛

 找回密码
 注册 (请使用非IE浏览器)
查看: 4164|回复: 1

[教程] (学习笔记)编写高质量代码改善建议-1.基础语言要素

[复制链接]

0

精华

730

贡献

2919

赞扬

正版授权组

Rank: 14Rank: 14Rank: 14Rank: 14

帖子
413
软币
15859
在线时间
2986 小时
注册时间
2013-6-8

饮水勋章神经正常武林秘籍

发表于 2013-7-4 09:25:36 | 显示全部楼层 |阅读模式
本帖最后由 ssjun 于 2013-7-4 09:26 编辑

1. 正确操作字符串
    a.确保尽量少的装箱,避免分配额外的内存空间
b.不要使用+
c.使用StringBuilder类型,或使用string.Format方法
2. 使用默认转型方法
a.使用类型的转换运算符 string a=”4”;int b=(int)a;
b.使用类型内置的Parse,TryParse,或者如Tostring,ToDouble,ToDateTime等方法
c.使用帮助类提供的方法,如System.Convert类,System.BitConverter类来进行转换
d.使用CLR支持的转型,就是基类和子类之间的转换
3. 区别对待强制转型与as is
    a.强制转型用as 操作符,但它不能操作基元类型。如果涉及到基元类型,请需要通过 is转型前的类型来进行判断,以避免转型失败
4. TryParseParse
   a.Parse转化会引发异常,造成性能损失,
b.TryParse不会引发异常,它会返回false.同时将result置为0。建议使用TryParse方法
5. 使用int?来确保值类型也可以为null
   a.最大好处就是将可空类型的值赋值给对应的基元类型进行简化
  b.int j=i ?? 0 表示如i有值为true,则将i的值赋值给j,否则给j赋值为0
6. 区别readonlyconst的使用方法
  a.const是一个编译期常量,readonly是一个运行时常量
  b.const只能修饰基元类型,枚举类型,字符串类型,readonly没有限制
7. 0值作为枚举的默认值
8. 避免给枚举类型的元素提供显示的值
9. 习惯重载运算符
  a.重载运算符+
10. 创建对象时需要考虑是否实现比较器
  a.创建数据类时,如需要排序,可以使用IComparable接口,它会实现排序功能
11. 区别对待==Equals
  a.==是用来判断值相等Equals是用来判断引用的类型是否相等
12. 重写Equals时也要重写GetHashCode
13. 为类型输出格式化字符串
  a.如类型会产生格式化字符串输入,可以继承接口IFormattable
14. 正确实现浅拷贝和深拷贝
15. 使用dynamic来简化反射实现

评分

参与人数 2贡献 +3 赞扬 +2 收起 理由
DaisyNet + 1 很给力
羽叶 + 3 + 1 赞一个

查看全部评分

回复

使用道具 举报

0

精华

5097

贡献

5311

赞扬

管理员

帖子
1154
软币
21035
在线时间
4325 小时
注册时间
2013-6-7

黄马甲

发表于 2013-7-4 09:39:12 | 显示全部楼层
很实用的技巧,赞一个~
回复

使用道具 举报

Archiver|手机版|小黑屋|开发者网 ( 苏ICP备08004430号-2 )
版权所有:南京韵文教育信息咨询有限公司

GMT+8, 2024-5-3 20:23

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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