RT,我现在在做的这个系统中存在大量用var代替具体类名定义的变量,并且这是team leader推荐的做法,理由是var关键字拼写简单,可以节省编码时间。但是我觉得,大量以var定义的变量,肉眼不能一目了然的看出变量类型,总是得看一下上下文,在修改和调试的时候带来不少困扰,而且在IDE环境下类名都是有智能提示的,拼写类名应该不会占用太多时间,这样做感觉有点得不偿失啊。大伙儿觉得呢?
解决方案 »
- vs2010自动关闭
- datalist、reapeter分页如何实现输入一个数跳到指定的页
- [玻璃鱼V]重叠的PictureBox控件透明问题
- Jet.OLEDB.4.0sql中要用到Replace函数,如何替代?
- Gmap.NET怎么用啊?
- 页面刷新问题
- 在C#中如何写一个打开钱箱的代码,高分,在线等答案
- 【求助帖】异步线程与 System.Windows.Forms.Timer的问题
- C#窗体中PictureBox的使用
- 求C#带登陆窗口MDI窗体主流程
- C#Winform和Flash交互的时候Flash将变量传递给C#的时候C#接受到<null/>和<undfined>
- checkbox数据源绑定问题?????????
好像在foreach中偶尔用了一下
1. 必须在定义时初始化。
2. 一但初始化完成,就不能再给变量赋与初始化值类型不同的值了。
3. var要求是局部变量。
4. 使用var定义变量和object不同,它在效率上和使用强类型方式定义变量完全一样。
指望在公司项目里实践看来是不太现实了,这个系统自动化测试都不太有,几乎完全是人工测试,之前转正谈话的时候(我是今年毕业的,现在的公司是毕业前就进入实习的),我提出是否考虑建立较完善的测试体系,leader表示这是一直以来想做的事,但现阶段没有精力去做。
可能会是很大的差别,在一些拥有自动化测试手段的开发组织.
一个被提交的工单,是以自动化测试标定为合格,
一旦通过测试,不会有人再去看这些代码,
如果以后这个组件被证明存在缺陷,那也和最初提交工单的程序员没有任何关系了,
设计师会重构出新的设计文档接口,安排新的测试实现和代码实现在另一种更加自动化的方式下,甚至都不需要提交代码,而是通过更加专业的开发工具提交文档,
文档通过测试标定工单合格,那样的话根本就不接触代码然而,还有很多开发组织,他们需要手工编写大量的代码,
并且经常需要修改这些代码,
所以代码的可维护性就显得尤其重要,
为此会制定一些书写建议和规范,基于我们的生产手段,我不在乎代码中是否使用var
我认为var是配合匿名类用的,因为它没有类名啊,只能用var,其他时候var就是个语法糖,看起来可以用来定义一切变量,但实际上是由编译器进行类型推断的,只不过是把写完整类名的事情交给编译器了,所以要在定义的时候初始化,不然怎么推断类型,楼上也说了C#是强类型的,变量必须有类型的。一次leader看我敲代码,我都是写完整类名的,leader说,用var多好啊,打起来省事,在这种细节方面省下一点时间,累积起来就比较多了。我表示本人菜鸟一只,leader这么说,我以为经验之谈,但后来看到系统里大片var定义的变量,感觉挺别扭的,于是来看看大伙儿怎么说。
很成熟的开发体系啊我们公司推的产品有很好的理念,市场前瞻性也不错
但是开发过程很让人崩溃啊,
没有需求文档、没有设计文档、代码几乎没有注释、没有测试文档、没有自动化测试
测试几乎完全依赖人工,经常发生回归现象
我想跟Boss提提意见(整个氛围比较轻松,直接跟Boss对话是比较容易的),改善下开发流程
但考虑到我所有关于开发流程的知识都是看来的,没有实践过,不太有说服力
而且这等于是说leader的管理有问题,恐日后尴尬
最近正为这事儿苦恼啊
不使用linq
不使用ORM
不盲目分层,让所谓的3层去死软件可以分层,但绝不仅仅是多少层得问题,而是分层的思想是什么,最重要的是为什么要这样做?然后是怎么分层合适,什么逻辑层和UI分层,大多数人都是在盲从和误解,就像大众始终是盲目的一样,我只是想说要思考为什么要这么做,如果按照界面和逻辑分离的思想,自从vs2003之后微软就已经把程序分层了,因为以前的界面代码和窗体的.cs文件时在一起的,后来就分开了,这就是分层,不知从何时起有人有单独把逻辑处理从cs文件中剥离出来又单独作为一个dll,美其名曰可以直接替换BLL层,这样和直接替换exe有多少区别?ORM的时代还没到来:
ORM的思想很好,但是搞清楚,现在用的数据库是关系型数据库,不是对象型数据库,多余的转换,多余的代码,每次看到别人写的实体就想吐,操作个数据库直接执行sql就好了,用的着兜一圈吗,还要把数据库表转换为对象,其实ORM和linq另外一个好的思想是统一开发接口,比如多种数据源,但是实际上并非如此,软件往往只用到一个数据库,如果要用多数据库,用DoNet的接口写一个数据转换类就可以了,什么CSLA.NET,Hibernate之类的全是浮云,只能增大无用代码的输入量和开发时间,同时降低程序效率
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跟指定类型一致。