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代码才是关键,我总结了我在编写代码过程中使过的五种方法:
- VS直接生成——只适用于2010版本以上的VS,而且必须是DotNet开发
- ReSharper一键生成——只适用于DotNet开发
- 通过快捷键进行操作
- 使用代码生成器
- 使用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.如何快速认识一个新类及其方法 ...
- java 新窗口跳转页面_Java web开发中页面跳转小技巧——跳转后新页面在新窗口打开...
最近学习Java web,在学习过程中想实现一个需求,就是在jsp页面跳转的时候,希望跳转后的新页面在新窗口中打开, 而不是覆盖原来的页面,这个需求使我困惑了好长时间,后来通过大海捞针似的在网上寻找方 ...
- 前端开发中的一些js小技巧
1.获取某个月的天数 1 function getDate (year, month) { 2 return new Date(year, month + 1, 0).getDate(); 3 } 2 ...
- iOS开发中一些有用的小代码
1.判断邮箱格式是否正确的代码: //利用正则表达式验证 -(BOOL)isValidateEmail:(NSString *)email { NSString *emailRegex = @&quo ...
- Fiddler使用过程中容易忽略的小技巧
Fiddler使用过程中容易忽略的小技巧 fiddler的基本使用,在之前的一篇博文中有详细介绍,可参见Fiddler抓包工具使用详解,今天来分享几个容易忽略的小技巧. 1.ios机装了证书,依然抓不 ...
- python开发效率怎样提高_python 提高开发效率的5个小技巧
很多时候学习是一种难者不会,会者不难的事情. 下面的5个python技巧是性价比极高的知识点,一学就会,不难但是相当管用. 使用交互模式 使用python -i xxxx.py可以直接进入python ...
- Vue 工程代码阅读小技巧
Vue 工程代码阅读小技巧 对于一个刚刚接触 vue 的 小白白,怎样才能高效的阅读别人的 vue 工程代码.当然,有的项目有工程介绍,这令当别论,你就老老实实地看文档吧,看完差不多也了解业务流程了, ...
- 网页代码常用小技巧!(2)
网页代码常用小技巧!(2) [转] 41.变换网页的鼠标光标 〈BODY style=CURSOR: url(http://203.73.125.205/~liangmi2/farmfrog01.cu ...
- 工作中这些实用的小技巧,90%的程序员不知道
工作中这些实用的小技巧,90%的程序员不知道 Linux 有些Linux命令我们是经常用的,但是这些命令有的特别长(如进入层级特别深的项目部署目录),这时就可以为这些命令定义一个别名 系统级别定义的别 ...
最新文章
- Git 中常用的 4 个命令
- spring与memcache的集成
- Windows8 Metro开发 (04) : 保存/读取本地应用程序设置
- 将可执行程序的内存空间扩展到3GB(windows)
- JSP的文件上传处理
- 机器视觉系统中相机镜头选型技巧_工业相机在机器视觉系统中的地位和作用
- 数据结构栈之火车出站小结
- 算法取代了保释金:被抓能不能保释?先听系统怎么说
- ls命令 文件和目录属性
- Git基本介绍(三大分区及核心内部构造)
- JUnit-三角形判断测试
- 学术随笔(二):一篇好论文的标准
- 学校计算机协会面试自我介绍,个人社团面试自我介绍范文三篇
- 金蝶实现EXCEL复制粘贴功能
- VMWare虚拟机Ubantu20.10添加中文智能拼音输入法
- 证券交易系统 -- 为什么要低延迟?
- 《如果……》拉迪亚德·吉卜林
- unity3d 摄像机跟随角色时 画面抽搐问题
- Qt编写可视化大屏电子看板系统5-恢复布局
- 业务系统(HANA/SAP/OA/ERP/OA)
热门文章
- RocketMQ的组织架构和基本概念,Dledger高可用集群架构原理
- 你真的懂ArrayList吗?说说foreach与iterator时remove的区别
- 天津科技大学中外合作办学计算机科学怎么样,天津科技大学计算机类(中外合作办学)(计算机科学与技术(信息处理专业2016年在安徽理科高考录取最低分数线...
- Java 并发编程ReentrantLock--源码解析(底层AQS实现)
- Spring Cloud微服务系列-Eureka Client源码解析(一)
- LeetCode004-寻找两个正序数组的中位数(Median of two sorted arrays)-Rust语言实现
- 查linux有哪些task_浅谈Linux线程模型
- Java 8 新增lambda表达式(-)
- 《中国人工智能学会通讯》——2.35 敏捷和灵巧精细动作技能(Agile and Dexterous Fine Motor Skills)...
- 2017年SEO行业的前景以及未来趋势