Please enable JavaScript.
Coggle requires JavaScript to display documents.
ЧИСТЫЙ КОД - Coggle Diagram
ЧИСТЫЙ КОД
-
-
-
-
Выбирайте имена, удобные для поиска
-
-
-
-
-
-
-
-
-
-
-
-
-
Правило одной операции
Функция должна выполнять только одну операцию.
Она должна выполнять её хорошо.
И ничего другого она делать не должна.
Для определения
Попробовать извлечь из неё другую функцию, которая бы не являлась простой переформулировкой реализации
-
Секции в функциях
Признак того, что функция выполняет более одной операции
-
Команды switch
Недостатки
- Громоздкая и при увеличении типов будет разрастаться
- Выполняет более одной операции
- Нарушает принцип единой ответственности:
существует несколько возможных причин для изменения
- Нарушает принцип открытости/закрытости:
код изменяется при каждом добавлении новых типов
- Порождает неограниченное кол-во функций с такой же структурой
-
-
Аргументы функций
Типы
Унарная
(1 аргумент)
Виды
Проверка условия, связанного с аргументом
Обработка аргумента, его преобразование и возвращение
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Не возвращайте null
-
Возвращать вместо, например, пустой массив
-
-
-
Отделение main
Один из способов отделения конструирования от использования - перемещение конструирования в main и передача объектов вниз
-
-
Масштабирование
Архитектура программных систем может развиваться последовательно, если обеспечить правильное разделение ответственности
-
-
-
-
-
Три закона TDD
-
Законы
- Не пишите код продукта, пока не напишете отказной модульный тест
- Не пишите модульный тест в объёме большем, чем необходимо для отказа
- Не пишите код продукта в объёме большем, чем необходимо для прохождения текущего отказного теста
-
О чистоте тестов
Тестовый код не менее важен, чем код продукта
Тесты "на скорую руку" равносильны полному отсутствию тестов или даже хуже - их тоже нужно поддерживать
-
-
-
-
-
-
-
Знайте модели выполнения
-
-
-
Базовые определения
-
-
Зависание
Работа одного или нескольких потоков приостанавливается на длительное время.
Например, из-за очереди высокоприоритетных потоков
-
-
-
-
-
Разное
-
-
-
-
-
-
G7: Базовые классы, зависящие от производных
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Расплата за хаос
-
-
Отношение
Ответственность за чистоту кода лежит исключительно на программисте. И никакие сроки не должны этому мешать
-
-
-
Правило бойскаута
Оставь место стоянки [код] чище,
чем оно было до твоего прихода
Комментарии - это неизбежное зло, признак неудачи
-
-
Хорошие комментарии
-
-
-
Прояснение
Пояснительный комментарий в коде стандартной библиотеки или код, который нельзя изменить
-
-
Комментарии TODO
-
Не стоит злоупотреблять, оставлять плохой код
-
Усиление
Подчёркивать важность обстоятельства,
которое кажется несущественным
-
Плохие комментарии
-
Избыточные комментарии
-
Комментарии, описывающие работу кода
-
-
Обязательные комментарии
Правило, что каждая функция должна иметь комментарий НЕВЕРНО
То, что можно найти в GIT
-
-
-
-
Опасный шум
Копи-паста, которую забыли исправить
-
JSDoc во внутреннем коде
Не приносит выгоды, формализм отвлекает
Нелокальная информация
Комментарий должен описывать лишь код, находящийся поблизости
- ОБЪЕКТЫ И СТРУКТУРЫ ДАННЫХ
Абстракция данных
-
-
Чтобы найти лучший способ представления данных, содержащихся в объекте, нужно хорошо поразмыслить
-
-
Закон Деметры
Закон
Кратко
Модуль не может знать внутреннее устройство тех объектов, с которыми он работает
-
-
-
-
Скрытие структуры
Объект должен выполнить операцию, а не предоставлять информацию о внутреннем устройстве
ctxt.getAbsolutePathOfScratchDirectoryOption()
vs.
Посмотреть где дальше используется:
ctxt.createScratchFileStream(classFileName)
-
-
-
Чистые границы
В хорошей программной архитектуре внесение изменений обходится без значительных затрат и усилий по переработке
Чётко определять код, который находится вне нашего контроля
Строение классов
Порядок
- public static
- private static
- private
За каждой из них - приватные функции, которые используются в открытой.
Соответствует правилу понижения
-
-
-
Связность
Чем с большим количеством переменных класса работает метод класса - тем выше связность метода с классом
Высокая связность указывает на то, что методы и переменные существуют как единое целое
-
-
-