公司标准:C#.NET vs VB.NET与.NET无关

时间:2009-06-02 13:04:27

标签: programming-languages standards

当我们考虑使用其他机构充实我们的开发人员时,我的旧工作不时会出现一个问题。如果你是一个.NET开发公司,如果你的开发人员用一种语言编写代码而不是另一种语言,那真的很重要。

我可能很开始像其他四百万人一样用Visual Basic方式回来,然后迁移到VB.NET。我们当时的另一位开发人员来自C背景并迁移到C#.NET。基本上他能用他的母语非常快速地编码,而且我能够在我的语言中这样做,因为我们的项目没有真正重叠,所以没有问题,直到我们的老板基本上说我们需要切换到C#...没有其他理由而不是标准化。

所以我认为问题的“主观”部分是,为了保持一致性而牺牲生产力是否更好?现在我应该量化这一点,说我们是一家小型商店,不到5位开发商,并且考虑到我们的大部分项目计划是如何在鸡尾酒餐巾纸上进行的,这不像我们很快就会购买6-Sigma,所以它不像'标准'这是一条艰难而快速的规则。

感谢。

11 个答案:

答案 0 :(得分:12)

C#肯定会成为微软的首选途径,选择一种所有开发人员只需根据以下事实选择一种语言是有意义的:如果开发人员在任务之间移动,使项目采用统一的语言(更不用说编码)惯例)将使每个参与者更容易维护这些项目。

答案 1 :(得分:3)

我认为挑选一个让每个人都参与其中是有意义的。生产力的牺牲将是短暂的,有能力的开发人员将迅速迁移。

一些优点:

  • 你最后一个VB开发人员和团队缩小规模......呃哦。
  • 其中一位开发人员退出,你必须接管他们的代码

答案 2 :(得分:3)

如果它有所帮助,我最近在我的博客上写了一篇文章,回顾我决定在VB.NET上使用C#标准化我们的开发商店,以及我的各种假设是如何做好的,并且事后的事情已经证明了我。

这是一个链接:“A Manager’s Retrospective on the C# versus VB.NET decision

至于你是否应该用一种语言标准化整个商店。我会说有一定的好处。最明显的一点是,当你在不同的项目上工作时来回切换会产生一些精神上的开销,每次都要重新适应自己。当然,如果你不得不经常这样做,它会更少,但为了证明额外的复杂性,必须有一些抵消的好处。

最终,我的建议是根据以下标准对其中一个进行标准化:
(1)如果你有一个大的VB代码库,那么在VB.NET上进行标准化是一个很好的论据 (2)如果其他条件相同,我会倾向于使用上述文章中提到的多种原因的C# (3)仔细考虑您当前团队的偏好以及您尝试招募的市场开发人员的普遍共识。语言选择对士气和招聘来说是一个大问题。

答案 3 :(得分:2)

我会说任何有用的东西。 VB.NET和C#使用所有相同的底层框架,因此您应该能够阅读彼此的代码,并通过一些谷歌搜索,您也应该能够修改它。

我说要追求生产力。如果用VB.NET或C#编写,客户最终会关心它。但是说你必须考虑可维护性。

答案 4 :(得分:2)

  

所以我猜是'主观'的一部分   问题是,它是否更好   牺牲生产力   一致性?

当然不是。一致性有什么好处呢?最终,一致性的目标是生产力。考虑到这一点,我建议,从长远来看,让每个人用一种语言编写代码都是最好的方法......总的来说,从长远来看,修改和维护代码的时间比编写代码花费的时间多得多。 ,我认为让人们花费一次加速时间比不断来回切换更好。

答案 5 :(得分:2)

  我们的老板基本上说我们需要   切换到C#...没有其他原因   比标准化。 (...)所以我想   问题的“主观”部分   是,牺牲是否更好   生产力的一致性?

当然不是。唯一的问题是这种“一致性”在未来生产力方面具有什么价值,因为生产力才是最重要的。 “一致性”本身并不是商业价值。它可能只会帮助您在未来实现更高的生产力。

必须平衡几个因素:

  • (+) 明天人们必须只维护一种语言,最流行的.Net语言:C#。 (见注1)
  • ( - ) 今天您必须学习C#,这是贵公司的费用,除非您在周末免费使用。当然,就成本而言,这是一个( - )。学习C#本身就很好,它只是有成本。
  • 学习C#后
  • ( - ) 今天,您或其他人必须将一个项目从Visual Basic .Net切换到C#。这有一个成本,取决于项目的LOC计数。此外,可能会引入错误,因此您需要重新运行单元测试,检查所有故障并将其解决。此外,您需要重复一些集成测试,以确保一切正常。

您无法分辨这些信息的余额结果。但无论如何,你不必告诉,因为你的老板可能有更好的信息并且已经做出了决定。你需要做的就是真正做到这一点。

注1:然而,这种推理危险地接近于“如果VB.NET不存在,世界会变得更好”,这可能是一个过于强烈的声明。在某些情况下,VB.NET或两种语言的混合可能是一个不错的选择。

答案 6 :(得分:1)

我们仍然是一个混合语言小组,我工作;然而,混合了一个目的。几乎所有与硬件相关的项目都是用C ++完成的(不是汇编,我知道:())几乎所有的Windows应用程序都是用C#完成的。

考虑到C#的受欢迎程度和易用性,我认为当他们获得新的,更环保的员工时,转向它是符合公司的利益。

答案 7 :(得分:1)

您如何将自己视为商店?

VB.NET在直接依赖Office的市场中很强大,也可能是客户端应用程序,而C#在服务器端和更大的应用程序中尤其强大。

可能不是关注您的选择,而是选择与商店的性质保持一致。

答案 8 :(得分:0)

如果可能的话,坚持单一的语言选择很重要。显然,如果您正在编写非托管C ++,或者有其他类似的场景,那么会有明显的例外。一旦你加速了,很多人都会对同质语言选择的效率产生影响。我所知道的大多数开发人员在切换语言时会遇到效率问题,即使他们内外都知道。在C#编写了几个月之后,如果我必须回到VB.NET来维护一些东西,那么我有一天会有意识地思考通常是自动的事情。它们是简单的东西,比如使用与进口,类型转换等。这不是你忘记它是如何工作的,而是你的思想想要按照你长期以来的方式做某事。很像旧的客厅技巧,将你的手臂推到门框上一分钟,然后将它们放在你身边。他们想要回去,因为这是你的大脑习惯发送的信号。

另一个非常重要的要点是,这个效率因素在代码审查中也很重要。如果您正在使用VB.NET并且必须查看C#,那么您将拥有相同的绊脚石。当然,您了解代码,但分析代码的速度或准确性与使用当前使用的语言时的速度或准确度不同。

还有一些额外的小问题。有些工具适用于一种语言而非另一种语言。例如,Resharper适用于VB.NET和C#,但如果您使用C#,它会提供更多的重构。此外,如果您组织中的某个人维护公司编码标准,那么如果只需要处理一种语言,那么对这些标准的更改就会变得复杂一半。

答案 9 :(得分:0)

我认为编码风格标准也是如此。开发团队选择使用3个空格而不是4个空格是否真的有一个原因?除了统一性以及使每个人的代码看起来都相同之外,这个决定并不是没有技术或业务优势所以当我在文件之间切换时,我的大脑不必调整到新的格式。

同样适用于C#和VB.net的统一性。将一个放在另一个上没有技术或业务优势(注意:我确定如果你看起来很难,你会发现一些非常模糊的东西)。但是,让每个人的代码统一有助于从一个项目转移到另一个项目,这样人们就不必在C#中思考,转而在VB.net中思考。

答案 10 :(得分:0)

使用.Net平台进行开发的一个优点是,您可以使用最能表达解决方案问题的语言进行开发。

任意规则IMO不应该阻止您使用F#或DLR语言,因为这些语言比C#或VB.Net等命令式语言更自然。

使用VB.Net与C#做出更难的决定因为语言非常相似但是如果你需要用XML做很多工作,那么VB.Net的XML文字可能有助于使代码更清晰,反之C#简洁的语法和对匿名方法的支持可能会使您的意图更加清晰。