C :重构管理名称空间

C++: Refactoring managing namespaces

本文关键字:空间 管理 重构      更新时间:2023-10-16

我正在重构广泛使用的类。鉴于它的使用程度很高,我的意图是创建类的版本2。我将保持界面相同/相似(我被迫进行一些更改,否则会随着新的更改而变得丑陋],以便从旧班级转换为新班级变得容易。我们可以使用旧类将应用程序切换到一个新的类。

现在我不确定在这种情况下如何管理名称/名称空间。

eg:

目前,可以说,该类位于名称空间'app'

namespace app {
    class Important {
        ...
    };
}

我想保持课堂名称相同或非常相似,以使含义很清楚。

namespace app {
   // This looks okay (conveys the meaning), but is ugly.
   class Important2 {
      ...
   };
}
namespace app {
   namespace v2 {
       // I think this will be confusing. It will given a feeling that the v2 
       // applies to app namespace. There are lot of classes under 'app' 
       // namespace which are not changed.
       class Important {
       };
   }
};

有更好的方法吗?

谢谢!

我认为您问题的最佳解决方案是使用GOF工厂设计模式,其中您具有接口和许多实现,例如重要,重要2等。


然后,您可以告诉您的消费者很快就会贬值,但是编译器警告

您可以通过简单命名空间别名解决。示例可以在此答案中https://stackoverflow.com/a/41420638/781933,对于 switch On/off 方法(在每个项目基础上驱动迁移)。

)。 )

相反,如果您必须经过中间构图而不是完整的替换,则可以采用带有构图和内联命名空间的中间解决方案

您可以在Stroustrup的中找到一个特定的版本管理示例