2008-10-24 64 views
2

对于这个问题,代码库是一个ASP.NET网站,它有多个用C#和Visual Basic .NET编写的页面。主要的语言是C#和Visual Basic .NET网页,因为需要相同的功能,因此将其分解到项目中。它在页面后面的ASP.NET代码中可以使用多种语言吗?

是否应该花费时间来实际重写这些页面,包括再次执行测试和调试周期,还是将其视为可以接受?

回答

6

有您应该记住三点:

  1. 如果它不是”破不解决它。
  2. 团队化妆和熟练
  3. 编码标准和一致性

首先,就像许多人所说的,如果它不破,那么为什么要通过改变代码库的努力。即使在ASP.Net中运行.Net语言,也可能会在语言转换期间添加错误。其次,我将假设有一个合理的理由来分配项目并使用VB.Net而不是继续使用C#。这种语言变化背后的原因是什么?这些原因不再有效吗?考虑导致分歧的假设的有效性。

三,都是C#团队成员吗?如果几个团队成员不熟练,将所有代码迁移到C#可能会成为一种负担。

最后,我建议采用编码标准,并从这一点开始将所有新的开发集中在一种语言中。除了这些标准,你可能会考虑一个策略,规定如果你需要修改/修复VB.Net页面,这个页面应该被迁移到C#。

此时,VB.Net页面不再“不被破坏”,而且您很可能必须经过调试/测试阶段才能验证修复/更改。因此,您将增加迁移成本到任何错误修复。通过这种方式,您可以将代码慢慢迁移到C#而不会产生大量的一次性成本。

如果您不愿意在VB.Net页面上进行任何错误修复或更改时必须迁移页面,请注意这一点。您很可能没有时间或资源来完成所有VB.Net页面的迁移。由于大规模迁移需要更多时间,并且在迁移正在进行时,会明显要求您停止VB.Net页面上的所有工作/修复。这可能是一个指标,说明迁移到C#是否是满足业务需求的选项。

1

您可能不想这样做。 在这种情况下,可维护性将非常困难,因为团队通常拥有使用单一语言的专业知识。

我们在这里有使用C#写的一些页面和VB.Net其他项目。 建筑队维护这样的项目是困难的。

亲切的问候, 阿希什

+0

我不同意。 VB和C#之间的差异主要是语法。任何专业的.NET开发人员都应该能够处理这两种语言,即使他们只专注于其中的一种语言。 – DOK 2008-10-24 13:29:31

+0

我不同意你的不同意见。 :D因为差异主要是语法上的,所以你不会相信我们中的一个人在VB行尾加上分号或试图在C#中使用VB评论风格等等的次数。如果需要做的时间这个变化并不长,它值得。 – Totty 2008-10-24 13:33:43

+0

是的,差异在很大程度上是句法。 ...但仍然很难维持这样的项目。 这就是我的经验与一些项目。 – 2008-10-24 13:35:29

5

你所建议的是部分重写。

如果现有代码的功能或体系结构存在严重错误,我只能提倡重写。

C#优于VB并不足以证明IMO。

1

要回答第一个问题,是的,这是完全可以接受的,并得到Microsoft的支持。

你应该改变它吗?如果您的开发人员了解项目情况,那么我认为您很好,但是如果您开始发现无法处理VB的namspaces,引用或开发团队问题(不太可能)。然后我会考虑重写。

但是,如果代码在那里工作,它通常很难证明重写是正确的。

1

它得到了很好的支持。

对于页面来说没有区别。每个页面都单独编译。

对于App_Code目录中的代码,它基于每个文件夹编译。所以C#文件和VB.NET文件需要在他们自己单独的子文件夹中。这些子文件夹需要在web.config的编译部分注明,以便编译器知道以不同的方式对待它们。

<configuration> 
<system.web> 
    <compilation> 
     <codeSubDirectories> 
      <add directoryName="VB_Code"/> 
      <add directoryName="CS_Code"/> 
     </codeSubDirectories> 
    </compilation> 
</system.web> 

这里就可以了体面的链接。 Using VB.NET and C# in the App_Code folder

我发现的唯一缺点是Intellisense在两个App_Code子文件夹之间似乎不起作用。在intellisense页面虽然工作正常。

相关问题