image Привет, Хаброжители! Совсем недавно мы перевели бестселлер Сэнди Метц.

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

Внимательно изучив это руководство, вы сможете: • Понять, как писать на Ruby качественный код в духе ООП • Решать, что должно входить в состав класса Ruby • Не допускать тесной связи между объектами в тех случаях, когда требуется разграничить функциональность • Определять гибкие интерфейсы между объектами • Освоить утиную типизацию • Эффективно задействовать наследование, композицию и полиморфизм • Разрабатывать экономные тесты • Доводить до совершенства любой legacy-код Ruby.

Кому эта книга будет полезна


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

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

Для обучения объектно-ориентированному проектированию в этой книге используется язык Ruby, но для усвоения изложенных концепций знать Ruby совсем не обязательно. В издании приводятся примеры кода, и они предельно просты. При наличии опыта программирования на любом объектно-ориентированном языке разобраться с Ruby будет нетрудно.

Если вы привыкли работать с объектно-ориентированными языками со статической типизацией, например с Java или C++, значит, у вас уже есть необходимый багаж знаний, чтобы извлечь пользу из чтения данной книги. Ruby является языком с динамической типизацией, что упрощает синтаксис примеров и позволяет отразить самую суть проектирования. Каждое понятие из книги может быть напрямую переведено в код объектно-ориентированного языка со статической типизацией.

Как следует читать книгу


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

Если у вас есть опыт написания объектно-ориентированных приложений и вы не хотите терять время на повторение той информации, которая вам уже и так известна, можете смело начинать с главы 2. Если столкнетесь с непонятным термином, вернитесь назад и бегло просмотрите раздел «Краткое введение в объектно-ориентированное программирование» главы 1, где приводятся общие понятия ООП, используемые в данной книге.

В главах 2–9 объясняются премудрости объектно-ориентированного проектирования.

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

В главе 3 «Управление зависимостями» показано, как объекты сотрудничают друг с другом. В главах 2 и 3 основное внимание уделяется объектам, а не сообщениям.

В главе 4 «Создание гибких интерфейсов» акценты смещаются с проектирования, где все построено на базе объектов, к проектированию, основанному на обмене сообщениями. Эта глава посвящена определению интерфейсов; основное внимание в ней уделяется тому, как объекты общаются друг с другом.

Глава 5 «Снижение затрат за счет неявной типизации» посвящена неявной («утиной») типизации. В главе рассматривается идея о том, что объекты различных классов могут играть общие роли.

Глава 6 «Получение поведения через наследование» учит применять технологии классического наследования.

В главе 7 «Разделение ролевого поведения с помощью модулей» технологии классического наследования применяются для создания ролей с неявной типизацией.

Глава 8 «Объединение объектов путем составления композиции» раскрывает приемы создания объектов посредством композиций и предоставляет руководство по выбору между композицией, наследованием и совместным использованием ролей с применением неявной типизации.

Глава 9 «Проектирование экономически эффективных тестов» посвящена в основном проектированию тестов; при этом в качестве иллюстраций используется код из предыдущих глав книги.

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

В чем польза этого издания


Читателям с разными уровнями подготовки книга окажется по-разному полезна. Тем, кто уже знаком с объектно-ориентированным проектированием, будет о чем поразмышлять; возможно, они по-новому посмотрят на уже привычные вещи и, вполне вероятно, с чем-то будут не согласны. Поскольку в объектно-ориентированном проектировании нет истины в последней инстанции, оспаривание принципов (и спор с автором данной книги) только улучшит общее понимание предмета. В конце концов, именно вы должны оценивать собственные конструкции кода, проводить эксперименты и делать правильный выбор.

Хотя издание должно представлять интерес для читателей с различными уровнями подготовки, оно выпускалось с прицелом на новичков. Если вы новичок, то эта часть введения — именно для вас. Усвойте простую истину: объектно-ориентированное проектирование не магия. Это всего лишь еще не освоенная вами сфера. И раз вы читаете эти строки, это говорит о вашей заинтересованности, а тяга к знаниям — единственное условие получения пользы от прочтения данной книги.

В главах 2–9 объясняются принципы объектно-ориентированного проектирования и приводятся четкие правила программирования, значение которых для новичка будет отличаться от значения для опытных программистов. Новичкам нужно следовать этим правилам, не сомневаясь в их важности. Безоговорочное выполнение правил поможет избежать крупных неприятностей, пока не будет накоплен опыт, позволяющий принимать собственные решения. К тому времени, когда правила станут вас раздражать, у вас уже будет достаточно опыта для составления своих правил, и вы начнете двигаться по карьерной лестнице в качестве проектировщика.

Об авторе


Сэнди Метц 30 лет работает над такими проектами, качество которых позволяет им расширяться и совершенствоваться. Она разработчик структур программного обеспечения в Университете Дьюка, где ее команда решает реальные задачи для клиентов, имеющих крупные объектно-ориентированные приложения, сопровождение и развитие которых ведется на протяжении 15 и более лет. Сэнди стремится создавать полезные, нетривиальные программы исключительно практичными способами. Книга «Ruby. Объектно-ориентированное проектирование» — продукт обобщения множества разработок и итог многолетних дебатов на тему объектно-ориентированного проектирования.

» Более подробно с книгой можно ознакомиться на сайте издательства
» Оглавление
» Отрывок

Для Хаброжителей скидка 25% по купону — Ruby
Поделиться с друзьями
-->

Комментарии (15)


  1. uniqm
    13.12.2016 12:47
    +1

    Добрый день. Нигде нет, на какой версии Ruby идет повествование в этой книге. Не подскажите?


    1. ph_piter
      13.12.2016 14:38

      В оригинале стоит копирайт 2013 года.
      Последние пятизвездочные отзывы на Amazon от осени этого года: https://www.amazon.com/Practical-Object-Oriented-Design-Ruby-Addison-Wesley/dp/0321721330/

      Книга фундаментальна и критично не устарела. Обновление, естественно, планируем выпускать, как появится

      .


      1. SibProgrammer
        13.12.2016 17:23

        В оригинале книжка написана в 2012 году. Примеры на Ruby 1.9, но это, действительно, никакой особой роли не играет. Читал приличное время назад английский вариант. Если правильно помню, книжка показалась очень даже ничего.


  1. conductor
    13.12.2016 13:44

    Спасибо, купил.


  1. lookid
    13.12.2016 14:24
    -4

    Книга «Ruby. Объектно-ориентированное изнасилование»


  1. dimarikpro
    13.12.2016 14:37

    Спасибо, заказал — наличными курьеру.


    1. GrigoryPerepechko
      13.12.2016 15:36
      +3

      А в какое время доставка? Вы на дом заказывали или на офис? Планируете читать по вечерам или по дороге на работу?


      1. dimarikpro
        13.12.2016 16:53

        Оч смешно! написал так — потому-что ожидал ответа, что столь малый заказ не повезут, ан нет — сразу же перезвонили из питера и все подтвердили, прекрасно работают!


      1. dimarikpro
        22.12.2016 00:13

        Гриша, специально для тебя: докладываю, прочитал пока только 3 главы по дороге из офиса на работу, 80+ страниц одной воды, ничего нового не узнал, да и то что есть — свободно можно разместить на 1-ой — 2-ух страницах. Очень надеюсь что дальше будет хоть что-то стоящее, за что ее все так хвалят.
        Спрашивай что еще интересует.


  1. Proline29
    13.12.2016 14:44

    спасибо купил


  1. PNSpasskiy
    13.12.2016 15:48

    Пытаюсь освоить скорочтение и работу с информацией, не сочтите за оскорбление, попробовал слить воду из вашей статьи. Если что-то важное упустил, пожалуйста поправьте:

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

    Кому эта книга будет полезна:

    Читателям имеющим опыт создания ООП программ.

    Как следует читать книгу:

    Главу 1 можно пропустить, но если вы столкнулись с плохо спроектированным приложением, то прочитайте эту главу.
    Если столкнетесь с непонятным термином, вернитесь и просмотрите раздел «Краткое введение в объектно-ориентированное программирование» главы 1.

    В чем польза этого издания:

    Кто уже знаком с объектно-ориентированным проектированием по-новому посмотрят на уже привычные вещи, с чем-то будут не согласны. Издание выпускалось с прицелом на новичков.
    В главах 2–9 объясняются принципы объектно-ориентированного проектирования и приводятся правила программирования. Новичкам нужно следовать этим правилам. Их выполнение поможет избежать крупных неприятностей.

    Об авторе:

    Автор крут.


  1. skyksandr
    14.12.2016 14:54

    Спасибо! Хотелось бы, чтобы Вы также обратили внимание на «99 bottles of OOP», книга на данный момент не закончена, но выглядит достаточно интересной. С удовольствием купил бы бумажный вариант.


  1. railsfun
    18.12.2016 10:05

    Спасибо, купил! Побольше бы таких книг переводили!


  1. mastedm
    19.12.2016 11:44
    +1

    Немного не по теме вопрос. А почему год издания стоит 2017? Часто вижу в книгах год издания +1


    1. dimarikpro
      22.12.2016 00:07

      Наверное это как у перекупщиков на авто.ру — машина была куплена в декабре 2015, значит ставим 2016))