Роберт Мартин - Чистая архитектура. Искусство разработки программного обеспечения

Тут можно читать онлайн Роберт Мартин - Чистая архитектура. Искусство разработки программного обеспечения - бесплатно ознакомительный отрывок. Жанр: comp-programming, издательство Питер, год 2018. Здесь Вы можете читать ознакомительный отрывок из книги онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.
  • Название:
    Чистая архитектура. Искусство разработки программного обеспечения
  • Автор:
  • Жанр:
  • Издательство:
    Питер
  • Год:
    2018
  • Город:
    СПб.
  • ISBN:
    978-5-4461-0772-8
  • Рейтинг:
    3/5. Голосов: 11
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 60
    • 1
    • 2
    • 3
    • 4
    • 5

Роберт Мартин - Чистая архитектура. Искусство разработки программного обеспечения краткое содержание

Чистая архитектура. Искусство разработки программного обеспечения - описание и краткое содержание, автор Роберт Мартин, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru
«Идеальный программист» и «Чистый код» – легендарные бестселлеры Роберта Мартина – рассказывают, как достичь высот профессионализма. «Чистая архитектура» продолжает эту тему, но не предлагает несколько вариантов в стиле «решай сам», а объясняет, что именно следует делать, по какой причине и почему именно такое решение станет принципиально важным для вашего успеха.
Роберт Мартин дает прямые и лаконичные ответы на ключевые вопросы архитектуры и дизайна. «Чистую архитектуру» обязаны прочитать разработчики всех уровней, системные аналитики, архитекторы и каждый программист, который желает подняться по карьерной лестнице или хотя бы повлиять на людей, которые занимаются данной работой.

Чистая архитектура. Искусство разработки программного обеспечения - читать онлайн бесплатно ознакомительный отрывок

Чистая архитектура. Искусство разработки программного обеспечения - читать книгу онлайн бесплатно (ознакомительный отрывок), автор Роберт Мартин
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

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

Итак, что мы должны делать как архитекторы? Ответ едва ли удовлетворит вас. С одной стороны, некоторые очень умные люди много лет говорили нам, что мы не должны испытывать потребности в абстракциях. Это философия YAGNI: «You Aren’t Going to Need It» («Вам это не понадобится»). В этом есть определенная мудрость, поскольку излишнее усложнение конструкции часто намного хуже ее упрощения. С другой стороны, когда обнаруживается, что в том или ином месте действительно необходимо провести архитектурную границу, стоимость и риск ее добавления могут оказаться очень высокими.

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

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

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

Для этого вы должны наблюдать очень внимательно.

Глава 26. Главный компонент

В каждой системе имеется хотя бы один компонент который создает другие - фото 99

В каждой системе имеется хотя бы один компонент, который создает другие компоненты, наблюдает за ними и координирует их действия. Я называю такой компонент главным (Main).

Конечная деталь

Компонент Main — это конечная деталь, политика самого низкого уровня. Он является точкой входа в систему. От него ничего не зависит, кроме работоспособности системы. Его задача — создать все Фабрики, Стратегии и другие глобальные средства и затем передать управление высокоуровневым абстракциям в системе.

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

Компонент Main можно считать самым грязным из всех грязных компонентов.

Рассмотрим следующий компонент Main из последней версии игры «Охота на Вампуса». Обратите внимание, как он загружает все строки, о которых не должен знать основной код.

public class Main implements HtwMessageReceiver {

private static HuntTheWumpus game;

private static int hitPoints = 10;

private static final List caverns =

new ArrayList<>();

private static final String[] environments = new String[]{

"bright",

"humid",

"dry",

"creepy",

"ugly",

"foggy",

"hot",

"cold",

"drafty",

"dreadful"

};

private static final String[] shapes = new String[] {

"round",

"square",

"oval",

"irregular",

"long",

"craggy",

"rough",

"tall",

"narrow"

};

private static final String[] cavernTypes = new String[] {

"cavern",

"room",

"chamber",

"catacomb",

"crevasse",

"cell",

"tunnel",

"passageway",

"hall",

"expanse"

};

private static final String[] adornments = new String[] {

"smelling of sulfur",

"with engravings on the walls",

"with a bumpy floor",

"",

"littered with garbage",

"spattered with guano",

"with piles of Wumpus droppings",

"with bones scattered around",

"with a corpse on the floor",

"that seems to vibrate",

"that feels stuffy",

"that fills you with dread"

};

Далее следует функция main. Обратите внимание, как она использует HtwFactory для создания игры. Она передает имя класса, htw.game.HuntTheWumpusFacade, потому что этот класс даже грязнее, чем Main. Это предотвращает изменения в данном классе из-за повторной компиляции/развертывания Main.

public static void main(String[] args) throws IOException {

game = HtwFactory.makeGame("htw.game.HuntTheWumpusFacade",

new Main());

createMap();

BufferedReader br =

new BufferedReader(new InputStreamReader(System.in));

game.makeRestCommand().execute();

while (true) {

System.out.println(game.getPlayerCavern());

System.out.println("Health: " + hitPoints + " arrows: " +

game.getQuiver());

HuntTheWumpus.Command c = game.makeRestCommand();

System.out.println(">");

String command = br.readLine();

if (command.equalsIgnoreCase("e"))

c = game.makeMoveCommand(EAST);

else if (command.equalsIgnoreCase("w"))

c = game.makeMoveCommand(WEST);

else if (command.equalsIgnoreCase("n"))

c = game.makeMoveCommand(NORTH);

else if (command.equalsIgnoreCase("s"))

c = game.makeMoveCommand(SOUTH);

else if (command.equalsIgnoreCase("r"))

c = game.makeRestCommand();

else if (command.equalsIgnoreCase("sw"))

c = game.makeShootCommand(WEST);

else if (command.equalsIgnoreCase("se"))

c = game.makeShootCommand(EAST);

else if (command.equalsIgnoreCase("sn"))

c = game.makeShootCommand(NORTH);

else if (command.equalsIgnoreCase("ss"))

c = game.makeShootCommand(SOUTH);

else if (command.equalsIgnoreCase("q"))

return;

c.execute();

}

}

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

Наконец, посмотрите, как main создает карту подземелий.

private static void createMap() {

int nCaverns = (int) (Math.random() * 30.0 + 10.0);

while (nCaverns-- > 0)

caverns.add(makeName());

for (String cavern : caverns) {

maybeConnectCavern(cavern, NORTH);

maybeConnectCavern(cavern, SOUTH);

maybeConnectCavern(cavern, EAST);

maybeConnectCavern(cavern, WEST);

}

String playerCavern = anyCavern();

game.setPlayerCavern(playerCavern);

game.setWumpusCavern(anyOther(playerCavern));

game.addBatCavern(anyOther(playerCavern));

game.addBatCavern(anyOther(playerCavern));

game.addBatCavern(anyOther(playerCavern));

game.addPitCavern(anyOther(playerCavern));

game.addPitCavern(anyOther(playerCavern));

game.addPitCavern(anyOther(playerCavern));

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


Роберт Мартин читать все книги автора по порядку

Роберт Мартин - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




Чистая архитектура. Искусство разработки программного обеспечения отзывы


Отзывы читателей о книге Чистая архитектура. Искусство разработки программного обеспечения, автор: Роберт Мартин. Читайте комментарии и мнения людей о произведении.


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

Напишите свой комментарий
x