繁体   English   中英

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

[英]How to develop a standard (C# vs. VB.NET)

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

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

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

对于VB开发人员:

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

对于C#开发人员:

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

对彼此而言:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

让我明确一点,我并没有说任何关于VB.NET或者使用它的人。

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

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

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

这真的只是个人偏好,你认为团队最有成效的语言是什么。

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

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

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

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

我们的优先事项如下:

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

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

  1. VB.NET似乎比C#更冗长。 (例如:“ Dim var as MyClass”vs“MyClass var”)
  2. C#类似于C ++和Java。 VB.NET类似于......好吧,没什么。 (除非你算VB6 ...)
  3. 尝试在VB.NET中制作一个不规则的数组 我赌你。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM