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

StackOverflow https://stackoverflow.com/questions/410359

  •  03-07-2019
  •  | 
  •  

Вопрос

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

Это было полезно?

Решение

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

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

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

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

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

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

Желаю вам творить добрую магию с Perl,

Павел

Другие советы

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

Moose — это постмодернистская объектная система для Perl 5, которая избавляет от утомительной работы по написанию объектно-ориентированного Perl.Он заимствует все лучшие возможности Perl 6. ЗАКРЫТЬ (Лисп), Болтовня, Джава, БЕТА, OCaml, Ruby и многие другие, сохраняя при этом верность своим корням Perl 5.

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

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

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

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

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

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

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

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

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

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

Редактировать:

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

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

Для места, где можно получить наставничество, PerlMonks отлично.

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

Что касается структуры, пропустите объектно-ориентированный материал и вместо этого оформите его как ADT:

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

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

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

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

Павел.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top