Совершенный код: Зачем нужно создавать классы

Напомню, что сейчас я читаю одну очень интересную книгу Макконнелла под названием «Совершенный код», которая, кстати, является классикой жанра в области проектирования программ и написанию хорошего кода. И сегодня речь пойдет о том, зачем же создавать классы и как они могут облегчить нам жизнь и уменьшить время на разработку.

Зачем нужно создавать классы

Зачем нужно создавать классы


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

Моделирование абстрактных объектов. Другой разумной причиной создания класса является моделирование абстрактного объекта — объекта, который не существует в реальном мире, но является абстракцией других конкретных объектов. Прекрасный пример — классический объект Shape (фигура). Объекты Circle (окружность) и Square (прямоугольник) существуют на самом деле, тогда как класс Shape — это абстракция конкретных фигур. В мире программирования редко встречаются готовые абстракции вроде Shape, из-за чего поиск ясных абстракций усложняется.

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

ООП

ООП

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

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

Сокрытие деталей реализации. Еще одна прекрасная причина создания класса — сокрытие деталей реализации, и таких сложных, как мудреный способ доступа к БД, и столь банальных, как отдельный элемент данных, хранимый в форме числа или строки.

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

ООП

ООП

Сокрытие глобальных данных. Используя глобальные данные, вы можете скрыть детали их реализации за интерфейсом класса. Обращение к глобальным данным через методы доступа имеет ряд преимуществ в сравнении с их непосредственным использованием. Вы можете менять структуру данных, не изменяя программу. Вы можете следить за доступом к данным. Кроме того, использование методов доступа подталкивает к размышлениям о том, на самом ли деле данные глобальны; часто оказывается, что «глобальные данные» на самом деле являются просто данными какогото объекта.

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

Создание центральных точек управления. Управлять каждой задачей в одном месте — разумная идея. Управление может принимать разные формы. Знание числа элементов таблицы — одна форма. Управление файлами, соединениями с БД, принтерами и другими устройствами — другая. Использование одного класса для чтения и записи БД является формой централизованного управления. Если БД нужно будет преобразовать в однородный файл или данные «в памяти», изменения придется внести только в один класс.

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

Облегчение повторного использования кода. Код, разбитый на грамотно организованные классы, легче повторно использовать в других программах, чем тот же код, помещенный в один более крупный класс. Даже если фрагмент вызывается только из одного места программы и вполне понятен в составе более крупного класса, подумайте, может ли он понадобиться в другой программе. Если да, стоит поместить его в отдельный класс.

Совершенный код: Зачем нужно создавать классы
4 votes, 5.00 avg. rating (99% score)

13 thoughts on “Совершенный код: Зачем нужно создавать классы

  1. Прakтичеckи сaмое мощное ycmpойствo на рынke. 3apяжается оm сoлнцa u сemи 220W. Полнoгo заpяда поpmативного зaряднoгo ycmрoйсmвa POWER BANK 20000 mAh хвaтает дo 10 nолныx зapядок гаджетoв.
    Мoжeт зaряжаmb cразу 2 гаджeта. Этo cовepшeннo новый урoвeнь cвoбоды u мoбильнocmи для Вac и Baшux уcmpoйcmв.
    Heболbшой вec: 240 гр.
    Имеem oчeнь комnakmныe небoлbшиe рaзмeры: 120мм Х 75мм х 22мм u вес всero 240 гр.
    Что nозволяют браmb пopmаmивнoe зapядноe уcтpoйcmво POWER BANK с собoй u быть cпоkoйным зa надежность и бecnеpeбойноcтb рабоmы cвоегo гaджетa, kyда бы Вы нe нaпрaвлялucb. Подxoдиm ko вceм видам гaджетoв.
    Дonолнителbно имeется всmрoенный cвemодиoдный фoнaрuk и kaбель-nереxоднuk.
    B дemaлях здeсb http://0ll0.ru/2qf0

  2. Наша компания — EКO TEC делает разработку эко – технологий в области сельского хозяйства, а так же благоустройства домов и много другого.  Наша компания имеет большой опыт в этой сфере, который используем, в нашей работе. Благодоря этому наша продукция имеет высокое качество по ссылке http://teplitca.kiev.ua/cp49486-teplitsy-video.html теплицы видео.

  3. праздники на яхте в Сочи Арендовать яхту – это великолепный способ отметить юбилей или просто особенный выходной день для близких людей . Провести день на яхте без посторонних людей – можно ли представить досуг более необычный ?! Вдали от многолюдного побережья, вы сможете ощутить настоящее спокойствие и умиротворение , забыть о всех своих неурядицах и просто насладиться иссиня-зеленой гладью и удивительными пейзажами приморской зоны юга Краснодарского края.
    Взяв с собой спиннинг и прикорм , вы сможете порыбачить всей компанией , а после этого сразу же полакомиться свежевыловленной рыбой – корабли компании “Два Капитана” имеют все необходимое кухонное оборудование . Когда Вы устанете от зноя , вы сможете скрыться в прохладной удобной каюте нашей яхты .
    Компания “Два Капитана” стремится держать стоимость своих услуг на доступном уровне. В зависимости от того, на какой срок и время Вы закажете аренду катера , цены наши могут только меняться в меньшую сторону . Организовывая какое бы то ни было празднование, Вы можете связаться с нами и заранее забронировать понравившееся Вам судно на тот день и время, на которое Вы планируете арендовать катер . Цены и скидки не могут Вас не порадовать ! Организовывая любое празднество на судне компании “Два Капитана”, Вы можете быть абсолютно уверены – это событие принесет всем Вашим друзьям массу позитивных эмоций и оставит самые теплые воспоминания.
    Каким бы ни был повод аренды яхты , наша цена может становиться только ниже – мы не делаем никаких дополнительных наценок.

  4. Revolutional update of SEO/SMM package «XRumer 16.0 + XEvil»:
    captcha regignizing of Google, Facebook, Bing, Hotmail, SolveMedia, Yandex,
    and more than 8400 another types of captcha,
    with highest precision (80..100%) and highest speed (100 img per second).
    You can connect XEvil 3.0 to all most popular SEO/SMM programms: XRumer, GSA SER, ZennoPoster, Srapebox, Senuke, and more than 100 of other programms.

    Interested? You can find a lot of impessive videos about XEvil in YouTube.
    Good luck!

    XRumer20170721

  5. Absolutely NEW update of SEO/SMM software «XRumer 16.0 + XEvil 3.0»:
    captchas breaking of Google, Facebook, Bing, Hotmail, SolveMedia, Yandex,
    and more than 8400 another subtypes of captchas,
    with highest precision (80..100%) and highest speed (100 img per second).
    You can connect XEvil 3.0 to all most popular SEO/SMM software: XRumer, GSA SER, ZennoPoster, Srapebox, Senuke, and more than 100 of other programms.

    Interested? You can find a lot of demo videos about XEvil in YouTube.
    See you later 😉

    XRumer20170721

  6. Revolutional update of SEO/SMM package «XRumer 16.0 + XEvil 3.0»:
    captcha solution of Google, Facebook, Bing, Hotmail, SolveMedia, Yandex,
    and more than 8400 another categories of captchas,
    with highest precision (80..100%) and highest speed (100 img per second).
    You can connect XEvil 3.0 to all most popular SEO/SMM programms: XRumer, GSA SER, ZennoPoster, Srapebox, Senuke, and more than 100 of other programms.

    Interested? There are a lot of demo videos about XEvil in YouTube.
    See you later!

    XRumer20170721

  7. Absolutely NEW update of SEO/SMM package «XRumer 16.0 + XEvil 3.0»:
    captchas regignizing of Google, Facebook, Bing, Hotmail, SolveMedia, Yandex,
    and more than 8400 another size-types of captchas,
    with highest precision (80..100%) and highest speed (100 img per second).
    You can connect XEvil 3.0 to all most popular SEO/SMM software: XRumer, GSA SER, ZennoPoster, Srapebox, Senuke, and more than 100 of other software.

    Interested? There are a lot of introducing videos about XEvil in YouTube.
    See you later 😉

    XRumer20170721

  8. Absolutely NEW update of SEO/SMM software «XRumer 16.0 + XEvil»:
    captchas breaking of Google, Facebook, Bing, Hotmail, SolveMedia, Yandex,
    and more than 8400 another subtypes of captchas,
    with highest precision (80..100%) and highest speed (100 img per second).
    You can connect XEvil 3.0 to all most popular SEO/SMM programms: XRumer, GSA SER, ZennoPoster, Srapebox, Senuke, and more than 100 of other programms.

    Interested? You can find a lot of demo videos about XEvil in YouTube.
    Good luck!

    XRumer20170725

  9. Revolutional update of SEO/SMM software «XRumer 16.0 + XEvil»:
    captcha solution of Google, Facebook, Bing, Hotmail, SolveMedia, Yandex,
    and more than 8400 another size-types of captcha,
    with highest precision (80..100%) and highest speed (100 img per second).
    You can connect XEvil 3.0 to all most popular SEO/SMM programms: XRumer, GSA SER, ZennoPoster, Srapebox, Senuke, and more than 100 of other programms.

    Interested? There are a lot of demo videos about XEvil in YouTube.
    See you later!

    XRumer20170725

  10. Revolutional update of SEO/SMM software «XRumer 16.0 + XEvil»:
    captcha solution of Google, Facebook, Bing, Hotmail, SolveMedia, Yandex,
    and more than 8400 another subtypes of captcha,
    with highest precision (80..100%) and highest speed (100 img per second).
    You can connect XEvil 3.0 to all most popular SEO/SMM programms: XRumer, GSA SER, ZennoPoster, Srapebox, Senuke, and more than 100 of other software.

    Interested? You can find a lot of demo videos about XEvil in YouTube.
    Good luck!

    XRumer20170725

  11. Absolutely NEW update of SEO/SMM package «XRumer 16.0 + XEvil 3.0»:
    captchas solving of Google, Facebook, Bing, Hotmail, SolveMedia, Yandex,
    and more than 8400 another types of captcha,
    with highest precision (80..100%) and highest speed (100 img per second).
    You can connect XEvil 3.0 to all most popular SEO/SMM programms: XRumer, GSA SER, ZennoPoster, Srapebox, Senuke, and more than 100 of other software.

    Interested? You can find a lot of impessive videos about XEvil in YouTube.
    Good luck 😉

    XRumer20170725

  12. Easy way to lose weight fast for a week:
    https://sites.google.com/site/weightlossluxury/weight-loss-tips-weight-loss-exercise-loosing-belly-fat-diet-plans

    Tags:
    healthy diet to lose weight fast yahoo
    rhino weight loss
    scivation xtend explosion weight loss formula ingredients
    visi weight loss edmonton
    how does drinking grapefruit juice help lose weight
    want to lose weight fast
    female weight loss sample diet
    calorie intake calculator to lose weight
    good walking distance lose weight

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *