如何开发标准(C#与VB.NET)

时间:2009-10-05 21:12:26

标签: c# vb.net

所以,我不希望它在C#和VB.NET开发人员之间陷入激烈的争斗。这纯粹是从开发部门的角度出发。我们多年来一直是VB.NET公司,但这主要归功于我们雇用的人。由于我们吸引了2位专攻C#的人,因此这项要求最近已经不再适用了。在转换为这家公司的VB.NET之前,我曾经是一名C ++ / C#人。

那么,对于每个必须处理这个问题的人来说,无论是在招聘的基础上还是在可维护性的基础上:你如何处理未来选择的标准化语言?我倾向于推动C#,因为这将使3个坚实的C#开发人员在这里。但只是好奇每个人对此的看法。

12 个答案:

答案 0 :(得分:15)

作为在混合商店工作的人,使用两者并不难。但它有一个标准,可以更容易地来回移动代码。以下是您的标准的一些想法:

对于VB开发人员:

  • 在新代码中禁用旧的vb6样式函数。我在谈论字符串和其他函数(Len,InStr,Replace,UBound等)。转换运算符(CInt,Cstr等)仍然可以,因为它们是语言运算符,但更喜欢Convert.To___()函数,以便于转换到C#和从C#转换。
  • 需要Option StrictOption Explicit。你会放弃一些动态类型的酷炫,因为它是一个强烈的建议要求,但是值得保持代码与C#平价。
  • 标准化'+'与'&' for string concatenation(如果你还没有使用StringBuilder)
  • 首选AndAlsoOrElse优先于AndOr

对于C#开发人员:

  • 禁止仅根据具体情况而有所不同的名称。这尤其包括与类型名称(SomeType sometype = ...)基本相同的名称。告诉他们使用_前缀代替(而不是“m_”)。无论如何你应该这样做,但在混合商店中这一点尤其重要,因为在VB中使用该代码将更难。

对于两者:

  • 禁止ArrayLists和其他非泛型集合(因为它们不仅无论如何都是邪恶的,但VB和C#处理所有必需的转换非常不同,即使选项严格要求CType)

如果你这样做,两组代码之间几乎没有真正的区别,你已经迈出了教导VB开发人员像C#开发人员一样思考的第一步。

答案 1 :(得分:9)

如果您有很多已经用特定语言编写的代码,请选择该语言。

否则,如果你有更多的开发人员精通一种语言而不是另一种语言,那就更喜欢这种语言了。

否则,更喜欢C#(它通常更受欢迎,而且功能方面它们没有足够的差别,只能对功能做出有意义的选择。)

答案 2 :(得分:8)

在之前曾在VB中编写过关键任务应用程序的客户端,他们开始发现找到VB程序员而不是C#更加困难。

所以他们决定开始将他们的应用程序切换到C#。

与大多数IT / Dev问题一样,答案取决于它。如果您的部门中有更多人使用VB,那么请使用VB。我不认为其中一个比另一个好得多。

答案 3 :(得分:5)

您提出的问题实际上非常重要,而且有太多人会告诉您语言选择只是个人偏好。但是你已经知道,从组织的角度来看,这不是真的。选择一套标准的框架,语言,工具等是一项重要的商业决策。

您的程序员应该能够使用任何一种语言,只需要一点时间,鼓励,也许可以进行一些培训。 C#和VB很接近,没有明显的技术理由可以选择其中一个......

所以我的建议是根据业务原因选择您组织的语言。如果雇用C#人员更容易,或者如果你发现他们往往拥有更好的技能组合,你可以为C#获得一分。如果您为客户编写代码,并且这些客户更喜欢C#可交付成果,那么为C#评分另一个。如果VB中有现有代码,则为VB获得一分。

这应该是一个非常简单的细分......只是忽略技术原因,专注于语言选择如何影响您的业务,包括招聘,培训,交付给客户的能力等。

答案 4 :(得分:5)

如果您的公司采用C#有一个理由,那就是lambda运营商。如果没有VB.NET中lambda运算符的完全支持,一些最好的工具就会变成残缺或DOA。例如:Fluent NHibernate,StructureMap等。

答案 5 :(得分:4)

几年前,我们对c#进行了标准化,因为c#似乎在认真的开发人员中有更多的追随者。

让我明确一点,我并没有对VB.NET或使用它的人说任何坏事。

答案 6 :(得分:3)

这完全取决于您拥有的开发者池。

答案 7 :(得分:3)

  1. 与一些当地招聘人员交谈,了解您所在地区的可用技能组合,如果您雇佣更多开发人员。可用的内容应该会影响您的选择。
  2. 确保您的开发人员可以使用您当前的代码库,无论语言是什么
  3. 询问您的开发人员的偏好,因为他们可能会决定与公司一起继续使用该技术。
  4. 查看特定行业中对这些语言的支持。例如,一家律师事务所可能需要大量的MS Office和VBA集成。使用VB.NET可能会带来交叉培训的好处。或者您可能在使用大量基于C ++,C或Java的工具的行业中。对于那些程序员来说,使用C#可能更自然。
  5. 了解您使用这些语言提供的培训资源。如果您可以获得针对某种特定语言的更多或更便宜的培训,您可能希望支持它。
  6. 开始考虑你的计划,以便过渡到另一种语言。即使你今天标准化,从现在起5年后呢?还是10?语言发生变化,需要改变。

答案 8 :(得分:2)

在纯粹的功能基础上,它们可以接近两种语言。 VB.NET倾向于获得更多的COM交互性并具有文字XML - 但C#很快就会得到一些。

这实际上只是个人偏好以及您认为团队效率最高的语言。

答案 9 :(得分:1)

听起来你已经有了一个标准 - VB.NET。也许你很想进入C#而不是感兴趣。

将一半的系统用VB编写,一半用C#编写是没有意义的 - 尽管根据组织的性质,这可能不适用。但一般来说,组织不应轻易采取这些改变。

如果我是你(你有兴趣自己转向C#)那么我会推动C#,但如果我是公司,那么我需要一个很好的理由来介绍这种新的复杂性,成本和价格。管理问题。

答案 10 :(得分:1)

我们最近遇到了同样的问题。我们实际上只是根据原始项目的开始编写代码。来回切换非常容易,特别是使用Visual Studio(当我开始输入“bool myvar ...”时,它总是“提醒”我如果我在.vb文件中,那么做错了。

我们的优先事项如下:

  • 如果我们已有此项目/客户的代码
  • ,请使用现有语言
  • 使用客户喜欢的语言(如果他们关心)
  • 否则使用C#(这只是因为当您尝试查找代码段以快速解决某些问题时,C#中有更多示例)

答案 11 :(得分:-1)

有充分理由选择一种标准而不是另一种标准应该是指导因素。使用这些:

  1. VB.NET似乎比C#更冗长。 (例如:“ Dim var as MyClass”vs“MyClass var”)
  2. C#类似于C ++和Java。 VB.NET类似于......好吧,没什么。 (除非你算上VB6 ......)
  3. 尝试在VB.NET中创建ragged array。我敢说你。