【问题标题】:It the use of multiple languages in ASP.NET code behind pages acceptable? [closed]它在 ASP.NET 代码后面使用多种语言的页面可以接受吗? [关闭]
【发布时间】:2008-10-24 13:19:38
【问题描述】:

就本问题而言,代码库是一个 ASP.NET 网站,其中包含多个用 C# 和 Visual Basic .NET 编写的页面。主要语言是 C# 和 Visual Basic .NET 网页,因为需要相同的功能,所以在项目中分叉。

是否应该花费时间来实际重写这些页面,包括再次经历测试和调试周期,还是应该被认为是可以接受的?

【问题讨论】:

    标签: c# asp.net vb.net


    【解决方案1】:

    你应该记住三点:

    1. 如果没有损坏,请不要修复它。
    2. 团队构成和能力
    3. 编码标准和统一性

    首先,正如许多人所说,如果它没有损坏,那么为什么还要努力更改代码库。您可能会在语言转换期间添加错误,即使它们都是在 ASP.Net 中运行的 .Net 语言。

    其次,我将假设分叉项目并使用 VB.Net 而不是继续使用 C# 是有正当理由的。这种语言变化背后的原因是什么?这些理由不再有效吗?考虑导致分叉成不同语言的假设的有效性。

    第三,所有团队成员都精通C#吗?如果有几个团队成员不精通 C#,那么将所有代码迁移到 C# 可能是个负担。

    最后,我建议采用编码标准,并从此时起将所有新开发集中在一种语言上。除了这些标准,您可能会考虑一项策略,即如果您需要修改/修复 VB.Net 页面,则该页面应迁移到 C#。

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

    如果您因迁移页面以及 VB.Net 页面中的任何错误修复或更改而犹豫不决,请注意这一点。您很可能没有时间或资源来迁移所有 VB.Net 页面。由于大规模迁移将需要更多时间,并且明智地要求您在迁移过程中停止 VB.Net 页面上的所有工作/修复。这可能表明迁移到 C# 是否适合您的业务需求。

    【讨论】:

    • 有道理,被分叉到这个应用程序中的代码来自一个 VB.NET 应用程序并且被包含在主要的因为它是需要在应用程序中报告相同数据的几个复杂报告另一个。
    【解决方案2】:

    您的建议是部分重写。

    如果现有代码的功能或架构存在严重错误,我只能主张重写。

    在 IMO 中偏爱 C# 而不是 VB 的理由不够充分。

    【讨论】:

    • 我同意。如果它没有坏,就不要修理它。
    • 我不是从偏好的角度来看这个,而是从一致性的角度来看 - 例如。所有 C# 代码或所有 VB.NET 代码。
    • 我倾向于同意 Galwegian 的观点。拥有多种语言在功能上没有任何问题。如果有一些可量化的理由这样做(例如,你没有任何 VB 开发人员)那么也许,但就像那个人说的那样......“如果它没有坏,就不要修复它”
    【解决方案3】:

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

    我们在这里有一些项目使用 C# 为某些页面编写,而 VB.Net 为其他页面编写。 组建团队来维护此类项目很困难。

    亲切的问候, 阿什什

    【讨论】:

    • 我不同意。 VB 和 C# 之间的区别主要在于语法。任何专业的 .Net 开发人员都应该能够处理这两种语言,即使他们只擅长其中一种。
    • 我不同意你的不同意见。 :D 因为差异主要在于语法,所以您不会相信我们中的一个人在 VB 行的末尾放置分号或尝试在 C# 中使用 VB 注释样式等的次数。如果需要时间变化不长,值得。
    • 是的,区别主要在于语法。 ...但仍然很难维护这样的项目。这就是我在几个项目中的经验。
    【解决方案4】:

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

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

    但如果代码在那里并且可以工作,通常很难证明重写是合理的。

    【讨论】:

      【解决方案5】:

      它得到了很好的支持。

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

      对于 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 子文件夹之间不起作用。虽然在页面中智能感知工作正常。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-05-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-08-25
        • 2016-05-09
        相关资源
        最近更新 更多