Вы разрабатываете свои приложения Perl как модули CPAN?

Друзья также полезны для обратных вызовов. Вы могли реализовать обратные вызовы как статические методы

class MyFoo
{
private:
    static void callback(void * data, void * clientData);
    void localCallback();
    ...
};

, где callback вызовы localCallback внутренне, и эти clientData имеют Ваш экземпляр в нем. По-моему,

или...

class MyFoo
{
    friend void callback(void * data, void * callData);
    void localCallback();
}

то, Что это позволяет, для друга, чтобы быть определенным просто в cpp как функция c-стиля и не загромоздить класс.

Точно так же шаблон, который я видел очень часто, должен помещать весь действительно члены парламента, не занимающие официального поста класса в другой класс, который объявляется в заголовке, определенном в cpp и друге. Это позволяет кодеру скрывать большую сложность и внутреннюю работу класса от пользователя заголовка.

В заголовке:

class MyFooPrivate;
class MyFoo
{
    friend class MyFooPrivate;
public:
    MyFoo();
    // Public stuff
private:
    MyFooPrivate _private;
    // Other private members as needed
};

В cpp,

class MyFooPrivate
{
public:
   MyFoo *owner;
   // Your complexity here
};

MyFoo::MyFoo()
{
    this->_private->owner = this;
}

становится легче скрыть вещи, что нисходящий поток не должен видеть этот путь.

18
задан Community 23 May 2017 в 12:07
поделиться

3 ответа

В общем, да, я бы сказал, что это хорошая идея. Catalyst упрощает эту задачу, поскольку вспомогательный сценарий Catalyst.pl устанавливает базовую структуру для вашего веб-приложения, дополненную файлом Makefile.PL и т. Д.

Это означает, что вы упаковываете ваше приложение и развертываете его в сервер - это тривиально просто.

Изменить: я думаю, что исходное сообщение в блоге, о котором вы думали, было Напишите свой код так, как будто он идет на CPAN из Perlbuzz .

"Автор рассматривая код, который мы никогда не собирались выпускать в CPAN, как если бы мы это делали, мы получаем поддержку всей цепочки инструментов CPAN. Эта цепочка инструментов становится лучше с каждым днем ​​».

11
ответ дан 30 November 2019 в 09:25
поделиться

публикация вещей в CPAN означает ответственность. вам нужно предоставить хороший документ, дополнительную поддержку и другие. или не переходите на CPAN.

Спасибо

-4
ответ дан 30 November 2019 в 09:25
поделиться

Да, просто потому, что «модуль CPAN» устанавливает только очень либеральные методы. Я предпочитаю Module :: Install, думаю, и большинству здравомыслящих людей тоже. Чтобы запустить базовый дистрибутив с установкой модуля, я просто использую module-starter:

module-starter --mi --module "Foo :: Bar" --author "Evan Carroll" --email " foo@bar.comи добавьте публичный репозиторий в репозиторий Makefile.PL git: // github .... и начать кодирование.

Даже если вы не нажимаете на CPAN, module-install обеспечивает неплохую основу для хорошего модуля.

Другие преимущества: вы можете запустить make dist , получить tarball и очень легко разместить его на частном http-сервере, а затем просто указать клиенту или серверу установить с помощью cpanp http: // host / path . Вы также получаете все преимущества Module :: Install , он будет использовать dmake в Windows и загрузить dmake, если у вас его нет. Это довольно волшебно с кроссплатформенностью.

Здесь нет серьезных недостатков или даже заслуживающих внимания незначительных.

t push to CPAN, module-install обеспечивает неплохую основу для хорошего модуля.

Другие преимущества: вы можете запустить make dist , получить архив и разместить его очень легко на частном http-сервере, а затем просто скажите клиенту или серверу установить с помощью cpanp http: // host / path . Вы также получаете все преимущества Module :: Install , он будет использовать dmake в Windows и загрузить dmake, если у вас его нет. Это довольно волшебно с кроссплатформенностью.

Здесь нет серьезных недостатков или даже заслуживающих внимания незначительных.

t push to CPAN, module-install обеспечивает неплохую основу для хорошего модуля.

Другие преимущества: вы можете запустить make dist , получить архив и разместить его очень легко на частном http-сервере, а затем просто скажите клиенту или серверу установить с помощью cpanp http: // host / path . Вы также получаете все преимущества Module :: Install , он будет использовать dmake в Windows и загрузить dmake, если у вас его нет. Это довольно волшебно с кроссплатформенностью.

Здесь нет серьезных недостатков или даже заслуживающих внимания незначительных.

а затем просто скажите клиенту или серверу установить с помощью cpanp http: // host / path . Вы также получаете все преимущества Module :: Install , он будет использовать dmake в Windows и загрузить dmake, если у вас его нет. Это довольно волшебно с кроссплатформенностью.

Нет никаких серьезных недостатков или даже заслуживающих внимания незначительных.

а затем просто скажите клиенту или серверу установить с помощью cpanp http: // host / path . Вы также получаете все преимущества Module :: Install , он будет использовать dmake в Windows и загрузить dmake, если у вас его нет. Это довольно волшебно с кроссплатформенностью.

Здесь нет серьезных недостатков или даже заслуживающих внимания незначительных.

6
ответ дан 30 November 2019 в 09:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: