java: clean coding как стиль жизни [25.04.15]

23
goit.com.ua vk.com/goITclub facebook.com/ goITclub

Upload: goit

Post on 05-Aug-2015

99 views

Category:

Technology


3 download

TRANSCRIPT

Page 1: Java: Clean Coding как стиль жизни [25.04.15]

goit.com.uavk.com/goITclub

facebook.com/goITclub

Page 2: Java: Clean Coding как стиль жизни [25.04.15]

Как помыть кота?Clean Code

Page 3: Java: Clean Coding как стиль жизни [25.04.15]
Page 4: Java: Clean Coding как стиль жизни [25.04.15]

Язык мы знаем, что дальше?

• Нет неверных решений, есть решенные задачи и не решенные

• Только хорошие программисты пишут код…

• Все это понятно, но как?!!

Page 5: Java: Clean Coding как стиль жизни [25.04.15]

Куда можно расти?

• Архитектурные улучшения – GoF, GRASP…

• Методологические улучшения – Agile (SCRUM, XP…)

• Структурные улучшения – юнит-тесты, документация, continuous building…

Page 6: Java: Clean Coding как стиль жизни [25.04.15]

Все это понятно, но можно побыстрее?

Page 7: Java: Clean Coding как стиль жизни [25.04.15]

Clean Code by Robert C. Martin

• Посмотрим, что внутри

Page 8: Java: Clean Coding как стиль жизни [25.04.15]

Хороший код/плохой код• Стоимость плохого кода• Ценность хорошего кода• Оценка качества кода

Page 9: Java: Clean Coding как стиль жизни [25.04.15]

Самое важное в коде - названия• Названия должны нести смысл• Не обманывайте• Произносимые названия• Поиск по названиям• Не кодируйте!• Не надо демонстрировать свой

ум• Существительные – классы,

методы - глаголы• Не будьте милым

Page 10: Java: Clean Coding как стиль жизни [25.04.15]

Самое важное в коде - названия

• Одна вещь – одно название• Не смешивайте• Используйте слова из

предметной области• Включайте названия в

контекст• Не используйте лишнего

контекста

Page 11: Java: Clean Coding как стиль жизни [25.04.15]

Методы• Короткие!• Делают только одно• Один уровень

абстракции на весь метод

• SWITCH• Описательные имена• Аргументы (0,1,2,3)• Флаги

Page 12: Java: Clean Coding как стиль жизни [25.04.15]

Методы• Без side-effects• Аргументы, используемые как результат• Или что-то делаешь, или возвращаешь• Exceptions / return codes• Try-catch в отдельных методах• Don’t repeat yourself • Структурное программирование/один

вход – один выход

Page 13: Java: Clean Coding как стиль жизни [25.04.15]

Комментарии• Не делайте из

комментариев макияжа• Самовыражайтесь в коде• Хорошие комментарии• Плохие комментарии

Page 14: Java: Clean Coding как стиль жизни [25.04.15]

Хорошие комментарии• Legal• Пояснения к поведению • Пояснение намерений• Пояснение запутанной

части кода• Предупреждение о

последствиях• TO DO• Javadocs

Page 15: Java: Clean Coding как стиль жизни [25.04.15]

Плохие комментарии• Бормотание• Излишние комментарии• Вводящий в заблуждение• Комментарии из-под палки• Журнал изменений• Белый шум• Используйте метод или

переменную вместо комментария• Маркеры кода ======• Комментарии о закрытии блока• Закоментаренный код

Page 16: Java: Clean Coding как стиль жизни [25.04.15]

Плохие комментарии

• HTML комментарии• Информация о системе в

локальном комментарии• Слишком много информации• Непонятные комментарии• Javadocs в не публичных

методах

Page 17: Java: Clean Coding как стиль жизни [25.04.15]

Форматирование• Форматирование – это важно• Метафора газетной статьи• Пропуски между концепциями• Вертикальная дистанция• Вертикальный порядок• Длина строки (80-100-120)• Выравнивание• Расположение фигурных

скобок, однострочные методы• Правила команды

Page 18: Java: Clean Coding как стиль жизни [25.04.15]

Объекты и структуры• Именование классов и

интерфейсов• Объекты и структуры

данных• Закон Деметры• Гибриды• Сокрытие структуры• Data Transfer Objects• Active Records

Page 19: Java: Clean Coding как стиль жизни [25.04.15]

Error handling• Используйте исключения, а не

коды возврата• Начинайте с блока try-catch-

finally • Не используйте checked

exceptions• Указывайте контекст в

исключениях• Не возвращайте null• Не передавайте null в методы

Page 20: Java: Clean Coding как стиль жизни [25.04.15]

Классы• Классы должны быть

короткими • Single Responsibility

Principle • Оси изменений и

изоляция от изменений• Open-Closed Principle

Page 21: Java: Clean Coding как стиль жизни [25.04.15]

Система• Отделение старта

системы от использования

• Выделение фабрик• Масштабирование

Page 22: Java: Clean Coding как стиль жизни [25.04.15]

Правила простого дизайна (по Кенту Беку)• Запускаются все тесты• Не содержит повторений• Выражает намерение

программиста• Минимальное количество

классов и методов

Page 23: Java: Clean Coding как стиль жизни [25.04.15]

goit.com.uavk.com/goITclub

facebook.com/goITclub