C ++: рефакторинг управления пространствами имен - PullRequest
0 голосов
/ 01 марта 2019

Я занимаюсь рефакторингом широко используемого класса.Учитывая, как широко он используется, я намерен создать версию 2 класса.Я буду держать интерфейсы такими же / похожими [я вынужден внести некоторые изменения, иначе это станет уродливым с новыми изменениями], так что переключение со старого класса на новый класс станет легким.И мы можем переключать приложения, использующие старый класс, на новый класс одно за другим.

Теперь я не уверен, как управлять именем / пространством имен в этом случае.

Например:

В настоящее время, скажем, класс находится под пространством имен '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 {

       };
   }
};

Есть ли лучший подход?

Спасибо!

1 Ответ

0 голосов
/ 01 марта 2019

Я думаю, что лучшее решение вашей проблемы - использовать шаблон gof factory design , где у вас есть интерфейс и ряд реализаций, например, Важные, Важные2 и т. Д.
Затем вы можете сказатьвашему потребителю, что вы скоро устареете Важно, но предупреждение компилятора

...