最近重构一套代码,运用以下几种方法,供参考。

1  公共方法尽可能的使用缓存

 public static List<string> GetRegisteredCompany(){String sql = "SELECT CompanyCode FROM dbo.Company WHERE Suspended='N' ORDER BY CompanyCode";DataTable table = SqlHelper.ExecuteDataset(BaseCommon.GetSystemConnectionStringBuilder().ConnectionString, sql).Tables[0];return (from item in table.AsEnumerable()select item.Field<string>("CompanyCode")).ToList();}

这个方法返回的值,可能会被多个地方用到。应该把这个方法的值缓存起来,供程序多次使用。

2  使用NArrange格式化代码,这个工具,可以将代码格式化,用region分隔开来。

NArrange 0.2.9.0
____________________________________________________________
Copyright (C) 2007-2009 James Nies and NArrange contributors.
All rights reserved.
http://www.NArrange.net

Zip functionality courtesy of ic#code (Mike Krueger, John Reilly).

经过格式化之后,如上图所示,被分成几个区域,看起来条理更清晰。

3  查找重复的代码,提取到公共方法库中。

关于查找程序中重复的代码,有如下工具可以检测重复的代码

1) Simian   http://www.harukizaemon.com/simian/

2)  Team City  http://www.jetbrains.com/teamcity/

3) Resharper plugin  AgentRalph  http://agentralphplugin.googlecode.com/

4)  DevExpress CodeRush

5)  Resharper  Find Similar Code 查找相似的代码

6) CCFinder

7)  Duplo  http://sourceforge.net/projects/duplo/

8) Visual Studio 2012

9) Clone Detective for Visual Studio   http://www.codeplex.com/CloneDetectiveVS

10) Atomiq    http://getatomiq.com

11)  NDepend  http://www.ndepend.com/

12)  CloneDR  http://www.semanticdesigns.com/Products/Clone

工具相当多,如果使用VS2012开发,已经内置此功能。

4 增加测试代码,测试各种情况下公共代码的功能是否正确。

[TestMethod]
public void EmpLicenseTestMethod(){DateTime expired=new DateTime(2013,12,1);string licensee = "Administrator";string company="Microsoft Corporation";string license=GenerateLicense(expired, licensee, company);//保存许可文件XmlDocument doc = new XmlDocument();doc.LoadXml(license);SaveFileDialog dlg = new SaveFileDialog();dlg.RestoreDirectory = true;dlg.Filter = "License file (*.lic)|*.lic|All files (*.*)|*.* ";if (dlg.ShowDialog() == DialogResult.OK){doc.Save(dlg.FileName);}
}
 

Visual Studio内置的Test工具与技术,再配合Resharper的工具,测试一个方法相当容易实现。

5  应用改善效率的代码替换不合适的代码,或是应用.NET框架的方法重写自定义的方法。

效率改善代码,如下举例

1  不要用string ax=”” 判断ax是否为空, ax.Length==0的效率高于ax==string.Emptyu 一般用as.IsNullorEmpty
2  对于不改变的变量,用常量代替
3  用Linq代替大量的foreach查询
4  MyType t=(MyType) t和t as MyType的效率比较,后者效率好,而且转换失败后不会抛出异常
5  List<T> 代替Array ,Haset<T> ,Dictionary<K,V> 代替Hashtable

.NET的内置的方法,string.Join可以将字符串数组连接成由一个分隔符号连接的一个字符串。比如

例如,如果 separator 为“,”且 value 的元素为“apple”、“orange”、“grape”和“pear”,则 Join(separator, value) 返回“apple, orange, grape, pear”。

如果 separator 为 nullNothingnullptrnull 引用(在 Visual Basic 中为 Nothing),则改用空字符串 (Empty)。

这个方法,我们常常自己实现。应该改用.NET内置的方法。

6  使用并行技术改善系统效率

Parallel.ForEach可以充分利用多核的,提供系统性能。对于一些不需要考虑对数据的前后顺序操作的地方,均可以用这个方法改善。比如删除临时文件。对于需要考虑操作顺序的数据,比如清空数据表数据,要先清除子表,再删除主表,否则会引起外键冲突。应当用lock锁定要删除的数据表,提取出数据后,再进行删除。

7  使用Linq和Lambda表达式改善系统的写法

对于只有几行的方法,可以用Lambda来替代。如果方法很通用,可以写成通用的方法。对DataTable的循环遍历操作,首选Linq技术,可减少出错的机率,也使代码简化。

8 字符串操作

简单的操作不改变,复杂的匹配与查找改用正则表达式,同时要考虑Encoding的问题。

9 公共方法的提取与扩展方法

static类型的公共方法如果过多,因为GC无法回收内存,会影响系统的效率。可以考虑用扩展方法替代,编译时直接被替换为原始类型的静态方法调用。一般添加扩展方法的类型为.NET系统类型,自定义的类型添加扩展方法很少。

