Ответ
Принцип KISS (Keep It Simple, Stupid / Keep It Short and Simple) — это философия проектирования, призывающая создавать максимально простые и понятные решения. Сложность увеличивает вероятность ошибок, усложняет понимание, тестирование и поддержку кода.
Практическое применение KISS:
-
Простые функции: Функция должна делать одну вещь и делать её хорошо.
// Сложно для восприятия func process(data: [Int]) -> [Int] { return data.filter { $0 > 0 }.map { $0 * $0 }.sorted() } // Проще и понятнее (можно вынести шаги в отдельные функции с говорящими именами) func getPositiveNumbers(from array: [Int]) -> [Int] { return array.filter { $0 > 0 } } func squareNumbers(_ array: [Int]) -> [Int] { return array.map { $0 * $0 } } func processData(_ data: [Int]) -> [Int] { let positive = getPositiveNumbers(from: data) let squared = squareNumbers(positive) return squared.sorted() } -
Понятные имена: Имена переменных, функций и классов должны однозначно отражать их назначение.
-
Избегание преждевременной оптимизации и излишней абстракции: Не добавляй сложные паттерны «на будущее», если текущие требования этого не требуют.
-
Прямолинейный поток управления: Минимизируй вложенность условий (
if/else) и циклов.
Цель KISS: Сделать код настолько простым, чтобы его мог понять даже новый разработчик в команде.
Ответ 18+ 🔞
Слушай, а вот есть такая хуйня, принцип KISS. Расшифровывается как «Keep It Simple, Stupid», что в переводе на наш, блядь, родной означает «делай проще, долбоёб». Суть в чём, а? В том, что если решение выглядит как ёперный театр с куполами и хуями в пальто — ты, скорее всего, накосячил. Сложность — это рассадник багов, пиздеца и вечных вопросов «какого хуя тут написано?» от коллег, которым через полгода этот код поддерживать.
Как это выглядит на практике, ёпта?
-
Функции-однодневки. Функция должна делать что-то одно. Не «принять данные, валидировать, отправить на сервер, обработать ответ, обновить интерфейс и сходить за хлебом». Одно действие. Посмотри на этот пиздец:
// Че это блядь такое? Фильтруем, потом мапим, потом сортируем... Всё в одну строку, красава. А через месяц читать. func process(data: [Int]) -> [Int] { return data.filter { $0 > 0 }.map { $0 * $0 }.sorted() }А теперь так:
// Всё, блядь, по полочкам. Каждая функция — как отдельный винтик. Понятно, что происходит. func getPositiveNumbers(from array: [Int]) -> [Int] { return array.filter { $0 > 0 } } func squareNumbers(_ array: [Int]) -> [Int] { return array.map { $0 * $0 } } func processData(_ data: [Int]) -> [Int] { let positive = getPositiveNumbers(from: data) let squared = squareNumbers(positive) return squared.sorted() }Да, строк больше. Но читается так, будто тебе книжку вслух читают, а не шифровку из штаба Рейха подсовывают.
-
Имена, от которых не болит булка. Не называй переменную
x,tempилиdataHandlerFactoryAdapterImpl. Назови так, чтобы даже пьяный в стельку стажёр, глянув, сказал: «А, ну это ж ясно, блядь,userProfileImageURL». -
Не выёбывайся с архитектурой. Не надо впаривать абстрактную фабрику для двух кнопок на экране «О приложении». Не надо оптимизировать цикл из пяти элементов, ебать его в сраку. Сначала сделай просто и чтобы работало. Потом, если реально упрёшься в проблему — будешь думать.
-
Прямой как палка код. Если твой
ifвнутриswitchвнутриforвнутри ещё какого-тоif— это уже не код, а лабиринт Минотавра. Выпрямляй эту хуйню. Ранние возвраты (guard,return) — твои лучшие друзья.
А главная цель KISS, блядь, какая? Чтобы код был настолько простым и очевидным, что новый чувак в команде, только вчера пришедший, посмотрел на него и сказал: «Да, ну тут всё понятно». А не сидел три часа, чеша репу, и не гуглил «что за хуйня». Вот и весь принцип. Не умничай, делай проще.