4. Язык мы знаем, что дальше?
• Нет неверных решений, есть
решенные задачи и не решенные
• Только хорошие программисты пишут
код…
• Все это понятно, но как?!!
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
22. Правила простого дизайна
(по Кенту Беку)
• Запускаются все тесты
• Не содержит повторений
• Выражает намерение
программиста
• Минимальное количество
классов и методов