我问这个问题是为一家拥有70%到75%VB.NET开发者社区的公司工作的人.我想说80%的开发人员不知道OOD模式是什么.我想知道这对我公司的开发工作的健康状况是否最好?
我正在看标签计数:
https
:
//stackoverflow.com/tags 目前有:12175 .NET问题
18630 C#问题
2067 VB.NET问题
检查亚马逊,似乎有:
51 C#Wrox书籍
21 VB.NET Wrox书籍
在CodePlex上有:
979个项目标记为C#
136项目标记为VB.NET
如果你想成为一名VB.NET开发人员,肯定会有更少的材料需要学习.什么是公司的标准化VB.NET和雇用VB.NET开发人员的优势?微软如何回答这个问题?
只有两个论点:
如果您为一家完全标准化VB.NET的公司工作,您是否可以发布一个答案,解释他们为何做出这种选择的实际或技术原因?
更新:
更多统计数据 - O'Reilly Radar
2008年计算机图书市场状况,第4部分 - 语言
Joe*_*orn 14
我们在VB.Net上没有标准化,我经常不得不在VB.Net和C#之间来回走动.我很不寻常,因为我来自C/C++背景,知道C#,但实际上更喜欢VB.Net(我非常不喜欢vb6/vbscript).
我说这一切都是因为记住VB6不是VB.Net很重要.这是一种全新的语言,IMO确实应该站在C#旁边.我真的很讨厌 vb6,但我几乎立刻就爱上了VB.Net.但是,VB.Net确实从VB6继承了一些东西,而不仅仅是语法风格.我说的是声誉,这不是完全应得的.但我也在谈论帮助创造声誉的开发人员基础.这似乎是你所经历的一部分.
考虑到这一点,看起来你主要是根据人气判断语言.并不是说这有什么不妥.对于更容易找到样本和社区支持的能力,有很多话要说.但至少我们称之为它是什么.如果这是你的衡量标准,那么VB.Net 肯定有足够的支持使其可行,并且利用C#样本并不难.
另外,我们还在工作的.Net 2.0.对于2.0,我绝对更喜欢VB.Net.我更喜欢语法,我喜欢它在C#上做其他一些事情的方式.但我在家里玩Visual Studio 2008.在2008年,我真的更喜欢C#lambda表达式语法.
关于你的两个论点:
我想添加的东西:似乎最近的一些C#功能实际上是为了让C#更像VB.静态类填充vb模块的概念空间.该var
关键字使变量的声明看起来更VB的暗淡.即将推出的动态关键字将允许vb风格的后期绑定.甚至属性,你可以说是"添加"到c#for 1.0,是vb之前已经拥有的东西.Net.
Rya*_*ner 11
我敢肯定大多数时候公司推出VB.NET的原因正如你所提到的那样 - 组织中的大量VB6,无论是代码库还是开发人员.请记住,ASP网站和VB6应用程序可以很容易地迁移到VB.NET.VB6到C#是一个不同的故事.
话虽这么说,在已经使用VB.NET公司工作过,有真的,你怎么做的事情和开发商谁差别很小的好奇习惯阅读的例子,书籍等在C#.将C#代码转换为VB.NET并不是很难,特别是如果你不是复制粘贴的话.
Cha*_*adD 11
作为一个VB.NET开发人员,这里是我不喜欢的C#,我的经验来自于阅读C#,而不是写得太多了:
1)没有编辑并继续.我已经看到了编辑和继续是一件坏事的论点,它鼓励了糟糕的编码习惯.这让我想起25年前我的项目经理告诉我,我对当时先进的调试器的热爱是一个"拐杖",它鼓励了糟糕的编程习惯.对不起,我当时没买,我现在不买.至少,优点胜过10:1的缺点.一旦C#获得此功能,您将会更加欣赏它,并且如果您不得不再次使用它,那么我将非常感激.
2)语言区分大小写.恕我直言,这是纯粹的邪恶.人们是否同意在同一范围内有两个变量只是按案例变化是不好的?如果是这样,为什么要允许呢?呸.
3)背景编译,因此错误的设计时反馈更好.混合的祝福,因为这会降低IDE的速度.但是在2008年,性能更好,可能节省时间.当然,这不是语言本身的因素,只是开发环境.
4)大括号{} {}.让我想起我的LISP时代,你可以告诉其他程序员的LISP程序员:他们是那些用手指在屏幕上试图匹配parens的人.
我发现以下VB代码更容易阅读,并且不太可能包含错误.
If condition1 then
truestatement1
truestatement2
else
falsestatement1
falsetatement2
end if
If (condition1) then {
truestatement1;
truestatement2;
} //if (cond)
else
{
falsestatement1;
falsetatement2;
} //else (Condition)
Run Code Online (Sandbox Code Playgroud)
所有那些缺少自动缩进的大括号只是乞求编译时或运行时错误.并且随着嵌套ifs变得复杂,大括号只会添加它.代替C#示例中的4个大括号,VB代码只有一个END IF语句,但C#程序员注释喜欢添加关于大括号是哪个块的可选注释终止.
VB代码是自我记录,输入较少 - 当您输入IF条件行时,IDE甚至会为您添加END IF.所以,最后,我错过了C#-aficionados声称的简洁/好处.将}
可能比更简洁End If
,但我暗示整体结构过于复杂.
当然,这一切并不是什么大不了的事,但作为新手C#编码器,我觉得搞乱嵌套条件比使用VB要容易得多.
要学会成为优秀的VB.NET程序员,你不需要从VB.NET资源中学习它从C#资源学习是完全没问题的.如果您甚至无法将C#代码转换为VB.NET,那么无论如何都会遇到更大的问题.
几乎所有体面的+ VB.NET程序员都可以阅读并正确地编写C#,因为你刚刚说过的话,因为否则你无法轻易学习新东西.
最后,那些垃圾的人,不是垃圾,因为他们是VB.NET程序员,只是VB.NET很容易编码,这不是一件坏事!还有人说,这些人中的大多数来自经典ASP和VB6背景,这些都是真正的低门槛语言.一个星期后,任何体面的计算机用户都可以使用这些语言进 但是大多数C#开发人员都来自Java和C/C++背景.特别是Java方面有很多OO.毕竟特别是C不容易学习,大多数人要么在学校学习,要么在漫长的课程中学习,或者从一堆书中学习.
当谈到为什么公司使用VB.NET时,主要是因为遗留原因.另外一些从VB6跳过.NET 1.0的公司认为VB.NET将成为主要语言,经过几年的发展,这是一个很大的错误.
不是寻找参数,而是作为一个旧的VB.NET粉丝:
3.With
声明,Handles
声明,Module
声明,XML文字,不区分大小写......
4.My
命名空间,Microsoft.VisualBasic
命名空间,所有"糖衣"
5.后期绑定支持和COM组件的互操作性
6.嗯......(指头交叉)可读性?
如上所述,我不是要争论,而且我是C#的忠实粉丝,但只是在公司中有VB6程序员可以在VB上进行标准化.
例如,如果您在C#中进行标准化,并且您的业务依赖于许多COM组件,则COM互操作性很容易成为"显示阻止"...
并且提到的糖衣支持相当大(我一直都很想写C#代码).我觉得VB.NET团队提供的工具支持比C#团队更多,而C#团队则专注于更多的语言功能.
我目前正在与正在进行VB.NET标准化的客户合作.
主要原因是,正如您所提到的,大多数员工拥有10年以上的VB和COM经验.
他们觉得转向VB.NET最有意义的是作为职业道路,尽管他们很清楚他们现有的知识库很少能够在未来得到充分利用.
鉴于这一事实,他们还考虑转向C#,这实际上似乎是当今.NET平台上使用最多的语言.然而,鉴于他们为了开始使用.NET而必须学习的大量新知识,他们更喜欢使用熟悉的synthax语言.
在我看来,这证明了VB.NET的目的.这有助于将世界上大量的VB开发人员带到.NET中,使他们能够使用"感觉"熟悉的语言.
此外,VB.NET内置的向后兼容层使得可以将用VB编写的现有(大型)应用程序一次一个地移植到新平台,同时保持它们运行.
我必须继续使用VB.net的唯一参数是:
它是愚蠢的,创建一个区分大小写的语言之后的第一件事是创建一个最佳实践"不要使用相同的变量名称与不同的情况下"
我知道他们想要复制Java区分大小写,但实际上是一个愚蠢的决定.