`

Why .NET Sucks?

阅读更多

写此文纯粹为了回复.NET不死,为什么企业招聘都要java? 一文。从01年以来,.NET从最初的2000beta2一路凯歌猛进到了2008,Framework从1.0一下子跃进到了3.5,从3.5以来 wpf,wcf,wwf,Linq,ASP.NET MVC,我们的感觉是.NET很好很强大,什么都有。但是.NET的程序员怎么就越来越不值钱了呢?很简单的对比,在我原来所在的一个公司里,有java的项目也有.NET的项目,做Java的程序员待遇普遍比做.NET的高出一大截。就程序员本质来说其实并没有多大的区别,那么问题就只能在.NET本身上头来找,所以就有了本文:Why .NET Sucks?

第一,一种技术是否值钱,首先取决与市场价值,当然对于C#或者Java这类应用领域非常一致的商用语言来说,其实越难学的也就是工资越高的。越难学的工资越高这句话绝对是话糙理不糙。难学说明了人力成本中的培训成本会比较高,所以这类技术人员的工资确实就要高一些。那么.NET的超级工具,让我们开发起来超级方便的超级工具:VS.NET其实就是制约我们工资提升的最大障碍,老板会理直气壮的告诉你,会用VS.NET拖拖拉拉就能开发的程序员量产起来快得很,就这点工资你不老实干就开掉你换一个,你后头还有好几个找不到工作的.NET程序员供我选呢。

其二,.NET提供给我们的发展空间太狭窄了(或许是我眼光太狭窄),罗列一下之前我提到过的:wpf,wcf,wwf,Linq,ASP.NET MVC,微软把什么都做了,留给我们的除了傻乎乎的拿起linq,wcf,wwf去吭叱吭叱的码格子堆代码,还剩下些什么呢?架构设计?那是少数人的事情毕竟也轮不到程序员。做业务分析?那也是少数派报告。不可能一个项目从头开始全部手写代码吧?这样是不是活回去了?java程序员从Struts到Spring到Hibernate可谓武装到了牙齿。整套下来还不要钱,觉得Hibernate不合适还可以换ibatis,apache下头一大队候补的佳丽,可谓是后宫佳丽3千,试问.NET又能够靠什么让六宫粉黛无颜色呢?前有JAVA的堵截,后头还有ROR,Python,PHP,一大群追兵,从标榜自己开发起来不是一般得快的ROR(不知道沉得是否也快),到标榜自己跑起来飞快的Python(豆瓣的神话造就了Python的急速传说),还有标榜自己光膀子不怕穿鞋,完全免费的PHP。再换句话说,我们就坚定不移的跟着微软走吧,那么除了拿着VS.NET做网站,我们还剩下了些什么事情做呢,那就怪不得人家招JAVA的人多了,用JAVA做工作流中间件的可以卖钱,你用.NET试试,人家直接跟你说我们用WWF了,还用花钱用你的?做个ORM,MVC框架能卖钱?到处都是免费的,微软自带的,绝对没有任何一个开发企业会为了ORM还是MVC什么的花一分钱,要用都用开源的,所谓微软这种大包大揽的行为极大的打击了开源团队的积极性,MonoRails还没说要收钱呢,微软就忙不迭的搞了个自己的MVC框架出来。看着Java下第三方厂商的中间件热火朝天的时候,还真不知道我们应该在.NET下做点什么能卖钱的。

 

其三是我个人多年来在使用.NET的时候的积怨,其实我到现在为止都挺厌恶微软给.NET设计的API,太恶心,尤其是Drawing下边的哪些API流露出浓重的MFC的味道。而且异常处理的机制也异常的混乱,既然有了异常处理的机制就用异常来解决问题嘛,结果有的通过返回bool来提示错误,有的通过错误标示的参数来返回错误,异常也没有声明的机制,结果很多时候在使用一些类的时候根本不知道有哪些异常需要处理,很多新手就很笼统的给个Exception了事,那么这个异常处理的机制还有什么用呢?习惯了JAVA的声明式异常之后会很迷惑于这种模糊的方式。

 

还有一个很搞笑的地方就是异常的抛出:throw ex,throw,throw new XXException("error",ex);一个会中断异常的堆栈,一个不会另一个也不会,这不是多此一举么,简直就是茴香豆的回有四种写法。直接让throw ex不会中断异常堆栈就行了何必还要多此一举呢?

-------------------------------------------------------原文------------------------------------------------------------------------------------

还有一个很搞笑的地方是,你在捕获到一个异常的时候还不能直接把它抛出去,还要new一个异常,把捕获到的异常作为InnerException包裹一次后才能抛出去,不然在调试的时候就跟踪不到真正出现错误的地方而是在直接抛出的那个地方中断了。

-----------------------------------------------------------------------------------------------------------------------------------------------

都到了3.5了都还没有提供对DynamicProxy的支持,结果现在.NET下的AOP看起来都还是那么怪异,实现起来也麻烦。

 

其实发了很多牢骚,说.NET Sucks也不过是气话,我们无法否认.NET是一个伟大的开发平台,无法否认微软是一个伟大的公司,不过.NEt再伟大,得到利益的始终是微软而不是广大的开发人员而已。

 

 

分享到:
评论

相关推荐

    大师品软件_Why Software Sucks

    《大师品软件_Why Software Sucks》是一本深入探讨软件设计缺陷和用户体验问题的书籍,由David S. Platt撰写。这本书旨在揭示为什么某些软件在使用过程中让人感到困扰,并提出改善软件设计的策略。作者Platt是一位...

    Why.Software.Sucks

    Any book is the product of a team effort. In this one, I've had an out- standing supporting cast. Everyone at Addison-Wesley understood and got behind the concept of a book for the users of ...

    itsucks-0.4.1开源爬虫

    【itsucks-0.4.1开源爬虫】是一个针对初学者友好的网络爬虫工具,它的出现使得没有编程背景的用户也能轻松进行数据抓取。这个最新版本的itsucks,不仅提供了完整的爬虫功能,还引入了一个简洁的图形化用户界面(GUI...

    itsucks-0.4.1.zip

    【itsucks-0.4.1.zip】是一个包含开源Java Web Spider项目的压缩包,这个项目被称为itSucks。itSucks的设计目标是帮助用户轻松构建网络爬虫,它使用了Web机器人技术,允许用户通过定义下载规则来抓取网页内容。项目...

    信息安全_数据安全_Why_the_role_of_CISO_sucks_and_w.pdf

    信息安全_数据安全_Why_the_role_of_CISO_sucks_and_w 信息安全研究 金融安全 安全人才 安全对抗 法律法规

    itsucks开源代码

    爬虫源码,开源 java 很好 强大 可扩展

    why-your-test-suite-sucks

    标题“why-your-test-suite-sucks”暗示了我们讨论的主题是关于测试套件存在的问题以及如何改进它们。测试套件是软件开发过程中的重要组成部分,它确保代码的质量、稳定性和可靠性。然而,当测试套件出现问题时,...

    魏猷君:关于Coder&Code那些事儿

    #### 二、关于Code:Why Your Code Sucks? 好的代码不仅仅是实现功能那么简单,它还需要具备可读性、可维护性和可扩展性等多方面的要求。魏猷君提出了判断代码好坏的一些标准: 1. **功能性**:如果代码不能正常...

    Atc Sucks-crx插件

    【Atc Sucks-crx插件】是一款针对英文用户的浏览器扩展程序,主要目的是表达用户对“ATC”(可能是某个网站、服务或功能的缩写)的不满情绪。这款插件由开发者创建,用于向用户展示ATC存在的问题,或者提供某种方式...

    Smooth Scroll Sucks-crx插件

    因此,【Smooth Scroll Sucks-crx插件】致力于让浏览器的滚动条重获自由,释放用户在浏览时可能遇到的困扰。它通过禁用页面上的平滑滚动特效,使鼠标滚轮和触摸板的操作更加直接,使浏览体验更接近传统习惯。 现代...

    Vegandale Sucks-crx插件

    【Vegandale Sucks-crx插件】是一款专为英文用户设计的浏览器扩展程序,主要功能是替换网络上关于“Vegandale”的相关信息,将其转化为“Gentrified Parkdale”。这款插件针对的是那些可能对“Vegandale”这一名称...

    rabbit sucks!-crx插件

    【标题】:“rabbit sucks!-crx插件”是一个针对特定网站或应用的浏览器扩展,其主要功能是优化用户界面,提供更加个性化的浏览体验。这个插件的名称可能具有一定的幽默感,暗示它可以帮助用户摆脱某些他们不喜欢的...

    IE Sucks-crx插件

    IE SUCKS这么糟糕,实际上是有趣的观看失败! IE样式信息条在页面中的障碍码时发光。 无广告! Internet Explorer是一个浏览器的F ****笑话,并字面上持有进步! 在逐步淘汰之前庆祝最终几天,用IE吸收插件。 每当...

    itsucks:http

    ItSucks 网络爬虫 描述 这个项目是一个具有下载(和恢复)文件能力的java网络蜘蛛(网络爬虫)。 它还可以使用正则表达式和下载模板进行高度定制。 所有后端功能也可在单独的库中使用。 官网 执照 本地开发使用 将 ...

    kevingreen.sucks

    【标题】"kevingreen.sucks" 是一个网站项目,基于 "Simple Next App" 构建,主要用于表达对个人或事物的不满或者批评。在互联网上,".sucks" 域名通常被用来创建一个平台,让人们可以公开讨论他们认为有问题的事物...

    DuPont Sucks FTP-开源

    DuPont Sucks FTP(DPS-FTP)是一个开源的FTP客户端工具,专为用户提供便捷的文件传输服务。这个项目的名称“DuPont Sucks FTP”可能源于一种幽默或反讽的表达,暗示它并非由杜邦公司开发,而是由社区驱动的独立项目...

    your-band-sucks-v2:通过不良专辑封面分享音乐

    【标题解析】:“your-band-sucks-v2”很可能是一个音乐相关的项目或应用,可能是由开发者创建的一个幽默或者讽刺性的音乐分享平台。"v2"表示这是项目的第二个版本,通常意味着在原有基础上进行了改进和优化。 ...

    IE吸盘「IE Sucks」-crx插件

    使用IE Sucks插件庆祝淘汰前的最后几天。 每当遇到旨在帮助Internet Explorer像老人一样上楼的代码时,我们都会像过去一样发出经典的IE信息栏。 您知道,这意味着您只有更多无用的废话可以破坏您的浏览器,除非这次...

    sucks:用python制作的小CRUD

    标题中的“sucks:用python制作的小CRUD”表明这是一个使用Python编程语言开发的简单创建、读取、更新和删除(Create, Read, Update, Delete,简称CRUD)应用程序。CRUD是数据库操作的基础,是任何数据管理系统的基石...

    admiral-sucks:Chrome扩展程序旨在消除Admiral非常邪恶的Adblock Recovery:angry_face_with_horns:

    ,解压缩并将admiral-sucks文件夹拖至chrome://extensions Chrome扩展面板。 为什么? 是一家通过帮助网站将其内容货币化而获利的公司。 它们提供多种服务,但非常令人讨厌的是AdBlock Recovery :首先,它们向网站...

Global site tag (gtag.js) - Google Analytics