最近由于工作需要支援了公司的C#项目组。第一次体验这个JAVA的老对手,以下是一些心得。
【语法】
总体非常类似,属性和索引器 应当说改得还不错,实际也只是在编译器上做了自动生成方法的手脚,小改动。
【注解与特性】
在JAVA世界里,注解在框架的易用性上发挥了巨大作用,实际C#也有类似的东西“特性”,但除了NUNIT小试牛刀,其他用得极少。个人感觉非常可惜啊。
【IDE工具】
基本差不多,不能看类层次图,不能自动加using(不会是我不会用吧)。好在常用类没有JAVA那么多,引入不需要具体类名,包名就够了,总数惊奇的少。
【常用类库】
特别要说下集合类方面,C#里可选择的比JAVA少多了,无Set。泛型类与非泛型类不重叠,反映出C#发展中与JAVA升级思想的差异。其他,如IO等类库相比JAVA也是少得惊人。好坏先不说,学习曲线平坦了非常多。
【分层模式】
这个区别可太大了,但凡搞过SSH的JAVA程序员基本对三层结构多少都能说出个一二三来。而做C#感觉未必了。虽然C#也有NHIBERNATE等ORM框架,但实际开发项目时,相当多的项目组还是采用(比如笔者这个)微软最经典的表模式开发。动辄控件加绑定,对JAVA程序员是不是“一夜回到解放前”。(玩笑了)
JAVA开发天生的解耦性,应当说是C#很难企及的。但是换个角度,强耦合避免了比如JAVA里比较常见的DTO满天飞等问题,可谓有弊有利。
【代码量】
介于传统习惯及ORM工具的羸弱,C#的开发项目组普遍大量使用各种各样的代码生成器,无疑这样代码量要多很多,其实重复代码比例很大。这一点,无疑JAVA完胜。
【总结】
虽然,C#貌似有些“原始”,但是也不能一棍打死,说他落后。毕竟存在就是合理,应当看到较原生态的开发方式,往往性能问题少。再依靠大量代码生成工具,一定程度上弥补了开发效率上的不足。毕竟微软现在还是老大么。
最最重要的是C#学习曲线比JAVA平坦了很多,非常有利于小企业“大干快上”。
最后,笔者参加项目数据结构及应用都较简单,对C#的一些高级应用还未感受,观点难免偏颇,望见谅!
分享到:
相关推荐
话虽如此,在某些情况下,Rust所做的令人印象深刻的零成本抽象工作,与C ++一样(该术语最初来自C ++世界)。 总是有破解它的方法,但是我已经以这种情况为例说明了它的实际效果。 我在工作中提出了这一点,以鼓励...
在c#的学习中,不一定要搞的很懂很懂,有点印象和模糊的效果最好。很多人在c#的学习中找不到北,但是语言都有他的规律性,只要找到规律那就很好办事。希望我的这份小小的心得能让大家有很大的收获。对以后学习什么...
您问错了一个问题,您应该问:-为什么要学习语言?-为什么要开发软件? 去赚钱? 学习? 懂电脑吗? 要获得声誉? 给人留下深刻印象?-我居住的地方使用什么语言? 哪个更好...
五种令人印象深刻的网页头部设计技巧 C++初步知识(2013级-C++程序设计) 拼图游戏代码 碎纸片的拼接复原算法集合 java笔试题大集合及答案 热门招聘 【上海斐讯数据】招聘JAVA工程师 【德邦物流】高薪诚聘 软件...
包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】: 所有源码都经过严格测试,可以直接运行。 功能在确认正常工作后才上传。 【适用人群】...
包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】: 所有源码都经过严格测试,可以直接运行。 功能在确认正常工作后才上传。 【适用人群】...
StimulsoftReports是一组令人印象深刻的跨平台报表组件,例如.NET Framework,.NET Core,JavaScript,PHP和Java。该工具具有强大的多平台报表引擎,易于使用的设计器和查看器,支持大量的报表导出格式。组件在桌面...
平均而言,API 需要 150 毫秒来完成它的两个请求,这令人印象深刻。 速度是它排名靠前的主要原因之一,还有结构。 它遵循 MVC 模式,因此您的代码是有组织的并且可以工作。 然而,这会导致编写大量代码,对于 C#,...
TRY…CATCH是Sql Server 2005/2008令人印象深刻的新特性.提高了开发人员异常处理能力.没有理由不尝试一下Try.. Catch功能. * TRY 块 – 包含可能产生异常的代码或脚本 * CATCH 块 – 如果TRY块出现异常,代码处理流将...
我这人不善于背理论的教条,喜欢把书本上那些生硬的话跟现实生活中常见 的事物联系起来理解和记忆。 直白点儿说:值类型就是现金,要用直接用;引用类型是存折,要用还得先去银行取现。 声明一个值类型变量,编译器...