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

Как предлагается в нескольких комментариях, эта ошибка связана с тем, что self.processor нельзя глубоко клонировать.

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

13
задан brian d foy 4 January 2009 в 07:58
поделиться

9 ответов

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

Пойти с Perl:: Критик, я рекомендовал бы получить копию Лучших практик Perl (PBP). Это содержит большую подробную информацию относительно который Perl:: Критик базировался. Даже если Вы не соглашаетесь с конкретными инструкциями в книге, она заставляет Вас думать о том, как Вы кодируете, и это очень, очень ценно. Вы не должны выходить из оболочки деньги для книги, но два комплимента друг друга очень приятно, и существуют долгие обсуждения, Вы найдете в PBP, что не доберетесь от Perl:: Критик.

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

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

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

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

Пусть Вы сделаете Хорошее Волшебство с Perl,

Paul

24
ответ дан 1 December 2019 в 17:16
поделиться

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

Американский лось является постмодернистской объектной системой для Perl 5, который вынимает скуку из записи объектно-ориентированного Perl. Это одалживает все лучшие функции у Perl 6, CLOS (Lisp), Smalltalk, Java, БЕТА, OCaml, Ruby и больше, при тихом сохранении верным для его корней Perl 5.

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

10
ответ дан 1 December 2019 в 17:16
поделиться
13
ответ дан 1 December 2019 в 17:16
поделиться

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

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

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

7
ответ дан 1 December 2019 в 17:16
поделиться

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

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

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

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

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

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

Кроме источников, упомянутых выше, я настоятельно рекомендую книгу "Perl Высшего порядка" Mark Jason Dominus. Если можно предоставить его, покупают его, иначе автор поместил книгу по своему веб-сайту бесплатно как в бесплатном пиве, Свободном Perl Высшего порядка. Для версии PDF: прямой URL загрузки (1,9 МБ).

Править:

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

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

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

Чтобы место было воспитано, PerlMonks БОЛЬШОЙ.

2
ответ дан 1 December 2019 в 17:16
поделиться

Запишите Perl путем, Вы записали бы C, хотя необходимо использовать в своих интересах некоторые вещи, НАЧИНАЮТ блоки и модули. Это должно быть отформатировано так, чтобы это более или менее походило на старый стиль K&R C код.

Что касается структуры, пропустите материал OO и разработайте его как ADTS вместо этого:

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

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

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

При управлении этим код может быть и читаем и легок понять.

Paul.

0
ответ дан 1 December 2019 в 17:16
поделиться
Другие вопросы по тегам:

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