最近遇到一个很费解的问题,关于var 的使用!!大家都说一下自己的见解!

卷泥巴重来 2015-11-25 09:43:17
楼主本人离开了北上广,回到家乡附近的小城市工作了,还是码。由于本人在广州也呆了5近多的时间。回来的时候临时做了个小官(码官)。
正题来了:
最近在跟进一个项目,发现项目里所有变量声明都是var 来声明(C#)。整个类文件下来,所有变量声明都是var 类型来声明。
这样合适吗?

个人觉得这样不适合。
代码可读性不高,维护难度也增加了!

各们,你们觉得呢?
...全文
454 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
showjim 2015-11-26
  • 打赏
  • 举报
回复
在借助单词翻译器阅读外文的时候,鼠标覆盖模式一个一个单词弹出看,那得多累啊。 不知道弹出标签能不能转到定义,var是专门写给机器看的吗?
Linghao24 2015-11-25
  • 打赏
  • 举报
回复
可以用,不能因为自己不习惯用就强加给你下属。
Poopaye 2015-11-25
  • 打赏
  • 举报
回复
说穿了就是懒
冰冷的小爪 2015-11-25
  • 打赏
  • 举报
回复
我表示只有在写LINQ的时候才用
java_liyi 2015-11-25
  • 打赏
  • 举报
回复
代码都是写给自己看的,哪管别人死活...为了看个C#,还要到处装vs....
exception92 2015-11-25
  • 打赏
  • 举报
回复
现在 基本都使用var 声明,,
xuzuning 2015-11-25
  • 打赏
  • 举报
回复
我认为这是合适的,是技术进步的表现。更贴近自然语言了
衣舞晨风 2015-11-25
  • 打赏
  • 举报
回复
看情况吧,知道明确类型的还是尽量不用吧
七步777 2015-11-25
  • 打赏
  • 举报
回复
我个人是能不用就不用,看着var不舒服, 我喜欢直接写在前面,鼠标都不用动就知道是啥了
skyandcode 2015-11-25
  • 打赏
  • 举报
回复
这就是滥用隐式类型了。 var 主要作用: 1. 减少代码。 例如:var dic 显然比 Dictionary<string,List<string>> dic 要简洁得多。而且编译器可以推断出(也必须能推断出)var 变量的类型,方便调试。特别是在linq 中,有许多类型的名称都是很长的,有时候我们甚至不需要知道这些具体类型,这个时候用var就很方便了。 但一个 int i 写成 var i 就完全没有必要。 2. 匿名对象 例如:var obj = new {Name="abc"}; 匿名类型的名称是随机生成的,这个时候我们不知道具体类型,只能用var。 总之,需要权衡代码的简洁和可读性。
Forty2 2015-11-25
  • 打赏
  • 举报
回复
全部用var,跟全部用国产货一样,从辩证的角度,当然是不合适的。 从可读性角度出发,几个简单的原则:

// 这里用var比较好,因为从后面的new完全可以读懂customers是什么
var customers = new Dictionary<string, Customer>();  

// 这里用var比较不好,因为虽然编译器知道customerSearchResult的类型,读代码的人不容易知道。
var customerSearchResult = SearchCustomer(...);

// 匿名类型没有选择,只能用var
var v = new { Id = 123, Name = "swift" };
xdashewan 2015-11-25
  • 打赏
  • 举报
回复
所有都用个人觉得是不合适的,应该在适当的地方使用,这篇帖子也是关于var使用的观点,你可以看看,http://bbs.csdn.net/topics/380263684
  • 打赏
  • 举报
回复

不需要啊,你看我截的图,鼠标移上去就知道什么类型了
nomasp 2015-11-25
  • 打赏
  • 举报
回复
这位说得对……确实不合适……脱离了VS代码就没法看了…确定类型的地方还是别用var比较好
引用 11 楼 java_liyi 的回复:
代码都是写给自己看的,哪管别人死活...为了看个C#,还要到处装vs....
卷泥巴重来 2015-11-25
  • 打赏
  • 举报
回复
引用 1 楼 starfd 的回复:
在VS里面无差别,别看它写成了var,你鼠标移动上去,就看到它实际的类型了
自己在写代码的时候知道是什么类型用var不会觉得怎么样, 但别人维护代码的时候就不知道这个var是什么类型,需要再看一遍实现方法,会增加维护难度 不是么?
  • 打赏
  • 举报
回复
在VS里面无差别,别看它写成了var,你鼠标移动上去,就看到它实际的类型了
byronqiji 2015-11-25
  • 打赏
  • 举报
回复
用var声明变量,就需要在声明时进行赋值,因此可以根据被赋的值知道声明了什么类型 如果var声明了变量而不赋值,会产生编译错误。 var的操作便捷了变量的声明,特别是在使用linq时,只需要考虑linq的组织,可以忽略linq返回的类型,一切让var去解决吧。 编译后,仍然是 上帝的归上帝 凯撒的归凯撒 找不到var的踪影
圣殿骑士18 2015-11-25
  • 打赏
  • 举报
回复
全部用var,当然是不合适的。 很不利于阅读,代码写了不是只给写作者看的,而是需要方便别人维护。 所谓鼠标移动上去看类型,那也要鼠标移动过去才行,每个变量都这样移动上去看,不知不觉的时间浪费,是惊人的。 我的观点是,var可以用,也需要用,但要有限制的用,原则是,发挥var的长处,但尽量少用。 我一般只用于: 1、foreach循环 2、非常长的类名 3、不常用的类名
crystal_lz 2015-11-25
  • 打赏
  • 举报
回复
反正我是在小范围类用 就是眼睛能看到的范围类 比如 foreach(var x in xxx) 不过 貌似 我也就在 foreach 里面用过var 因为我也觉得 用var虽然简单 但是很多地方直接从代码层面上来看 根本就看不出他的类型 比如 var x = xxx.XXX(); 这样很难知道 类型 var x = new XXX() 这种还是可以接受的 反正我始终坚信一点 代码 不只是给机器看的。。

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