Где я могу найти объектно-ориентированные учебные руководства по Perl? [закрытый]

Вы корректны.

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

, Например:

/**
 * @params operation - The operation to execute.
 * @throws IllegalArgumentException if the operation is "exit"
 */
 public final void execute( String operation ) {
     if( "exit".equals(operation)){
          throw new IllegalArgumentException("I told you not to...");
     }
     this.operation = operation; 
     .....  
 }
 private void secretCode(){
      // we perform the operation.
      // at this point the opreation was validated already.
      // so we don't worry that operation is "exit"
      .....  
 }

Только для помещения примера. Точка, если система перестанет работать быстро, то Вы будете знать, где и почему это действительно перестало работать. Вы получите stacktrace как:

 IllegalArgumentException: I told you not to use "exit" 
 at some.package.AClass.execute(Aclass.java:5)
 at otherPackage.Otherlass.delegateTheWork(OtherClass.java:4569)
 ar ......

И Вы будете знать то, что произошло. OtherClass в "delegateTheWork" методе (в строке 4569) названный Вашим классом со значением "выхода", даже когда это не было должно и т.д.

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

, То же самое происходит с NullPointerExceptions. Если у Вас есть 700 классов строк приблизительно с 15 методами, которые используют 30 атрибутов, и ни один из них не может быть пустым, вместо того, чтобы проверить в каждом из тех методов для nullability, Вы могли сделать все те атрибуты только для чтения и проверить их в методе конструктора или методе фабрики.

 public static MyClass createInstane( Object data1, Object data2 /* etc */ ){ 
      if( data1 == null ){ throw NullPointerException( "data1 cannot be null"); }

  }


  // the rest of the methods don't validate data1 anymore.
  public void method1(){ // don't worry, nothing is null 
      ....
  }
  public void method2(){ // don't worry, nothing is null 
      ....
  }
  public void method3(){ // don't worry, nothing is null 
      ....
  }

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

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

, Если контролируемая исключительная ситуация злоупотребляется (путем добавления, "выдают Исключение" во всех подписях методов), то код станет очень хрупким, потому что все проигнорируют то исключение (потому что является слишком общим), и качество кода серьезно поставится под угрозу.

при злоупотреблении неконтролируемого исключения что-то подобное произойдет. Пользователи того кода не знают, может ли что-то пойти не так, как надо большая попытка {...} Выгода (Throwable t) появится.

9
задан 3 revs, 2 users 90% 9 November 2009 в 15:13
поделиться

11 ответов

Объектно-ориентированный Perl Дэмиана Конвея состоит из двух основных глав и всего исходного кода в сети.

8
ответ дан 4 December 2019 в 06:11
поделиться

Поскольку это вики сообщества и в духе вашего примечания:

perlboot теперь устарел и перенаправлен на:

perlootut - объектно-ориентированное программирование в Perl Tutorial

perlobj - ссылка на объект Perl

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

8
ответ дан 4 December 2019 в 06:11
поделиться

Книга Конвея является классикой.

6
ответ дан 4 December 2019 в 06:11
поделиться
5
ответ дан 4 December 2019 в 06:11
поделиться

Я большой поклонник материалов, доступных на веб-сайте Perl Training Australia .

У них есть вводное руководство, а также полноразмерная книга -длительное лечение:

Все их учебные материалы и советы стоит посмотреть.

5
ответ дан 4 December 2019 в 06:11
поделиться

Хотя это не учебник, я бы посоветовал прочитать и поработать с примерами Изучение объектов Perl, ссылки & Modules , которая является второй книгой из серии "Learning Perl" Рэндала Шварца.

Эта книга - отличное введение в объекты Perl.

Кстати, я предпочитаю эту версию более позднему изданию, которое также было предоставлено более общее название "Intermediate Perl". И, как дополнительный бонус, бывшая в употреблении копия старой версии намного меньше новой. (-:

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

5
ответ дан 4 December 2019 в 06:11
поделиться

Moose :: Manual :: Unsweetened мне очень помог.

2
ответ дан 4 December 2019 в 06:11
поделиться

Объекты наизнанку Рэндал Шварц.

2
ответ дан 4 December 2019 в 06:11
поделиться

Есть пара объектно-ориентированных руководств в документации Perl. Ознакомьтесь с документацией perltoc . perldoc.perl.org имеет страницу со списком всех руководств по Perl в документации .

1
ответ дан 4 December 2019 в 06:11
поделиться

Запуск объектно-ориентированного программирования с Perl в Suite 101 - это плохо по ряду причин, и его следует избегать.

Почему учебник плохой:

  1. Показывает ненаследуемые конструкторы, но использует их в пример для наследования
  2. Использует синтаксис косвенного вызова метода
  3. Делает странные, ошибочные вещи для доступа к аргументам в примерах кода
  4. Это мелочь, но автор использует большую строку конкатенации с print , где список аргументов будет работать лучше (или еще лучше join ).
0
ответ дан 4 December 2019 в 06:11
поделиться
Другие вопросы по тегам:

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