博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Use 'var' or not
阅读量:4649 次
发布时间:2019-06-09

本文共 1424 字,大约阅读时间需要 4 分钟。

Use 'var' or not

 

*Any fool can write code that a computer can understand. 

Good programmers write code that humans can understand.*

前言

关于'var':
从 Visual C# 3.0 开始,在方法范围中声明的变量可以具有隐式类型 var。隐式类型的本地变量是强类型变量(就好像您已经声明该类型一样),但由编译器确定类型。(摘自msdn)
简单来说,var类型有以下几个特点:
  • var可代替任何类型
  • 编译器会根据上下文来判断你到底是想用什么类型的
 
那么在实际编程过程中到底该不该用var代替实际的类型呢?我们从且仅从代码编写的角度来看,即不考虑代码的性能及执行效率。

优点

1、
可使代码布局更加整洁
 
如下列代码:
使用"var"代替前
 
1 string str="this is some string";2 int i=123;3 List
myList=newList
();

使用"var"代替后

1 var str="this is some string";2 var i=123;3 var myList=newList
();

 

整洁程度一目了然。
 
2、
去除代码多余部分,精简代码量
依然以上述代码举例,我们可以很清楚地看出
 
1 List
myList=newList
();

 

 
"myList"前后多次书写类型,冗余而繁琐。
引用stackoverflow中某位回答者的话:
 
1 Fungus:Do you like Do you like RedundantTextRedundantText?:D –MarkSimpsonDec9'09 at 13:32

 

缺点

1、
代码缺失可读性
如下代码:
 
1 var obj=myClass.GetSomeObjects();
 
当别人或一个月后的自己重新阅读这段代码的时候很难一眼看出obj到底是什么类型,当然
类名和方法名可能不会像上边这样糟糕,当然
借助于强大的IDE我们可以“轻易”地找到“GetSomeObjects”真正“return”了什么,但是
我们一定会在这寻找中消磨掉了时间和热情
 
2、
给代码重构带来麻烦
使用"var"时,编译器会根据上下文推断你想使用的类型,但是项目的维护往往难以避免地将代码重构,假如:
 
1 var obj=myClass.GetSomeObjects();

 

GetSomeObjects() 返回类型为resultA类型,编译通过,后期代码维护过程中这样或那样的原因将返回类型改为了resultB(当然我们极力反对这样做),这时编译器是不报错的(有可能),只有运行时才会出现bug,而如果一开始就限定了实际需要的类型则不会出现这种情况。
 

综述

综上所述,var关键词有其优点也有缺点,我们择优用之,重要的一点是,Coding也是一种写作,不仅要让计算机读得懂,更重要的是让人同样读得懂,诚如题记。
 

转载于:https://www.cnblogs.com/HelloJercy/p/5663698.html

你可能感兴趣的文章
python第三十九课——面向对象(二)之初始化属性
查看>>
python学习笔记之函数装饰器
查看>>
FEM计算2D瞬态热传导方程
查看>>
四年时光,匆匆而过
查看>>
【php】【psr】psr1 基础编码规范
查看>>
WAF SSI
查看>>
LDAP & it's implementation
查看>>
Apache HttpComponents中的cookie匹配策略
查看>>
冰封的海盗攻略
查看>>
Netty4.x中文教程系列(四) 对象传输
查看>>
linux下find命令使用举例、
查看>>
GET请求在Tomcat中的传递及URI传递
查看>>
ubuntun 服务器与Mac
查看>>
重温JSP学习笔记--与日期数字格式化有关的jstl标签库
查看>>
java-Date-DateFormat-Calendar
查看>>
封装CLLocationManager定位获取经纬度
查看>>
我的第一篇博客-(Eclipse中或Myeclipse中如果不小心删除了包那可怎么办?)
查看>>
对easyui datagrid组件的一个小改进
查看>>
类似以下三图竞争关系的IT企业
查看>>
清明节
查看>>