Ответ
Чистый код — это практика написания программного обеспечения, при которой код становится понятным и предсказуемым как книга. Это реализация принципов хорошего кода на практике.
Основные принципы:
-
Выразительные имена: Имя должно сразу отвечать на вопросы "что это?" и "зачем это?".
// Плохо var d: Int func pr() {} // Хорошо var daysSinceLastLogin: Int func printInvoice() {} -
Компактные функции: Функция должна делать одну вещь и умещаться на одном экране (обычно < 20 строк).
-
Минимум аргументов: Чем меньше параметров у функции, тем легче её понять и тестировать. 0-2 аргумента — идеально.
-
Отсутствие "магических" чисел и строк: Все константы должны быть именованными.
// Плохо if user.age >= 18 { ... } // Хорошо let legalAdultAge = 18 if user.age >= legalAdultAge { ... } -
Прямолинейная логика: Избегайте глубокой вложенности условий. Используйте guard для раннего возврата.
// Плохо func process(order: Order?) { if order != nil { if order?.isValid == true { // основная логика } } } // Хорошо func process(order: Order?) { guard let order = order, order.isValid else { return } // основная логика } -
Соблюдение соглашений: Следование принятым в команде и языку стандартам (отступы, структура файлов).
Цель: Чистый код экономит время и нервы всей команды на этапах ревью, отладки и рефакторинга.
Ответ 18+ 🔞
Слушай, а вот этот ваш «чистый код» — это ж не какая-то там высшая математика, а просто, блядь, здравый смысл, доведённый до абсолюта! Это когда ты пишешь так, чтобы через полгода не пришлось разгадывать свои же шифровки, как египетские иероглифы, сука.
Основная мысль — код должен быть как хорошая книжка: открыл, прочитал, всё понял, а не как записка от психопата, где каждая строчка — новая загадка.
Вот на чём всё держится, если по-простому:
-
Имена, от которых не болит башка. Называй вещи так, чтобы сразу было ясно, что это за хуйня и зачем она нужна. Не
d, аdaysSinceLastLogin. Неpr(), аprintInvoice(). Элементарно, Ватсон! А то потом сидишь и гадаешь: «А этоd— это дни или доллары? Аpr— это print или prank?».// Пиздец, что это? var d: Int func pr() {} // А, вот теперь понятно, спасибо, кэп! var daysSinceLastLogin: Int func printInvoice() {} -
Функции-коротышки. Функция должна делать ОДНУ вещь. И влезать, в идеале, на один экран. Если она разрослась, как говно в проруби, — пора резать на куски. 20 строк — уже много, 100 — это пиздец, апокалипсис.
-
Аргументов — в меру. Чем их меньше, тем лучше. Ноль — идеально. Два — ещё терпимо. Три — уже подозрительно. Пять — ты явно что-то делаешь не так, дружок. С таким количеством параметров уже и тестировать страшно, и вызывать.
-
Никакой магии, только хардкор. Эти ваши «магические числа» и строки, раскиданные по коду — они же как мины. Наступишь — проект ебнется. Выноси в константы с нормальными именами, и спи спокойно.
// Плохо: а почему 18? А если закон поменяется? if user.age >= 18 { ... } // Хорошо: всё на своих местах, всё ясно. let legalAdultAge = 18 if user.age >= legalAdultAge { ... } -
Прямая дорога, а не лабиринт Минотавра. Зачем городить эти вложенные
ifв три этажа, если можно сделать красиво и сguard? Ранний выход — наше всё. Сразу отсекаем всё невалидное и идём по чистому, прямому пути к логике.// Плохо: уже голова кружится от вложенности. func process(order: Order?) { if order != nil { if order?.isValid == true { // основная логика } } } // Хорошо: guard, как вышибала, — не прошёл проверку, нахуй с пляжа. func process(order: Order?) { guard let order = order, order.isValid else { return } // основная логика — чистое поле! } -
Держи строй! Соблюдай соглашения команды и языка. Отступы, порядок импортов, структура файлов — это не для зануд, это чтобы все выглядело единообразно. Открываешь любой файл — и сразу понимаешь, где что искать.
А суть-то, блядь, в чём? В экономии времени и нервов, ебать мои старые костыли! Ты потратишь на написание чистого кода на 10% больше времени сейчас, но сэкономишь 90% времени и сил всей команды потом, когда этот код будут читать, править, дебажить и расширять. Это как инвестиция в своё же спокойное будущее, а не в адский рефакторинг в пятницу вечером.