Книга «Ruby. Об'єктно-орієнтоване проектування»

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
Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.