8
2192

Привет.

В модуле Business::CPI вышла путаница с использованием пространства имён. Она писана в соответствующем баге на GitHub.

Вкратце суть в следующем. Есть базовый модуль драйвера Business::CPI::Gateway::Base и базовые модули для различных сущностей используемых драйвером Business::CPI::Base::Buyer, Business::CPI::Base::Card и т. п. (Уже тут видно, что единый стиль именования не выдержан.) Далее конкретный драйвер с именем, допустим, MyDriver предлагается размещать в модуле Business::CPI::Gateway::MyDriver, а вот если нужно отнаследовать другие выше названные сущности, они попадают в Business::CPI::MyDriver::Buyer и т. д.

Как бы вы организовали именование модулей? Желательно при этом не засорять пространство имён Business::CPI.

  • vti
    2015-02-04 21:48 #

    Мне кажется, что удобнее придерживаться компоненто-подобной системы, такой как Business::CPI::MyDriver::*, но насколько я вижу из обсуждения тикета, сошлись на использовании другого namespace ;)

    или CTRL+Enter формат
  • vti
    2015-02-05 09:04 #

    Еще интересный вопрос насчет фабрик. Например, есть у нас такая иерархия:

    ├── Foo
    │   ├── Bar.pm
    │   └── Base.pm
    └── FooFactory.pm

    Тут проблема, что фабрика реализована как обычно require "$namespace\::$class". И поэтому можно создать экземпляр Base. С этим, конечно, можно жить, но несколько раздражает. Пока что я пробовал нечто вроде:

    ├── Foo
    │   └── Bar.pm
    ├── FooBase.pm
    └── FooFactory.pm

    Но оно как-то не интуитивно. Можно, конечно, в фабрику добавить проверку на Base...

    А может все это бред и не стоит заморачиваться :D

    или CTRL+Enter формат
Чтобы ответить, залогиньтесь или зарегистрируйтесь.
  • @user
  • _italic_

    italic

  • **bold**

    bold

  • [PP](http://pragmaticperl.com)

    PP

  • <http://pragmaticperl.com>

    http://pragmaticperl.com

  • module:Plack

    Plack

  • release:URI

    URI

  • author:VTI

    VTI

  • `my $foo = 'bar'`
  • ```
    my $multi;
    $line;
    ```