Что за и против использования являются двумя различными стилями программирования CGI.pm с Perl?

Я нахожусь в сети, Пишущей сценарий класса в школе, и работаю над своим первым присвоением. Я склонен переусердствовать вещи и копаться глубже в моем предмете, чем, что требуется в моих классах. Прямо сейчас я исследую CGI.pm, чтобы сделать мои Запросы HTTP, и он говорит, что существует два стиля программирования для CGI.pm:

  • Объектно-ориентированный стиль
  • Функционально-ориентированный стиль

Если я не пропустил четкий ответ или не достаточно хорошо осведомлен для различения ответа для меня из документации, предоставленной в: http://perldoc.perl.org/CGI.html я просто не знаю то, что за и против имеют использование этих двух различных стилей.

Причем это сказан, что за и против использования являются двумя различными стилями? Какой является более наиболее часто используемым? До использования объектно-ориентированного стиля это говорит, что я могу только использовать один объект CGI в то время. Почему это?

Спасибо за всю Вашу справку. Вы все сделали учащуюся Информатику очень приятной, удовлетворение и вознаграждение за меня.=D

7
задан daotoad 16 January 2010 в 20:56
поделиться

2 ответа

за кулисами, CGI.PM делает то же самое, несмотря на стили. Функциональный интерфейс фактически использует секретный объект, который вы не видите.

Для многих мелких проектов CGI вы, вероятно, никогда не понадобится более одного объекта CGI одновременно, поэтому функциональный интерфейс в порядке. Это может быть более распространенный стиль, но только потому, что большинство людей делают небольшие сценарии для очень специфических задач. Если у вас есть много других вещей, вы можете не понравиться CGI.PM импортировать длинный список (и он длинный) из имени функций в ваш скрипт. Некоторые названия функций могут столкнуться с этими другими модулями, которые хотите импортировать.

Я, однако, всегда использую объектно-ориентированный интерфейс. Мне не нужно беспокоиться о именных столкновениях, и это очевидно, где произошел любой метод, с тех пор, как вы видите его объект. Также легко пройти объект в качестве аргументов в другие части крупных приложений и т. Д.

Некоторые люди могут жаловаться на дополнительную печатать, но это никогда не было медленной частью программирования для меня. Я долго занимаюсь Perl, и я не против синтаксиса. Однако я использую только CGI, чтобы получить вход и, возможно, отправить вывод. Я не связываюсь с любым из HTML вещей.

Когда он разговаривает о одном объекте CGI.PM за раз, он имеет отношение к доступу к входу. Как только вы прочитаете STDIN, например, еще один объект CGI.PM не сможет прочитать это. Вы можете иметь столько объектов, сколько хотите. Они просто не будут передавать данные, и первый получает все сообщения.

Вы действительно можете использовать смесь, хотя. Вы можете импортировать некоторые вещи, например : HTML , но все же используйте интерфейс oo, чтобы иметь дело с входом.

17
ответ дан 6 December 2019 в 08:43
поделиться

При использовании программных решений вам потребуется OpenSSL или GNU TLS . Из этих двух последние написаны гораздо более чисто (OpenSSL имеет много подводных камней).

Для действительно элегантного решения можно использовать OpenSSL через boost:: asio , но это решение, вероятно, подходит только при запуске нового проекта.

С точки зрения пользовательского пространства, если бы вы могли настроить обе программы для работы от имени определенного пользователя, вы, вероятно, могли бы настроить для них SSL-туннель, но это в значительной степени зависит от того, как вы хотите установить соединения.

-121--3866344-

Что я сделал, чтобы добавить файлы внутри symlink в Git (я не использовал symlink, но):

sudo mount --bind SOURCEDIRECTORY TARGETDIRECTORY

Выполните эту команду в каталоге Git-managed. TARGETDIRECTORY должен быть создан до установки в него SOURCEDIRECTORY .

Это отлично работает в Linux, но не в OS X! Этот трюк помог мне и с Subversion. Я использую его, чтобы включить файлы из учетной записи Dropbox, где веб-дизайнер делает свои вещи.

-121--626758-

Настоятельно рекомендуется использовать интерфейс объекта.

Будет ли он абсолютно необходим для вашей классной работы? Нет, на самом деле это, возможно, перебор для даже небольших производственных проектов.

Однако, если вы серьезно относитесь к использованию CGI.pm для крупномасштабных проектов, вам потребуется изучить метод объекта. При достижении точки потребности в двух объектах необходимо использовать интерфейс объекта. Программирование, как и все остальное, становится лучше с практикой. Практика сейчас на относительно легких проблем поможет вам быть готовым к более сложным.

На самом деле я бы рекомендовал это в качестве общего правила в программировании (хотя есть исключения), что если сталкиваются с двумя методами использования конкретного инструмента, делая привычку использовать тот, который наиболее вероятно будет использоваться в производственном коде и/или тот, который является правильным ответом для большего количества проблемного пространства.

4
ответ дан 6 December 2019 в 08:43
поделиться
Другие вопросы по тегам:

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