【转】编写高质量代码改善C#程序的157个建议——建议64:为循环增加Tester-Doer模式而不是将try-catch置于循环内...
建议64:为循环增加Tester-Doer模式而不是将try-catch置于循环内
如果需要在循环中引发异常,你需要特别注意,应为抛出异常是一个相当影响性能的过程。应该尽量在循环当中对异常发生的一些条件进行判断,然后根据条件进行处理。
做个测试:
Stopwatch watch = Stopwatch.StartNew();int x = 0;for (int i = 0; i < 10000; i++){try{int j = i / x;}catch{}}Console.WriteLine(watch.ElapsedMilliseconds);watch = Stopwatch.StartNew();for (int i = 0; i < 10000; i++){if (x == 0){continue;}int j = i / x;}Console.WriteLine(watch.ElapsedMilliseconds);Console.ReadKey();
输出为:
796
0
以上代码中,我们预见了代码肯能会发生DivideByZeroException异常,于是,调正策略,对异常发生的条件进行了特殊处理:Continue让效率得到了极大的提升。
转自:《编写高质量代码改善C#程序的157个建议》陆敏技
转载于:https://www.cnblogs.com/farmer-y/p/7992813.html
【转】编写高质量代码改善C#程序的157个建议——建议64:为循环增加Tester-Doer模式而不是将try-catch置于循环内...相关推荐
- 编写高质量代码改善C#程序的157个建议——建议148:不重复代码
建议148:不重复代码 如果发现重复的代码,则意味着我们需要整顿一下,在继续前进. 重复的代码让我们的软件行为不一致.举例来说,如果存在两处相同的加密代码.结果在某一天,我们发现加密代码有个小Bug, ...
- 编写高质量代码改善C#程序的157个建议——建议86:Parallel中的异常处理
建议86:Parallel中的异常处理 建议85阐述了如何处理Task中的异常.由于Task的Start方法是异步启动的,所以我们需要额外的技术来完成异常处理.Parallel相对来说就要简单很多,因 ...
- 编写高质量代码改善C#程序的157个建议——建议87:区分WPF和WinForm的线程模型...
建议87:区分WPF和WinForm的线程模型 WPF和WinForm窗体应用程序都有一个要求,那就是UI元素(如Button.TextBox等)必须由创建它的那个线程进行更新.WinForm在这方面 ...
- 编写高质量代码改善C#程序的157个建议——建议127:用形容词组给接口命名
建议127:用形容词组给接口命名 接口规范的是"Can do",也就是说,它规范的是类型可以具有哪些行为.所以,接口的命名应该是一个形容词,如: IDisposable表示可以被释 ...
- 编写高质量代码改善C#程序的157个建议——建议133:用camelCasing命名私有字段和局部变量...
建议133:用camelCasing命名私有字段和局部变量 私有变量和局部变量只对本类型负责,它们在命名方式也采用和开放的属性及字段不同的方法.camelCasing很适合这类命名. camelCas ...
- 编写高质量代码改善C#程序的157个建议——建议104:用多态代替条件语句
建议104:用多态代替条件语句 假设要开发一个自动驾驶系统.在设计之初,此自动驾驶系统拥有一个驾驶系统命令的枚举类型: enum DriveCommand{Start,Stop} 当前该枚举存在两个命 ...
- 编写高质量代码改善C#程序的157个建议——建议157:从写第一个界面开始,就进行自动化测试...
建议157:从写第一个界面开始,就进行自动化测试 如果说单元测试是白盒测试,那么自动化测试就是黑盒测试.黑盒测试要求捕捉界面上的控件句柄,并对其进行编码,以达到模拟人工操作的目的.具体的自动化测试请学 ...
- 编写高质量代码改善C#程序的157个建议——建议130:以复数命名枚举类型,以单数命名枚举元素...
建议130:以复数命名枚举类型,以单数命名枚举元素 枚举类型应该具有负数形式,它表达的是将一组相关元素组合起来的语义.比如: enum Week{Monday,Tuesday,Wednesday,Th ...
- 编写高质量代码改善C#程序的157个建议——建议50:在Dispose模式中应区别对待托管资源和非托管资源...
建议50:在Dispose模式中应区别对待托管资源和非托管资源 真正资源释放代码的那个虚方法是带一个bool参数的,带这个参数,是因为我们在资源释放时要区别对待托管资源和非托管资源. 提供给调用者调用 ...
- 编写高质量代码改善C#程序的157个建议——建议9: 习惯重载运算符
建议9: 习惯重载运算符 在开发过程中,应该习惯于使用微软提供给我们的语法特性.我想每个人都喜欢看到这样的语法特性: int x = 1; int y = 2; int total = x + y; ...
最新文章
- 2498-R06 SFP与线缆的选择与配置
- 【PHP开发规范】继承与扩展:PSR-2 编码风格规范
- Django使用心得(四)
- P1262_美帝的间谍网络被我部捕获!
- C#:导入Excel通用类(CSV格式)
- 软考网络工程师--计算机硬件基础
- kafka 服务端消费者和生产者的配置
- r语言c5.0决策树算法参数,决策树算法CART、C5.0的R语言实现——(三)
- C++的三种封装层级
- vsan的容量设备故障和缓存设备故障分析
- 一个令你颤抖的flutter动画:Basic Animations
- Unity BMFont自定义字体
- 三极管三种基本放大电路
- MPLS LDP基础
- c语言中常量分为那两种,C语言中的常量和字面值
- Python爬虫(5):豆瓣读书练手爬虫
- android获取root权限的命令
- win7系统提示计算机内存不足,Win7系统下提示内存不足的原因及解决方法
- 可以挂靠的工程类证书汇总2014年
- vue上传文件到后端,前端接收到后端传来的图片并显示。
热门文章
- golang 实现华容道
- 密码学之对称加密体系(2):AES、SM4的 S 盒具体算法的实现
- 盘点国内程序员不常用的热门iOS第三方库:看完,还敢自称”精通iOS开发”吗?
- TensorRT加速应用
- 康熙王朝---转自别人的旁白分析
- 后端再进阶一步,MySQL 优化学习第1天
- [机器学习] --- 红楼梦后四十回到底是谁写的?机器学习分析法
- 月薪超1.6万美元!对冲基金实习生也内卷
- Legacy Code Tool
- AccountManager getAccount 在Android O 8.0版本中获取为 null ?