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开发中的代码编写小技巧——避免重复代码编写的几种方法的更多相关文章
- C#中??和?分别是什么意思? 在ASP.NET开发中一些单词的标准缩写 C#SESSION丢失问题的解决办法 在C#中INTERFACE与ABSTRACT CLASS的区别 SQL命令语句小技巧 JQUERY判断CHECKBOX是否选中三种方法 JS中!=、==、!==、===的用法和区别 在对象比较中,对象相等和对象一致分别指的是什么?
C#中??和?分别是什么意思? 在C#中??和?分别是什么意思? 1. 可空类型修饰符(?):引用类型可以使用空引用表示一个不存在的值,而值类型通常不能表示为空.例如:string str=null; ...
- Xcode开发中的6个小技巧
Xcode是iPhone和iPad开发者用来编码或者开发iOS app的IDE.Xcode有很多小巧但很有用的功能,很多时候我们可能没有注意到它们,也或者我们没有在合适的水平使用这些功能简化我们的iO ...
- iOS 开发中使用到的小技巧汇总
国庆即将来到,一个小项目也即将完成,把自己在项目中用的一些小技巧写出来,方便查找. 1,去掉分割线--动画设置透明度alpha //去掉tableView的分隔线: self.tableVie ...
- Java web开发中页面跳转小技巧——跳转后新页面在新窗口打开
最近学习Java web,在学习过程中想实现一个需求,就是在jsp页面跳转的时候,希望跳转后的新页面在新窗口中打开, 而不是覆盖原来的页面,这个需求使我困惑了好长时间,后来通过大海捞针似的在网上寻找方 ...
- Salesforce 开发整理(九) 开发中使用的一些小技巧汇总[持续更新]
1.查询一个对象下所有字段 当需要查询一个对象所有字段进行复制或其他操作,可以使用一段拼接的语句来查询 String query = 'select '; for(String fieldApi : ...
- 前端开发中的一些js小技巧
1.获取某个月的天数 function getDate (year, month) { return new Date(year, month + 1, 0).getDate(); } 2.获取变量类 ...
- Android开发中常用的一些小技巧(转载)
http://www.jb51.net/article/61135.htm Activity.startActivities() 常用于在应用程序中间启动其他的Activity. TextUtils. ...
- iOS开发UI篇—IOS开发中Xcode的一些使用技巧
iOS开发UI篇—IOS开发中Xcode的一些使用技巧 一.快捷键的使用 经常用到的快捷键如下: 新建 shift + cmd + n 新建项目 cmd + n 新建文 ...
- [转]Golang 中使用 JSON 的小技巧
taowen是json-iterator的作者. 序列化和反序列化需要处理JSON和struct的关系,其中会用到一些技巧. 原文 Golang 中使用 JSON 的小技巧是他的经验之谈,介绍了一些s ...
随机推荐
- final
final的变量的值不能被改变.(包括形参) final的方法不能被重写. final的类不能被继承.
- 一些PHP性能的优化
PHP优化对于PHP的优化主要是对php.ini中的相关主要参数进行合理调整和设置,以下我们就来看看php.ini中的一些对性能影响较大的参数应该如何设置. # vi /etc/php.ini ( ...
- EFM32外设模块—USART V1.00
http://wenku.baidu.com/link?url=hx-pumUzdpS-AbD1OhEW11Jl6H8wex2DNsv4IcZwrgL-drwuUzZ6E1L64fCnAfdUOObK ...
- ASP数组全集,多维数组和一维数组[转]
ASP数组是比较好用的装载大量数据的容器.1 定义数组 有两种方式:DIM和REDIM. DIM定义的是固定个数.数据类型的数组:而REDIM则不同,它可以定义不同类型的数据,也可以定义个数并非固定的 ...
- HTML 判断手机的类型(苹果手机安卓手机)
function isJudege_PlatForm() { var version = navigator.appVersion; var platName = navigator.userAgen ...
- PHP入门教程-开发环境搭建
1.PHP简介: PHP是能让你生成动态网页的工具之一.PHP网页文件被当作一般HTML网页文件来处理并且在编辑时你可以用编辑HTML的常规方法编写PHP. 2.学习需要基础: a.HTML b.Ja ...
- openSUSE 配置静态上网
openSUSE静态固定IP设置方法 openSUSE号称最华丽的Linux,只是中文资料实在太少,这里提供在VMmware Workstation 7.12中安装openSUSE 11.3设置静态固 ...
- 通过反射及注解的运用获取SQL语句
import java.lang.reflect.*; public class BeanUtil { //这是拼接查询SQL语句的方法(getDelectSQL) public static Str ...
- Oracle 设置表空间自增长
Oracle修改表空间大小 使用Oracle10g建立数据库后,向数据库中导入了部分数据,第二天继续向数据库中导入数据表时发生错误: 查了很多资料发现原来是Oracle表空间限制,导致无法继续导入数据 ...
- Dancing Links & Algorithm X
1 参考链接 http://www.cnblogs.com/steady/archive/2011/03/15/1984791.html#undefined http://en.wikipedia.o ...