【发布时间】:2008-10-24 13:19:38
【问题描述】:
就本问题而言,代码库是一个 ASP.NET 网站,其中包含多个用 C# 和 Visual Basic .NET 编写的页面。主要语言是 C# 和 Visual Basic .NET 网页,因为需要相同的功能,所以在项目中分叉。
是否应该花费时间来实际重写这些页面,包括再次经历测试和调试周期,还是应该被认为是可以接受的?
【问题讨论】:
就本问题而言,代码库是一个 ASP.NET 网站,其中包含多个用 C# 和 Visual Basic .NET 编写的页面。主要语言是 C# 和 Visual Basic .NET 网页,因为需要相同的功能,所以在项目中分叉。
是否应该花费时间来实际重写这些页面,包括再次经历测试和调试周期,还是应该被认为是可以接受的?
【问题讨论】:
你应该记住三点:
首先,正如许多人所说,如果它没有损坏,那么为什么还要努力更改代码库。您可能会在语言转换期间添加错误,即使它们都是在 ASP.Net 中运行的 .Net 语言。
其次,我将假设分叉项目并使用 VB.Net 而不是继续使用 C# 是有正当理由的。这种语言变化背后的原因是什么?这些理由不再有效吗?考虑导致分叉成不同语言的假设的有效性。
第三,所有团队成员都精通C#吗?如果有几个团队成员不精通 C#,那么将所有代码迁移到 C# 可能是个负担。
最后,我建议采用编码标准,并从此时起将所有新开发集中在一种语言上。除了这些标准,您可能会考虑一项策略,即如果您需要修改/修复 VB.Net 页面,则该页面应迁移到 C#。
此时 VB.Net 页面不再“未损坏”,您很可能必须通过调试/测试阶段来验证修复/更改。因此,您将迁移成本添加到任何错误修复中。通过这种方式,您可以将代码缓慢迁移到 C#,而不会产生大量的一次性成本。
如果您因迁移页面以及 VB.Net 页面中的任何错误修复或更改而犹豫不决,请注意这一点。您很可能没有时间或资源来迁移所有 VB.Net 页面。由于大规模迁移将需要更多时间,并且明智地要求您在迁移过程中停止 VB.Net 页面上的所有工作/修复。这可能表明迁移到 C# 是否适合您的业务需求。
【讨论】:
您的建议是部分重写。
如果现有代码的功能或架构存在严重错误,我只能主张重写。
在 IMO 中偏爱 C# 而不是 VB 的理由不够充分。
【讨论】:
您可能不想这样做。 在这种情况下,可维护性将非常困难,因为团队通常拥有单一语言的专业知识。
我们在这里有一些项目使用 C# 为某些页面编写,而 VB.Net 为其他页面编写。 组建团队来维护此类项目很困难。
亲切的问候, 阿什什
【讨论】:
回答第一个问题,是的,这是完全可以接受的,并且得到 Microsoft 的支持。
你应该改变它吗?如果您的开发人员了解项目情况,那么我认为您还可以,但如果您开始看到无法处理 VB 的 namspace、引用或开发团队的问题(不太可能)。那我会考虑重写。
但如果代码在那里并且可以工作,通常很难证明重写是合理的。
【讨论】:
它得到了很好的支持。
对于页面来说没有区别。每个页面都是单独编译的。
对于 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 子文件夹之间不起作用。虽然在页面中智能感知工作正常。
【讨论】: