出于这个问题的目的,代码库是一个ASP.NET网站,它有多个用C#和Visual Basic .NET编写的页面。主要语言是C#和Visual Basic .NET网页,它们分叉到项目中,因为需要相同的功能。
是否应该花时间实际重写这些页面,包括再次进行测试和调试周期,或者认为是否可以接受?
答案 0 :(得分:6)
您应该记住以下三点:
首先,就像许多人说如果它没有被破坏,那么为什么要经过改变代码库的努力。您可能会在语言转换期间添加错误,即使它们都是在ASP.Net中运行的.Net语言。
其次,我将假设有一个有效的理由来分支项目并使用VB.Net而不是继续使用C#。这种语言变化背后的原因是什么?这些原因不再有效吗?考虑导致分叉为不同语言的假设的有效性。
第三,所有团队成员都能胜任C#吗?如果几个团队成员不熟练,那么将所有代码迁移到C#可能会带来负担。
最后,我建议采用编码标准,并从现在开始将所有新开发重点放在一种语言中。除了这些标准,您可以考虑一项策略,规定如果您需要修改/修复VB.Net页面,则应将此页面迁移到C#。
此时VB.Net页面不再“未被破坏”,您最有可能必须经历调试/测试阶段才能验证修复/更改。因此,您要将迁移成本添加到任何错误修复中。通过这种方式,您可以将代码慢慢迁移到C#,而不会产生大量的一次性费用。
如果您不得不花费必须迁移页面以及任何错误修复或更改VB.Net页面,那么请注意这一点。您很可能没有时间或资源来迁移所有VB.Net页面。由于大规模迁移需要更多时间,并且明智地要求您在迁移过程中停止VB.Net页面上的所有工作/修复。这可能是一个指标,根据您的业务需求,是否可以选择迁移到C#。
答案 1 :(得分:5)
你的建议是部分改写。
如果现有代码的功能或体系结构存在严重错误,我只能提倡重写。
对C#over VB的偏好不足以证明IMO。
答案 2 :(得分:1)
您可能不想这样做。 在这种情况下,可维护性将非常困难,因为团队通常拥有单一语言的专业知识。
我们这里有项目使用C#为某些页面编写而VB.Net用于其他页面。 建立团队来维护这些项目很困难。
亲切的问候, 阿希什
答案 3 :(得分:1)
要回答第一个问题,是的,它完全可以接受,并得到微软的支持。
你应该改变吗?如果你的开发人员了解项目情况,那么我认为你很好,但是如果你开始看到无法处理VB的namspaces,引用或开发团队的问题(不太可能)。然后我会考虑重写。
但是如果代码在那里工作,通常很难证明重写是正确的。
答案 4 :(得分: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工作正常。