原文:VS开发中的代码编写小技巧——避免重复代码编写的几种方法

上一篇文章中程序员的幸福生活——有你的日子,每天都是情人节,收到了大家的很多好评、鼓励和祝福,非常感动,真诚的谢谢大家。也希望每个朋友都能保持一个积极向上的心态,去迎接丰富多彩的人生。

在开发过程中,我们经常会遇到大量重复或者类似的代码需要编写,当然我们可以通过各种模式来避免这种情况出现,但肯定有些时候我们是无法避免的,那么遇到这种情况,我们该如何快速完成这些重复或类似的代码的编写呢。下面来说一下我的方法,当然,如果大家有更好的方法,希望能分享出来。

大量重复代码——switch/case枚举的遍历

说到大量重复类似代码,就不得不说switch/case,如果一个枚举里面有几十项,在switch的时候,每一项都要写一个case,如下所示:

enum GoldenTagFieldIndex
{Tag,Id,Type,Table,Desc,Unit,Archive,Digits,Shutdown,Lowlimit,Highlimit,Step,Typical,
};

编写switch/case后,达到的效果:

GoldenTagFieldIndex index = GoldenTagFieldIndex.Tag;
switch (index)
{case    GoldenTagFieldIndex.Tag:case    GoldenTagFieldIndex.Id:case    GoldenTagFieldIndex.Type:case    GoldenTagFieldIndex.Table:case    GoldenTagFieldIndex.Desc:case    GoldenTagFieldIndex.Unit:case    GoldenTagFieldIndex.Archive:case    GoldenTagFieldIndex.Digits:case    GoldenTagFieldIndex.Shutdown:case    GoldenTagFieldIndex.Lowlimit:case    GoldenTagFieldIndex.Highlimit:case    GoldenTagFieldIndex.Step:case    GoldenTagFieldIndex.Typical:default:break;
}

这样的代码,如果纯手写,既枯燥,又浪费时间,但是代码必须要写,如何快速的生成这些switch/case代码才是关键,我总结了我在编写代码过程中使过的五种方法:

  1. VS直接生成——只适用于2010版本以上的VS,而且必须是DotNet开发
  2. ReSharper一键生成——只适用于DotNet开发
  3. 通过快捷键进行操作
  4. 使用代码生成器
  5. 使用Excel完成代码生成

VS自动生成

当进行DotNet开发的时候,这种switch/case可以很容易的使用2010以上版本的VS自动生成,当然也只能是DotNet,如果是C++,那么不好意思了,不支持。

在VS中可以通过一个switch的snippet来自动生成枚举的项的case语句。具体操作步骤:先写switch,然后按Tab键,然后写入枚举变量名,然后按Enter键,这样其余所有代码就可由VS自动完成了。是不是很方便呢,下面直接看图:

DotNet神器——ReSharper一键生成

说到ReSharper,就不得不说,DotNet开发人员实在是太幸福了,各种标准库,各种帮助类,就连辅助工具也堪称神器,让我等在工作中使用C++的码农羡慕嫉妒恨啊。

直接上图,看了图,你就知道什么是神器了:

貌似装了ReSharper后,VS的自动完成功能就不好用了,不知道只有我这样,还是普遍现象。不过既然用了ReSharper,而且也这么好用,那么就不去计较VS的自动完成了。

ReSharper还有很多强大的功能,等待你的发现。

通过快捷键进行操作

VS自动完成、ReSharper一键生成固然十分方便,以至于其他方法都弱爆了,但是这是有前提的,只有DotNet开发才有这么感人的功能。而C++呢,我们只能求助于下面的方法了。

对于程序员来说,想要高效的完成代码的编写,就需要熟练掌握各种快捷键,有了这些方便强大的快捷键,那么完成这些重复的switch/case,只是分分钟的事。

下面是操作过程中用到的快捷键:

  • Alt:选择代码中某几列
  • Ctrl + C :复制
  • Ctrl + V :粘贴
  • Ctrl + H :替换
  • Tab :添加制表符
  • Shift + Tab :取消制表符

如果想了解更多VS快捷键的介绍,请参考小坦克的这两篇文章:Visual Studio 常用快捷键  和 Visual Studio 常用快捷键 (二)。

使用代码生成器

做Web开发的朋友应该对代码生成器不是很陌生,至少我当初写三层时,就经常使用代码生成器来生成操作数据库的代码,代码的编写效率那叫一个快。虽然现在转战C++了,但是代码生成器还是能够派上用场的。

我所接触过的代码生成器主要有三种:

  • CodeSmith:CodeSmith是我接触的最早的一个代码生成器,个人感觉功能十分强大。自从有了他,就基本上不再用其他的工具。详细的使用资料可以参考官方的帮助文档,或者参考Terrylee的这篇文章 CodeSmith开发系列资料总结。
  • T4:T4是微软的代码生成引擎,由于本人没有使用过,所以功能上就不做评论了。
  • 动软代码生成器:动软代码生成器是国产的一款软件,本人也只是在操作SQL的时候用过,对于数据库的支持功能比较强大。

由于T4、动软代码生成器用的不多,所以只介绍一下使用CodeSmith生成switch/case代码的方法。

CodeSmith语法什么的,这里就不介绍了,直接上模板:

<%@ Template Language="C#" TargetLanguage="C#" %>
<%@ Assembly Name="CodeSmith.CustomProperties" %>
<%@ Property Name="List" Type="CodeSmith.CustomProperties.StringCollection" Category="Custom" Description="This is the list." %><% for (int i = 0; i < List.Count; i++)
{ %>
case <%= List[i].Trim().Trim(',') %>:
<%
} %>

有了此模板就可以很方便的生成代码了:

使用Excel完成代码生成

相比于以上两种方法,使用Excel可能会麻烦一些,但是这里只是提供一种思路和方法,在真正遇到问题的时候,要具体问题具体对待。其实Excel功能是很强大的,能熟练的使用Excel,在很多情况下,是可以提高工作效率、编码效率等很多效率的。废话不多说,下面就演示一下如何使用Excel来完成代码的生成:

总结——善于使用工具可以提高效率

当我们遇到switch/case等大量重复或相似代码的时候,最好不要纯手敲,或者通过复制粘贴后再修改,这样不仅效率低,而且对自身也没有提高,可以说是费力不讨好。

而如果能够熟练的使用一些辅助工具,那么就可以事半功倍,大大的提高工作效率,何乐而不为呢。

假设你是一个武林高手,如果再能得到一个神兵利器,那么是不是可以天下无敌了呢。

你的编程水平很高,能够使用各种模式来避免重复代码,如果再能熟练的使用VS(快捷键)、代码生成器等工具,那么恭喜你,终于可以从大量重复的体力劳动工作中解脱了,终于,整个世界清静了。

以上几种只是我比较常用的方法,消灭重复代码编写的方法还有很多。如果你有比较好的方法,那么希望你能分享出来,本人必将不胜感激。

我是缘生梦,谢谢您的关注!

VS开发中的代码编写小技巧——避免重复代码编写的几种方法相关推荐

  1. 在开发中总结的一点小技巧

    在平时的开发中,我们总会遇到各种各样的问题,在我们技术还不行的时候,也许不是什么大问题,但是一旦技术逐渐成熟,所写的程序逐渐变大了,那么我们就会面临着越来越多的挑战.1.如何快速认识一个新类及其方法 ...

  2. java 新窗口跳转页面_Java web开发中页面跳转小技巧——跳转后新页面在新窗口打开...

    最近学习Java web,在学习过程中想实现一个需求,就是在jsp页面跳转的时候,希望跳转后的新页面在新窗口中打开, 而不是覆盖原来的页面,这个需求使我困惑了好长时间,后来通过大海捞针似的在网上寻找方 ...

  3. 前端开发中的一些js小技巧

    1.获取某个月的天数 1 function getDate (year, month) { 2 return new Date(year, month + 1, 0).getDate(); 3 } 2 ...

  4. iOS开发中一些有用的小代码

    1.判断邮箱格式是否正确的代码: //利用正则表达式验证 -(BOOL)isValidateEmail:(NSString *)email { NSString *emailRegex = @&quo ...

  5. Fiddler使用过程中容易忽略的小技巧

    Fiddler使用过程中容易忽略的小技巧 fiddler的基本使用,在之前的一篇博文中有详细介绍,可参见Fiddler抓包工具使用详解,今天来分享几个容易忽略的小技巧. 1.ios机装了证书,依然抓不 ...

  6. python开发效率怎样提高_python 提高开发效率的5个小技巧

    很多时候学习是一种难者不会,会者不难的事情. 下面的5个python技巧是性价比极高的知识点,一学就会,不难但是相当管用. 使用交互模式 使用python -i xxxx.py可以直接进入python ...

  7. Vue 工程代码阅读小技巧

    Vue 工程代码阅读小技巧 对于一个刚刚接触 vue 的 小白白,怎样才能高效的阅读别人的 vue 工程代码.当然,有的项目有工程介绍,这令当别论,你就老老实实地看文档吧,看完差不多也了解业务流程了, ...

  8. 网页代码常用小技巧!(2)

    网页代码常用小技巧!(2) [转] 41.变换网页的鼠标光标 〈BODY style=CURSOR: url(http://203.73.125.205/~liangmi2/farmfrog01.cu ...

  9. 工作中这些实用的小技巧,90%的程序员不知道

    工作中这些实用的小技巧,90%的程序员不知道 Linux 有些Linux命令我们是经常用的,但是这些命令有的特别长(如进入层级特别深的项目部署目录),这时就可以为这些命令定义一个别名 系统级别定义的别 ...

最新文章

  1. Git 中常用的 4 个命令
  2. spring与memcache的集成
  3. Windows8 Metro开发 (04) : 保存/读取本地应用程序设置
  4. 将可执行程序的内存空间扩展到3GB(windows)
  5. JSP的文件上传处理
  6. 机器视觉系统中相机镜头选型技巧_工业相机在机器视觉系统中的地位和作用
  7. 数据结构栈之火车出站小结
  8. 算法取代了保释金:被抓能不能保释?先听系统怎么说
  9. ls命令 文件和目录属性
  10. Git基本介绍(三大分区及核心内部构造)
  11. JUnit-三角形判断测试
  12. 学术随笔(二):一篇好论文的标准
  13. 学校计算机协会面试自我介绍,个人社团面试自我介绍范文三篇
  14. 金蝶实现EXCEL复制粘贴功能
  15. VMWare虚拟机Ubantu20.10添加中文智能拼音输入法
  16. 证券交易系统 -- 为什么要低延迟?
  17. 《如果……》拉迪亚德·吉卜林
  18. unity3d 摄像机跟随角色时 画面抽搐问题
  19. Qt编写可视化大屏电子看板系统5-恢复布局
  20. 业务系统(HANA/SAP/OA/ERP/OA)

热门文章

  1. RocketMQ的组织架构和基本概念,Dledger高可用集群架构原理
  2. 你真的懂ArrayList吗?说说foreach与iterator时remove的区别
  3. 天津科技大学中外合作办学计算机科学怎么样,天津科技大学计算机类(中外合作办学)(计算机科学与技术(信息处理专业2016年在安徽理科高考录取最低分数线...
  4. Java 并发编程ReentrantLock--源码解析(底层AQS实现)
  5. Spring Cloud微服务系列-Eureka Client源码解析(一)
  6. LeetCode004-寻找两个正序数组的中位数(Median of two sorted arrays)-Rust语言实现
  7. 查linux有哪些task_浅谈Linux线程模型
  8. Java 8 新增lambda表达式(-)
  9. 《中国人工智能学会通讯》——2.35 敏捷和灵巧精细动作技能(Agile and Dexterous Fine Motor Skills)...
  10. 2017年SEO行业的前景以及未来趋势