Ответ
Синтаксическая сложность (Syntactic Complexity) — это метрика, оценивающая сложность кода на основе его структуры. Она учитывает количество и вложенность операторов, условий, циклов и других конструкций. Чем сложнее синтаксис, тем выше оценка.
Основные критерии:
- Вложенность — глубина блоков (if/for внутри других if/for).
- Количество операторов — общее число условий, циклов, вызовов функций.
- Длина функций/методов — чем длиннее, тем сложнее.
Пример высокой сложности:
function processData(data) {
if (data) {
for (let item of data) {
if (item.isValid) {
item.values.forEach(val => {
if (val > 0) {
console.log(val);
}
});
}
}
}
}
Инструменты для оценки:
- ESLint (правила типа
complexity). - SonarQube.
- Плагины для IDE (например, CodeMetrics в VS Code).
Оптимизация:
- Разделение на мелкие функции.
- Использование guard clauses.
- Упрощение условий через ранние возвраты.
Ответ 18+ 🔞
А, синтаксическая сложность, говоришь? Ну это ж, блядь, как оценить, насколько твой код похож на лапшу, которую не разберёшь без бутылки. Сука, это когда смотришь на функцию, а там такие дебри, что хуй с горы не разглядишь, где что начинается и чем кончается.
Основная идея-то проще пареной репы, ёпта. Считаем, сколько раз ты наворотил хуйни друг в друге. Вот смотри:
- Вложенность — это когда ты в
ifзасунулfor, а в него ещёif, а там ещёforEachс колбэком. Получается этажерка, блядь. Чем глубже — тем страшнее. Это как матрёшка, только вместо красотки — пиздец. - Количество операторов — просто тупо складываем все эти твои
if,else,for,while. Каждый — плюс к общей ебле головного мозга для того, кто будет это читать. - Длина функций — ну тут всё ясно, как божий день. Функция на три экрана — это уже не функция, а роман-эпопея «Война и мир, блядь, отладка». Терпения ебать ноль, чтобы до конца дочитать.
Вот, смотри, классический пример говнокода, от которого глаза кровоточат:
function processData(data) {
if (data) {
for (let item of data) {
if (item.isValid) {
item.values.forEach(val => {
if (val > 0) {
console.log(val);
}
});
}
}
}
}
Видишь эту красоту? Пять, сука, уровней вложенности! Это ж надо было так постараться! Чувак, который это писал, явно чувствовал себя архитектором, блядь, но получился просто мудак, нагородивший говна.
Чем это померить? Да есть куча инструментов, которые посмотрят на твой код и скажут: «Охуеть, да ты, сука, гений… гений ебли!». Например:
- ESLint — там есть правило
complexity, которое орёт, если ты перемудрил. - SonarQube — эта штука посмотрит и выдаст вердикт: «Пиздец, а не код».
- Плагины в IDE — типа CodeMetrics в VS Code. Они сразу красненьким подсветят, где у тебя мозг сломается при чтении.
А чтобы не быть таким мудаком, нужно код упрощать. Как?
- Дробить на мелкие функции. Взял кусок из середины своего монстра — вынес в отдельную функцию с понятным названием. Пусть живёт отдельно, блядь.
- Guard clauses использовать. Это когда в начале функции проверяешь все ебучкие условия, которые сразу позволяют выйти. Вместо того чтобы писать
if (data) { ... весь код ... }, пишешьif (!data) return;и дальше уже ровный код без лишней табуляции. Красота! - Упрощать условия. Ранние возвраты — наш everything. Не нужно строить пирамиды, как египтянин, блядь.
Короче, смысл в том, чтобы код был не как рассказ Тургенева «Муму» с глубоким трагическим подтекстом, а как чёткая инструкция «как не обосраться». Понял?