代码之家  ›  专栏  ›  技术社区  ›  KDrago

对Visual Studio NewB的建议。重用现有类库?

  •  1
  • KDrago  · 技术社区  · 11 年前

    我正在开始我的第一次Visual Studio项目体验。我的任务是使用现有解决方案的源代码,并通过向所述解决方案添加新项目来扩展其功能。

    我的问题是,除了小的更改之外,大部分现有的源代码都会被复制。我不熟悉Visual Studio,所以我不知道有什么可以节省时间的技术。

    在我看来,如果我可以复制一些现有的类,并简单地将它们的重命名副本添加到项目中,我可以编辑这些副本,而不会混淆项目中正在工作的部分,那将是理想的选择。

    我应该补充一点,我需要这么做来复制几乎相同的代码的唯一原因是,如果我在自己的项目中使用早期项目中使用的命名约定作为依赖项,那么它们将极具误导性。

    如果我开始将现有类的名称空间更改为更通用的名称空间,这样我就可以使用它们,而不会让其他人混淆我的代码,那么Visual Studio会自我维护吗?

    如果我的NEW类有一半的代码是相同的,那么在Visual Studio中有没有一种简单的方法来复制OLD类?

    任何关于方法或惯例的建议都是非常受欢迎的。顺便说一句,我在Visual Studio 2012 Pro中工作。如果这对任何人都有帮助的话,这个项目大部分都是用C#编码的。

    1 回复  |  直到 11 年前
        1
  •  1
  •   aybe    11 年前

    你的问题很模糊,为了得到更好的答案,你应该举一个你所面临问题的具体例子。

    以下是我到目前为止的想法,它们可能会给你一个建议:

    上面描述的一些提示示例:

    using System;
    using MyFamiliarNamespace = MyScaryNamespace;
    using MyFamiliarClass = MyScaryNamespace.MyScaryClass;
    
    namespace ConsoleApplication1
    {
        internal class Program
        {
            private static void Main(string[] args)
            {
                var @class = new MyFamiliarClass();
                @class.HelloWorld();
            }
        }
    
        public static class MyScaryClassExtensions
        {
            public static void HelloWorld(this MyFamiliarClass myScaryClass)
            {
                Console.WriteLine("Hello world !");
            }
        }
    }
    
    // Consider this part being in another assembly
    namespace MyScaryNamespace
    {
        public class MyScaryClass
        {
        }
    }
    
    • 在我看来,你不应该复制类,虽然这似乎是最简单的事情,但迟早会让事情变得更加混乱,记住 Don't repeat yourself 在编程中。

    • 重命名名称空间:除非您有这样的工具 Resharper ,手动操作可能会非常痛苦,而且容易出错

    • 复制对象(或类似的):如果你绝对必须复制对象,那么使用类似的东西 Automapper 在某些情况下可以成为实时保护程序。

    请在您的问题中提供更多详细信息,以便我们提出更好的答案。

    给它一个更好的标题可能也是明智的。