Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Разработка ПО на профессиональном уровне v.2

.0.pdf
Скачиваний:
10
Добавлен:
23.02.2015
Размер:
9.29 Mб
Скачать

Рефакторинг

private List<Point> getNeighbours(int x, int y)

{

List<Point> result=new LinkedList<Point>(); for(int i=-1;i<=1;i++)

for(int j=-1;j<=1;j++)

{

if(i==0 && j==0) continue;

result.add(new Point(x+i, y+i));

}

return result;

}

private List<Point> filterNeighbours(List<Point> neighbours, int size)

{

List<Point> result=new LinkedList<Point>(); for(Point point:neighbours)

{

if(point.x<0 || point.y<0 || point.x>=size || point.y>=0) continue;

result.add(point);

}

return result;

}

Шаг 4

Рефакторинг

private int countAliveNeighbours

(List<Point> neighbours, boolean[][] board)

{

int result=0;

for(Point neighbour:neighbours)

{

if(board[neighbour.x][neighbour.y])

result++;

}

return result;

}

private void copyMatrix(boolean[][] from, boolean[][] to, int size)

{

for(int i=0;i<size;i++) for(int j=0;j<size;j++)

to[i][j]=from[i][j];

}

Шаг 4

Рефакторинг

private boolean getNewCellState(boolean oldState, int neighbours)

{

if(oldState)

{

if(neighbours<2 || neighbours>3) return false;

else

return true;

}

else

{

if(neighbours==3) return true;

else

return false;

}

}

Шаг 4

Рефакторинг

private boolean getNewCellState(boolean oldState, int neighbours)

{

return neighbours==3 || (oldState && neighbours==2);

}

Шаг 5

Что надо уметь программисту?

НЕ ЛЕНИТЕСЬ!!!

РАБОТАЙТЕ ГОЛОВОЙ!!!

Следствие устранения дублирования

Устранение

Введение

дублирования

абстракций

Создание фреймворка, общего решения

Обнаружение

Работа с

дублирования

абстракциями в цикле

Модифицируемость программы

Надо

внести

изменения во всем коде!

Модифицируемость программы

Изменить

одну

отдельную часть - модуль программы

Модульность программы

Проектирование модулей

Паттерн проектирования -

это архитектурная конструкция, адаптированная для решения проблемы проектирования в конкретном

контексте

Не изобретайте велосипед!