10  尽量多的给方法注释

使用vsDocman工具,尽可能的为公共方法书写注释,添加用例

转载于:https://www.cnblogs.com/JamesLi2015/p/3140897.html

改善C#公共程序类库质量的10种方法相关推荐

  1. C 程序更有效率的 10 种方法

    转至:http://blog.chinaunix.net/space.php?uid=26495963&do=blog&id=3062636 任何代码的美丽不仅在于找到一个给定的问题的 ...

  2. 让你的C程序更有效率的10种方法

    PS:原文翻译的有些地方不太确切,尤其是对于第7点static的使用的翻译容易引起误解,故稍做调整,如有妥之处,还请谅解! 任何代码的美丽不仅在于找到一个给定的问题的解决方案,还在它的简单性,有效性, ...

  3. 提高C程序效率的10种方法

    任何代码的美丽不仅在于找到一个给定的问题的解决方案,但在它的简单性,有效性,紧凑性和效率(内存).设计的代码比实际执行更难 .因此,每一个程序员当用C语言开发时,都应该保持这些基本的东西在头脑中. 本 ...

  4. 迅速建立自信的10种方法

    原文作者:John Wesley 原文链接:10 Ways to Instantly Build Self Confidence 译者:ibidjh 迅速建立自信心的10种方法 自信与势不可挡的感觉以 ...

  5. 人工智能改进传统云ERP的10种方法

    http://blog.itpub.net/31542119/viewspace-2168809/ 随着数字化转型的进程加快,企业开始重新评估ERP的作用.传统ERP经过多年僵硬化定制过于追求生产的一 ...

  6. linux入门_Linux入门的10种方法

    linux入门 文章什么是Linux用户? 作者:安德森·席尔瓦(Anderson Silva)明确指出,如今,只要您对"使用Linux"的定义足够广泛,人们使用Linux(以某种 ...

  7. 让生气的顾客开心的 10 种方法

    让生气的顾客开心的 10 种方法 创造卓越的客户体验是每个现代企业努力的方向.提供愉悦并知道如何处理愤怒的客户是至关重要的,但这并不总是容易的.特别是在电子商务领域,由于购物者要求更好的在线体验,客户 ...

  8. 基础必备 | Python处理文件系统的10种方法

    作者 | Jeff Hale 译者 | 风车云马:责编 | Jane,Rachel 出品 | Python大本营(ID:pythonnews) [导读]在编写一些Python程序的时候,我们常常需要与 ...

  9. 盘点:保护企业数据安全的10种方法

    即便是大型企业也无法防止网络攻击导致的数据泄露,但有多种保护数据安全的方法. 许多公司谨慎处理敏感信息,包括客户个人信息.企业财务记录和账户,以及企业暂时不想泄露的绝密项目,保持数据的安全至关重要. ...

最新文章

  1. asp.net 创建文件夹时出错:未找到路径“D:\”的一部分。(asp.net 使用 FSO)
  2. 百分点集团被APAC CIO Outlook杂志评选为亚太区大数据企业25强
  3. 低代码这么火,它的人才认证你考了吗?
  4. 字符串对象的各种方法
  5. asp.net mvc 实现上传文件带进度条
  6. 模糊控制算法实例matlab程序
  7. 软件测试-xx银行面试经验过程详细版
  8. 年龄和血压对照表,有必要了解!
  9. python 时间模块判断上午还是下午_Python的时间模块小结(转自:不懂真人)
  10. 模拟人生畅玩版android,模拟人生畅玩版
  11. Largest Contentful Paint (LCP)
  12. 天猫爬虫--爬取天猫评论中的图片
  13. K.M.P算法个人浅谈
  14. avg制作工具 开源_23种开源视听制作工具
  15. WT588D使用记录
  16. vue+supermap三维地图(场景 模型 打包问题 报错)
  17. 机载火控计算机测试系统的设计
  18. 学习笔记(2):H3CS-WLAN 无线工程师认证-WLAN技术背景知识1
  19. 开源免费erp ,erp5和odoo的对比
  20. Shader——3D流光效果

热门文章

  1. EasyUI可编辑列
  2. 【2021杭电多校赛】2021“MINIEYE杯”中国大学生算法设计超级联赛(10)签到题2题
  3. 【云计算】阿里云云计算架构师ACE成长路线v2
  4. 11尺寸长宽 iphone_东风日产奇骏垫底!盘点2020年11月销量最大的十款SUV
  5. 通风技术交底书范文_通风与空调工程风管安装安全技术交底
  6. html输入框2位小数,input输入框数字限制(2位小数,含0的正整数)
  7. c语言小学生加法考试题程序4,c语言编程题与答案4.doc
  8. jquery插入节点
  9. jquery选择器之基本选择器
  10. [leetcode]90. 子集 II