Upload
goit
View
100
Download
3
Embed Size (px)
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