goit.com.ua
vk.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.ua
vk.com/goITclub
facebook.com/goITclub

Clean code

  • 1.
  • 2.
  • 4.
    Язык мы знаем,что дальше? • Нет неверных решений, есть решенные задачи и не решенные • Только хорошие программисты пишут код… • Все это понятно, но как?!!
  • 5.
    Куда можно расти? •Архитектурные улучшения – GoF, GRASP… • Методологические улучшения – Agile (SCRUM, XP…) • Структурные улучшения – юнит-тесты, документация, continuous building…
  • 6.
    Все это понятно,но можно побыстрее?
  • 7.
    Clean Code byRobert C. Martin • Посмотрим, что внутри
  • 8.
    Хороший код/плохой код •Стоимость плохого кода • Ценность хорошего кода • Оценка качества кода
  • 9.
    Самое важное вкоде - названия • Названия должны нести смысл • Не обманывайте • Произносимые названия • Поиск по названиям • Не кодируйте! • Не надо демонстрировать свой ум • Существительные – классы, методы - глаголы • Не будьте милым
  • 10.
    Самое важное вкоде - названия • Одна вещь – одно название • Не смешивайте • Используйте слова из предметной области • Включайте названия в контекст • Не используйте лишнего контекста
  • 11.
    Методы • Короткие! • Делаюттолько одно • Один уровень абстракции на весь метод • SWITCH • Описательные имена • Аргументы (0,1,2,3) • Флаги
  • 12.
    Методы • Без side-effects •Аргументы, используемые как результат • Или что-то делаешь, или возвращаешь • Exceptions / return codes • Try-catch в отдельных методах • Don’t repeat yourself • Структурное программирование/один вход – один выход
  • 13.
    Комментарии • Не делайтеиз комментариев макияжа • Самовыражайтесь в коде • Хорошие комментарии • Плохие комментарии
  • 14.
    Хорошие комментарии • Legal •Пояснения к поведению • Пояснение намерений • Пояснение запутанной части кода • Предупреждение о последствиях • TO DO • Javadocs
  • 15.
    Плохие комментарии • Бормотание •Излишние комментарии • Вводящий в заблуждение • Комментарии из-под палки • Журнал изменений • Белый шум • Используйте метод или переменную вместо комментария • Маркеры кода ====== • Комментарии о закрытии блока • Закоментаренный код
  • 16.
    Плохие комментарии • HTMLкомментарии • Информация о системе в локальном комментарии • Слишком много информации • Непонятные комментарии • Javadocs в не публичных методах
  • 17.
    Форматирование • Форматирование –это важно • Метафора газетной статьи • Пропуски между концепциями • Вертикальная дистанция • Вертикальный порядок • Длина строки (80-100-120) • Выравнивание • Расположение фигурных скобок, однострочные методы • Правила команды
  • 18.
    Объекты и структуры •Именование классов и интерфейсов • Объекты и структуры данных • Закон Деметры • Гибриды • Сокрытие структуры • Data Transfer Objects • Active Records
  • 19.
    Error handling • Используйтеисключения, а не коды возврата • Начинайте с блока try- catch-finally • Не используйте checked exceptions • Указывайте контекст в исключениях • Не возвращайте null • Не передавайте null в методы
  • 20.
    Классы • Классы должныбыть короткими • Single Responsibility Principle • Оси изменений и изоляция от изменений • Open-Closed Principle
  • 21.
    Система • Отделение старта системыот использования • Выделение фабрик • Масштабирование
  • 22.
    Правила простого дизайна (поКенту Беку) • Запускаются все тесты • Не содержит повторений • Выражает намерение программиста • Минимальное количество классов и методов
  • 23.