Чистый код: создание, анализ и рефакторинг.
Какой код называют “чистым”?
Содержательные имена
Пример. Что делает эта функция?
Улучшение 1.
Улучшение 2.
Имена классов
Имена методов
Функции
Разделение команд и запросов
Форматирование кода
Объекты и структуры данных. Процедурный код.
Объекты и структуры данных. Объектно-ориентированный код.
Обработка ошибок
SOLID
KISS
DRY
YAGNI
Рефакторинг
387.90K
Category: programmingprogramming

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

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

2.

2/21

3.

3/21

4. Какой код называют “чистым”?

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

5. Содержательные имена

•Не надо так: int d; //прошедшее время
•Лучше так:
• int daysSinceCreation;
• int fileAgeInDays;
5/21

6. Пример. Что делает эта функция?

• public List<int[]> getThem()
{
List<int[]> list1 = new List<int[]>();
foreach (int[] x in theList)
if (x[0] == 4)
list1.Add(x);
return list1;
}
6/21

7. Улучшение 1.

• public List<int[]> getFlaggedCells()
{
List<int[]> flaggedCells = new List<int[]>();
foreach (int[] cell in gameBoard)
if (cell[STATUS_VALUE] == FLAGGED)
flaggedCells.Add(cell);
return flaggedCells;
}
7/21

8. Улучшение 2.

• public List<Cell> getFlaggedCells()
{
List<Cell> flaggedCells = new List<Cell>();
foreach (Cell cell in gameBoard)
if (cell.isFlagged())
flaggedCells.Add(cell);
return flaggedCells;
}
8/21

9. Имена классов

• Существительные и их комбинации
• Customer, WikiPage, Account, AddressParser, …
9/21

10. Имена методов

• Глаголы или глагольные словосочетания
• PostPayment, DeletePage, Save, …
10/21

11. Функции

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

12. Разделение команд и запросов

if (set(“username”, “unclebob”))
if (AttributeExists("username"))
{
SetAttribute("username", "unclebob");
...
}
12/21

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

13/21

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

14/21

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

15/21

16. Обработка ошибок

16/21

17. SOLID

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

18. KISS

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

19. DRY

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

20. YAGNI

• You ain’t gonna need it
20/21

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

21/21
English     Русский Rules