«Работает - не трогай» - самый опасный принцип, который передается между разработчиками быстрее, чем баги через копипасту.
Да, код может запускаться. Да, он даже может делать то, что нужно. Но вопрос в другом - можно ли с ним работать? Понять, поправить, развить, не впадая в экзистенциальный кризис.
Эта памятка не про чистоту ради чистоты. Она про то, чтобы через неделю ты сам себе не писал комменты со словами «кто это вообще придумал». "Отревьюируй" себя пока это не сделал кто-то другой.
Обратите внимание, это памятка для начинающих!
Больше полезной информации для начинающих разработчиков в:
telegram: iOS Build & Run
YouTube: iOSBuildRun
Погнали!
1. Нейминг
Нейминг должен быть максимально коротким и понятным.
В нейминге констант и переменных используйте существительные (если это логическое значение, используйте прилагательные с вопросительным значением, например: isSelected = false).
Нейминг функций должен начинаться с глагола и четко определять, что происходит в теле функции.
___
2. Опечатки
Поверьте, перепроверить название или подглядеть в словарь не так страшно, как оставить код с ошибкой/опечаткой.
___
3. Ненужная пустота
Проверьте, нет ли в коде ненужных пустых строк, абзацев или пробелов.
___
4. Визуальное разделение
Этот пункт полное противопоставление 3 пункту. Используйте пустые абзацы для логического разделения кода.
Например: 6 констант/переменных (4 относятся к UI, 2 относятся к числовым/логическим значениям) можно разделить пустой строкой. Это повысит читаемость кода.
___
5. Комментарии
Если задействована сложная логика, напишите комментарий, поясняющий ее. Даже если это личный пет-проект, комментарий пригодится вам после качественной попойки :)
___
6. Иерархия файлов
Убедитесь, что структура и содержимое каталогов не вызывает вопросов.
___
7. Явное указание типа
Компания Apple заботиться о нас (с этим можно поспорить, но иногда они делают что-то полезное :) ). Swift - язык строгой типизации и поддерживает type inference, то есть в некоторые моменты он может сам определить тип. Пользуйтесь этим!
___
8. Хардкод
Проверьте, можно ли изменить какие-либо хардкодные проверки на enum. Частенько это бывают строки ( String значения ).
Шрифты, цвета и т. д. должны вызываться из отдельной структуры/перечисления.
___
9. Функциональное программирование
Это как раз тот случай, когда ребята из Apple помогают нам сделать код чище и читабельнее, а также уменьшить время на разработку.
Используйте функции высшего порядка!
___
10. Говорят за это увольняют(!)
Не используйте force unwrapping
___
11. self как много в этом слове...
Убедитесь, что нет retain cycle
___
12. 2 раза не повторяю, 2 раза не повторяю
Все эти принципы не просто так.
DRY (Don’t repeat yourself) - не знаете что такое, обязательно прочитайте
___
13. cmd + C, cmd + V
Позаимствовав у кого-то код, обязательно разберитесь в нем. Убедитесь, что он полностью подходит.
___
14. Deprecated
Проверьте, не используете ли вы устаревший API.
Возвращаясь к пункту 13: Скопировав код и не разобравшись в нем, вы можете использовать технологию, которая уже депредикейтнута.
___
15. Невозможно знать всего
Проверьте, есть ли какой-либо API, предоставляемый Apple, который может упростить ситуацию.
___
16. 6ой этаж в пятиэтажке
Везде, где используется доступ к значениям из массива, проверьте, есть ли возможность выхода за пределы.
___
17. Pyramid of doom
Избегайте большой вложенности. Это может относится практически ко всему: структуры, циклы, if else.
___
18. В гараж! Когда-нибудь да пригодится...
Проект это не гараж и не кладовка. Оставляйте только то, что работает сейчас. В общем YAGNI (You aren't gonna need it).
___
19. Укольчик
Убедитесь, что используете Dependency Injection.
___
20. Boy Scout Rule
Правило бойскаутов можно обобщить так: Оставляйте свой код лучше, чем он был до вас. У бойскаутов есть правило относительно кемпинга: они должны оставлять место для кемпинга чище, чем он был до вас.
В дополнение можете прочитать про Теорию разбитых окон.
21. А что если?
Подумайте о corner case. Все ли ошибки и возможные случаи вы обрабатываете.
___
22. Пососемся?
Не усложняй, все и так не просто...
Опять принципы: KISS (Keep It Simple, Stupid)
___
23. Слушаешь советы?
SwiftLint - слышали о таком? Проверьте, соблюдаются ли рекомендации
___
24. Есть такое слово "Надо"
Пишите тесты :)
___
Все, на этом чеклист закончен. Конечно, не все из этого строго обязательно, но почти все становится очевидным, когда читаешь чужой (или свой старый) код.
Делай ревью себе сам. Не ради перфекционизма, а ради того самого момента, когда код читается без боли.
Ну и помни: плохой код живет дольше, чем ты планировал. Лучше пусть он будет приличным.
Комментарии (4)
vadimr
05.07.2025 11:23Первый пункт противоречит девятому. Или глаголы в именах функций, или функциональное программирование. Функциональное программирование не требует императивной семантики.
hypocrites
05.07.2025 11:23Изменения ради изменений - идеология мутирующей клетки. А там и до рака недалеко.
pnmv
ого, да это же двойной удар - не только телеграм, но еще и ютуб. контента, правда, на трубе, маловато. жаль.
относительно темы и содержания статьи, должен заметить, что под "работает - не трожь!" лежит важное основание, о котором молодежь любит забывать: если код доехал до продакшена, этого вашего, значит он уже должен быть вылизан, до нужной, на момент отправки "тудой", стадии. если это не так, значит кое-кто запутался в своих сторипоинтах, еще на прошлой итерации.
исключением являются никому не нужные домашние проекты, сделанные на один раз, на коленке, и именно поэтому они выглядят, как правило, как попало, просто потому, что "хочу здесь и сейчас" лежит во главе угла.
v1000