Как я могу научиться писать хорошо структурированные программы на Perl?

Я начал изучать Perl, но большая часть моего прежнего опыта программирования была на языках, которые подчеркивают объектно-ориентированное программирование, такое как С# и Java. Все примеры Perl, которые я нашел, как правило, являются длинными однофункциональными программами, и я нахожу свой код для самостоятельной записи таким же образом. Существуют ли какие-либо ресурсы или учебные пособия для написания поддерживаемых хорошо структурированных программ?

Ответы

Ответ 1

Во-первых, независимо от того, какое программирование в Perl вы делаете, вы, вероятно, найдете Perl::Critic, чтобы быть неоценимым. Инструмент командной строки, безусловно, наиболее удобен для получения обратной связи по вашему коду, но у вас есть также веб-интерфейс, где вы можете загрузить свои Perl-код и получать мгновенную автоматическую обратную связь. Обратите внимание, что Perl:: Critic не собирается преподавать вам хорошую структуру, но это поможет улучшить ваш стиль в целом и избавит вас от некоторых распространенных ошибок.

Чтобы перейти с Perl:: Critic, я бы рекомендовал получить копию Perl Best Practices (PBP). Он содержит много подробной информации, на основе которой был основан Perl:: Critic. Даже если вы не согласны с конкретными рекомендациями в книге, это заставляет задуматься о том, как вы кодируете и что очень, очень ценно. Вам не нужно тратить деньги на книгу, но эти два комплимента друг друга очень хорошо, и в PBP вы найдете много дискуссий, которые вы не получите от Perl:: Critic.

Если вы уже работали с другими языками OO и дизайном OO, вы, вероятно, найдете Moose для удобного перехода, Moose очень стабилен, очень хорошо поддерживается и имеет огромное и активное сообщество (особенно через IRC). Moose заменяет почти все существующие рекомендации OO Perl, в том числе мои собственные. Объектно-ориентированный дизайн является общим по причине; это имеет смысл для многих проектов, и нет причин не использовать его в Perl.

Лично я обнаружил значительное улучшение в моей собственной структуре программы, когда перешел на тестовую модель разработки. При такой модели существенным является проблема с разбивкой на небольшие, легко тестируемые единицы. Начните с Test::Tutorial, если вы новичок в тестировании на Perl, а затем посмотрите на другой ресурсы тестирования или books, если вы хотите узнать больше. Используйте инструмент, например Devel::Cover или Devel::NYTProf, чтобы см., что ваши тестовые случаи бьют, а какие нет. Наличие кода, который трудно проверить, часто является признаком плохой структуры.

Сказав все это, лучшим учителем на сегодняшний день является вовлечение в существующий проект Perl с опытными участниками. Посмотрите, как они поступают, и когда вы делаете вклады, подумайте о своих советах. Если вы хотите, чтобы приложение с огромным крутым достоинством, которое, казалось, втянуло самое лучшее и яркое из сообщества Perl, я бы рекомендовал принять участие в Padre, редактор Perl.

Если (по какой-либо причине) вы не можете связать себя с другим проектом, тогда рассмотрите отправку образцов кода в такие сообщества, как Stack Overflow, или PerlMonks. Еще лучше, если вы можете сделать свой код открытым исходным кодом, сделайте это и запросите обратную связь. Все языки программирования лучше узнавать у других, которые уже знакомы с ними, и Perl здесь не исключение.

Можете ли вы сделать Good Magic с Perl,

Пол

Ответ 3

Если вы изучаете OO Perl, вы также можете перейти к следующей большой вещи и начать обучение Moose.

p >

Moose - это постмодернистская объектная система для Perl 5, которая берет утомительно из написания объектно-ориентированного Perl. Он заимствует все лучшие функции из Perl 6, CLOS (Lisp), Smalltalk, Java, BETA, OCaml, Ruby и т.д., сохраняя при этом свои корни Perl 5.

Moose - это 100% производство, готовое и активно используемое в ряде систем и растущее с каждым днем.

Ответ 4

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

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

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

Ответ 5

Помимо упомянутых выше источников, я настоятельно рекомендую книгу "Perl высшего порядка" Марка Джейсона Домина. Если вы можете позволить себе купить его, в противном случае автор разместил книгу на своем веб-сайте бесплатно, как в бесплатном пиве, Free Higher Perl. Для версии PDF: URL прямой загрузки (1.9 MB).

Edit:

Я забыл упомянуть Perl Design Patterns. Сайт PerlDesignPatterns - очень хороший ресурс или справочная информация для изучения шаблонов проектирования Perl.

Ответ 6

Если вы чувствуете, что уже изучаете основы и хотите улучшить структуру программы, я бы предложил эти книги, возможно, лучше всего прочитать в этом порядке:

  • Промежуточный Perl - это, вероятно, место для начала того, о чем вы просите; охватывает разработки и использование модулей Perl (необходимых для хорошей структуры), ссылок, сложных структур данных, OO и т.д.

  • Perl Medic: Преобразование устаревшего кода - демонстрирует хорошо структурированный Perl, демонстрируя, как исправить плохо структурированный Perl

  • Эффективное программирование на Perl: написание лучших программ с Perl - классический, но все же полезный; полный Perl-идиомы, которые помогут вам написать больше Perl-ish Perl; не много на OO, но охватывает более фундаментальные структуры кодирования, чтобы сделать ваш код более кратким и еще более выразительным. Я думаю об этом как о книге, которая дала мне от грамотности Perl до беглости Perl.

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

Ответ 8

Лично я не писал хороший OO Perl, пока не начал изучать Java. Я рекомендую вам потратить небольшое количество времени на изучение OO на истинном языке OO и применить то, что вы изучили на Perl.

Для места, на которое наследуется, PerlMonks является БОЛЬШИМ.

Ответ 9

Напишите Perl так, как вы бы писали C, хотя вы должны использовать некоторые элементы BEGIN блоков и модулей. Он должен быть отформатирован так, чтобы он выглядел более или менее похожим на старый код K & R C.

Что касается структуры, пропустите материал OO и настройте его как ADT:

http://en.wikipedia.org/wiki/Abstract_data_type

В основном вы делаете это, используя структуры данных, в которых вы бы использовали объекты в OO (и разделяли алгоритмы на свои собственные функции).

Затем выберите только один способ сделать что-то и придерживаться его, согласованность имеет жизненно важное значение для читаемости.

Если вы справитесь с этим, код может быть как читабельным, так и понятным.

Павел.