Скачать презентацию Чистый код создание анализ и рефакторинг 2 21 Скачать презентацию Чистый код создание анализ и рефакторинг 2 21

Чистый код.pptx

  • Количество слайдов: 21

Чистый код: создание, анализ и рефакторинг. Чистый код: создание, анализ и рефакторинг.

2/21 2/21

3/21 3/21

Какой код называют “чистым”? • Код приятно читать • Удобно и возможно сопровождать • Какой код называют “чистым”? • Код приятно читать • Удобно и возможно сопровождать • Код не содержит дублирования • Содержит простые абстракции • Прямолинеен и компактен 4/21

Содержательные имена • Не надо так: int d; //прошедшее время • Лучше так: • Содержательные имена • Не надо так: int d; //прошедшее время • Лучше так: • int days. Since. Creation; • int file. Age. In. Days; 5/21

Пример. Что делает эта функция? • public List<int[]> get. Them() • { • List<int[]> Пример. Что делает эта функция? • public List get. Them() • { • List list 1 = new List(); • foreach (int[] x in the. List) • if (x[0] == 4) • list 1. Add(x); • return list 1; • } 6/21

Улучшение 1. • public List<int[]> get. Flagged. Cells() • { • List<int[]> flagged. Cells Улучшение 1. • public List get. Flagged. Cells() • { • List flagged. Cells = new List(); • foreach (int[] cell in game. Board) • if (cell[STATUS_VALUE] == FLAGGED) • flagged. Cells. Add(cell); • return flagged. Cells; • } 7/21

Улучшение 2. • public List<Cell> get. Flagged. Cells() • { • List<Cell> flagged. Cells Улучшение 2. • public List get. Flagged. Cells() • { • List flagged. Cells = new List(); • foreach (Cell cell in game. Board) • if (cell. is. Flagged()) • flagged. Cells. Add(cell); • return flagged. Cells; • } 8/21

Имена классов • Существительные и их комбинации • Customer, Wiki. Page, Account, Address. Parser, Имена классов • Существительные и их комбинации • Customer, Wiki. Page, Account, Address. Parser, … 9/21

Имена методов • Глаголы или глагольные словосочетания • Post. Payment, Delete. Page, Save, … Имена методов • Глаголы или глагольные словосочетания • Post. Payment, Delete. Page, Save, … 10/21

Функции • Компактность (примерно 20 строк) • Функция должна выполнять одну операцию и ничего Функции • Компактность (примерно 20 строк) • Функция должна выполнять одну операцию и ничего другого • Один уровень абстракции на функцию • Чтение кода сверху вниз 11/21

Разделение команд и запросов if (set(“username”, “unclebob”)) if (Attribute. Exists( Разделение команд и запросов if (set(“username”, “unclebob”)) if (Attribute. Exists("username")) { Set. Attribute("username", "unclebob"); . . . } 12/21

Форматирование кода 13/21 Форматирование кода 13/21

Объекты и структуры данных. Процедурный код. 14/21 Объекты и структуры данных. Процедурный код. 14/21

Объекты и структуры данных. Объектно-ориентированный код. 15/21 Объекты и структуры данных. Объектно-ориентированный код. 15/21

Обработка ошибок 16/21 Обработка ошибок 16/21

SOLID • S – SRP – Принцип единой отвественности • O – OSP – SOLID • S – SRP – Принцип единой отвественности • O – OSP – Принцип открытости/закрытости • L – LSP – Принцип подстановки Барбары Лисков • I – ISP – Принцип разделения интерфейса • D – DIP – Принцип инверсии зависимостей 17/21

KISS • Keep it short and simple (keep it simple, stupid) 18/21 KISS • Keep it short and simple (keep it simple, stupid) 18/21

DRY • Don’t repeat youserlf • Антоним: WET – Write Everything Twice 19/21 DRY • Don’t repeat youserlf • Антоним: WET – Write Everything Twice 19/21

YAGNI • You ain’t gonna need it 20/21 YAGNI • You ain’t gonna need it 20/21

Рефакторинг 21/21 Рефакторинг 21/21