社区
C#
帖子详情
var关键字是否应该普遍使用?
游不出缸的鱼
2011-09-20 07:51:34
RT,我现在在做的这个系统中存在大量用var代替具体类名定义的变量,并且这是team leader推荐的做法,理由是var关键字拼写简单,可以节省编码时间。但是我觉得,大量以var定义的变量,肉眼不能一目了然的看出变量类型,总是得看一下上下文,在修改和调试的时候带来不少困扰,而且在IDE环境下类名都是有智能提示的,拼写类名应该不会占用太多时间,这样做感觉有点得不偿失啊。大伙儿觉得呢?
...全文
1363
31
打赏
收藏
var关键字是否应该普遍使用?
RT,我现在在做的这个系统中存在大量用var代替具体类名定义的变量,并且这是team leader推荐的做法,理由是var关键字拼写简单,可以节省编码时间。但是我觉得,大量以var定义的变量,肉眼不能一目了然的看出变量类型,总是得看一下上下文,在修改和调试的时候带来不少困扰,而且在IDE环境下类名都是有智能提示的,拼写类名应该不会占用太多时间,这样做感觉有点得不偿失啊。大伙儿觉得呢?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
31 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
sjg20010414
2011-09-27
打赏
举报
回复
这个问题CLR via C#中解释得很好啊,什么时候用合适
dreammaster
2011-09-23
打赏
举报
回复
List<Customer> customers = new List<Customer>();
例1:
var c1 = from c in customers
select new { CustomerId = c.Id, CustomerName = c.Name };
var test = new { Id = 1, Name = 2 };
Console.WriteLine(test.Id);
例2:
IEnumerable<Customer> c2 = from c in customers
select c;
例1用var是恰当的, 例2 var跟指定类型一致。
liujie1575720297
2011-09-23
打赏
举报
回复
一般不用
hentlary
2011-09-22
打赏
举报
回复
滥用就会有点麻烦
erictang2003
2011-09-22
打赏
举报
回复
var 很好用啊,我喜欢,var并不是定义一个变量的作用
zh6335901
2011-09-21
打赏
举报
回复
类型比较复杂且很容易看出类型的时候推荐用
fyjabb
2011-09-21
打赏
举报
回复
加群 12890082 java asp.net
showjim
2011-09-21
打赏
举报
回复
[Quote=引用 22 楼 sbwwkmyd 的回复:]
个人感觉这是很明显的资源浪费,代码是一次性的。如果程序简单还好,如果稍麻烦一点的逻辑代价就太高了。
[/Quote]
补充一点,自动测试与代码修改根本就不冲突,那只是业务流程而已。
showjim
2011-09-21
打赏
举报
回复
[Quote=引用 18 楼 athwind 的回复:]
ORM的时代还没到来:
ORM的思想很好,但是搞清楚,现在用的数据库是关系型数据库,不是对象型数据库,多余的转换,多余的代码,每次看到别人写的实体就想吐,操作个数据库直接执行sql就好了,用的着兜一圈吗,还要把数据库表转换为对象,其实ORM和linq另外一个好的思想是统一开发接口,比如多种数据源,但是实际上并非如此,软件往往只用到一个数据库,如果要用多数据库,用DoNet的接口写一个数据转换类就可以了,什么CSLA.NET,Hibernate之类的全是浮云,只能增大无用代码的输入量和开发时间,同时降低程序效率[/Quote]
真正的ORM时代随时来临,应该做好准备。
showjim
2011-09-21
打赏
举报
回复
[Quote=引用 11 楼 moneysoft 的回复:]
在一些拥有自动化测试手段的开发组织.
一个被提交的工单,是以自动化测试标定为合格,
一旦通过测试,不会有人再去看这些代码,
如果以后这个组件被证明存在缺陷,那也和最初提交工单的程序员没有任何关系了,
设计师会重构出新的设计文档接口,安排新的测试实现和代码实现
[/Quote]
个人感觉这是很明显的资源浪费,代码是一次性的。如果程序简单还好,如果稍麻烦一点的逻辑代价就太高了。
[Quote=引用 11 楼 moneysoft 的回复:]
在另一种更加自动化的方式下,甚至都不需要提交代码,而是通过更加专业的开发工具提交文档,
文档通过测试标定工单合格,那样的话根本就不接触代码[/Quote]
这只适用于工序与模型相对稳定的情况,这部分的后台代码维护的频率应该更高。
我相信现在这个时代,程序需要更多的是个性化,不是什么配置或生成工具能做的。
当然自动化还是需要的,这一部分都不应该是讨论的重点了。
[Quote=引用 11 楼 moneysoft 的回复:]
然而,还有很多开发组织,他们需要手工编写大量的代码,
并且经常需要修改这些代码,
所以代码的可维护性就显得尤其重要,
为此会制定一些书写建议和规范,[/Quote]
手工编写大量代码,这个并不能说明自动化程度不高,关键是手工编写的代码一般不应该具有重复的抽象逻辑。
[Quote=引用 11 楼 moneysoft 的回复:]
基于我们的生产手段,我不在乎代码中是否使用var
[/Quote]
只能说明你们的生产的产品需求是相对稳定的,主体是自动化,而且你们并不在意次要资源的浪费。
逐风
2011-09-21
打赏
举报
回复
var 的优点在于不用关心类型,但是。。如果代码风格不佳,混合着很多难看的代码。var 将是另外一个地狱。
aoguanhai
2011-09-20
打赏
举报
回复
var 挺乱的
游不出缸的鱼
2011-09-20
打赏
举报
回复
[Quote=引用 14 楼 icedmilk 的回复:]
这是中国软件开发的现状
极度缺乏专业的项目管理人员,现在的管理人员都太操蛋
[/Quote]
感觉很多管理都是直接从技术NB的人里面提拔的,没有受过管理方面的培训,而如果他本人对管理技巧也不太关注的话,情况就会比较糟糕了
DSIOF3KIDSKTR
2011-09-20
打赏
举报
回复
不使用var,
不使用linq
不使用ORM
不盲目分层,让所谓的3层去死
软件可以分层,但绝不仅仅是多少层得问题,而是分层的思想是什么,最重要的是为什么要这样做?然后是怎么分层合适,什么逻辑层和UI分层,大多数人都是在盲从和误解,就像大众始终是盲目的一样,我只是想说要思考为什么要这么做,如果按照界面和逻辑分离的思想,自从vs2003之后微软就已经把程序分层了,因为以前的界面代码和窗体的.cs文件时在一起的,后来就分开了,这就是分层,不知从何时起有人有单独把逻辑处理从cs文件中剥离出来又单独作为一个dll,美其名曰可以直接替换BLL层,这样和直接替换exe有多少区别?
ORM的时代还没到来:
ORM的思想很好,但是搞清楚,现在用的数据库是关系型数据库,不是对象型数据库,多余的转换,多余的代码,每次看到别人写的实体就想吐,操作个数据库直接执行sql就好了,用的着兜一圈吗,还要把数据库表转换为对象,其实ORM和linq另外一个好的思想是统一开发接口,比如多种数据源,但是实际上并非如此,软件往往只用到一个数据库,如果要用多数据库,用DoNet的接口写一个数据转换类就可以了,什么CSLA.NET,Hibernate之类的全是浮云,只能增大无用代码的输入量和开发时间,同时降低程序效率
游不出缸的鱼
2011-09-20
打赏
举报
回复
[Quote=引用 15 楼 fangxinggood 的回复:]
我个人习惯用var,重构代码时类名修改了也只修改右边。不是很好么。
这东西就是个习惯问题(向右看齐)。能省则省。
[/Quote]
已经习惯了就没有问题
可是如果代码还有别人维护,而且别人不习惯的话,这可能就是个问题了
另外你提到的“重构代码时类名修改了也只修改右边”,VS的重构-重命名功能不是可以一次性把类名的所有引用位置都改了么,也不需要特意去动左边啊
jackfans
2011-09-20
打赏
举报
回复
var 挺乱的
机器人
2011-09-20
打赏
举报
回复
我个人习惯用var,重构代码时类名修改了也只修改右边。不是很好么。
这东西就是个习惯问题(向右看齐)。能省则省。
Icedmilk
2011-09-20
打赏
举报
回复
这是中国软件开发的现状
极度缺乏专业的项目管理人员,现在的管理人员都太操蛋
[Quote=引用 13 楼 w1720502338 的回复:]
引用 11 楼 moneysoft 的回复:
楼主,是这样的,基于不同的生产手段,关注的焦点会有所不同,
可能会是很大的差别,
在一些拥有自动化测试手段的开发组织.
一个被提交的工单,是以自动化测试标定为合格,
一旦通过测试,不会有人再去看这些代码,
如果以后这个组件被证明存在缺陷,那也和最初提交工单的程序员没有任何关系了,
设计师会重构出新的设计文档接口,安排新的测试实现……
[/Quote]
游不出缸的鱼
2011-09-20
打赏
举报
回复
[Quote=引用 11 楼 moneysoft 的回复:]
楼主,是这样的,基于不同的生产手段,关注的焦点会有所不同,
可能会是很大的差别,
在一些拥有自动化测试手段的开发组织.
一个被提交的工单,是以自动化测试标定为合格,
一旦通过测试,不会有人再去看这些代码,
如果以后这个组件被证明存在缺陷,那也和最初提交工单的程序员没有任何关系了,
设计师会重构出新的设计文档接口,安排新的测试实现和代码实现
在另一种更加自动化的方式下,甚至都……
[/Quote]
很成熟的开发体系啊
我们公司推的产品有很好的理念,市场前瞻性也不错
但是开发过程很让人崩溃啊,
没有需求文档、没有设计文档、代码几乎没有注释、没有测试文档、没有自动化测试
测试几乎完全依赖人工,经常发生回归现象
我想跟Boss提提意见(整个氛围比较轻松,直接跟Boss对话是比较容易的),改善下开发流程
但考虑到我所有关于开发流程的知识都是看来的,没有实践过,不太有说服力
而且这等于是说leader的管理有问题,恐日后尴尬
最近正为这事儿苦恼啊
游不出缸的鱼
2011-09-20
打赏
举报
回复
看来大家观点都跟我一致啊
我认为var是配合匿名类用的,因为它没有类名啊,只能用var,其他时候var就是个语法糖,看起来可以用来定义一切变量,但实际上是由编译器进行类型推断的,只不过是把写完整类名的事情交给编译器了,所以要在定义的时候初始化,不然怎么推断类型,楼上也说了C#是强类型的,变量必须有类型的。
一次leader看我敲代码,我都是写完整类名的,leader说,用var多好啊,打起来省事,在这种细节方面省下一点时间,累积起来就比较多了。我表示本人菜鸟一只,leader这么说,我以为经验之谈,但后来看到系统里大片var定义的变量,感觉挺别扭的,于是来看看大伙儿怎么说。
加载更多回复(11)
使用
“let”和“
var
”有什么区别?
ECMAScript 6 引入了 the let statement。我听说它被描述为一个局部变量,但我仍然不太确定它与
var
关键字
的行为有何不同。有什么区别?什么时候
应该
使用
let 而不是
var
?
c语言运行时的字体大小,C语言必须知道的
关键字
C语言必须知道的
关键字
你知道C语言有什么
关键字
吗?C语言的
关键字
共有32个,
关键字
有什么作用吗?下面由小编为大家整理的C语言的
关键字
知识,希望大家喜欢!C语言的
关键字
知识1 数据类型
关键字
(12个):(1) char :声明...
go语言:go语言的基本语法
一、Go语言变量的声明(
使用
var
关键字
) Go语言是静态类型语言,因此变量(
var
iable)是有明确类型的,编译器也会检查变量类型的正确性。在数学概念中,变量表示没有固定值且可改变的数。但从计算机系统实现角度来看...
JavaScript中this
关键字
的
使用
比较
JavaScript中this
关键字
的
使用
比较 this
关键字
在JavaScript中,用的不能说比较多,而是非常多。那么熟悉this
关键字
的各种用法则显得非常关键。 this有时候就是我们经常说的上下文,这个东西的指代对象。它灵活...
小新(bai)前端第一次写文章——关于
var
和let的
使用
比如,
使用
var
在一个函数内部定义一个变量,就意味着该变量将在函数退出时被销毁。 function test() {
var
message = "hi"; // 局部变量 } test(); console.log(message); // 出错! 解决出错:可以直接把...
C#
110,533
社区成员
642,574
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章