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

Preview:

Citation preview

goit.com.uavk.com/goITclub

facebook.com/goITclub

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

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

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

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

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

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

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

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

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

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

Clean Code by Robert C. Martin

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

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

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

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

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

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

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

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

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

контекста

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

методах

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

goit.com.uavk.com/goITclub

facebook.com/goITclub