amarao: (Default)
[personal profile] amarao
(почему я про это пишу? Потому что я уже больше месяца занимаюсь самым тяжёлым рефакторингом, который у меня когда-либо был, по кодовой базе, которую я не могу держать в голове).

Ещё одна интересная цель для рефакторинга: уменьшать что-то. Чаще всего, люди хотят уменьшить что? Когнитивную нагрузку.

Что такое когнитивная нагрузка? Это когда приходится много помнить. Одно из решений в такой ситуации, это "квадратно-гнездовой подход", когда конкретное место в коде, пусть и простое, и даже проще чем соседи, делается сложнее ради того, чтобы быть одинаковым. Да, в конкретном месте всё просто и состоит их 5 строк вместо 20, но это ДРУГИЕ 5 строк, а рядом 199 раз по 20 одинаковых строк (однинаковой структуры), так что эти 5 простых строк, на самом деле не "5 строк вместо 20", а это "выкинуть 20-строчный паттерн из головы и разбираться с *особым случаем* из 5 новых строк". В такой сиутации рефакторинг может выглядеть странно: было просто и на 5 строк, а стало сложно и на 20, но истинная ценность в том, что раньше было 199 x один, плюс второй, а стало 200 x один, и это значительно проще.

Понять важность этого может только человек, который видит эти 199. Работая над локальным кусочком есть огромное желание срезать эти лишние хвосты и сделать проще. Баланс между локальной простотой и глобальной сложностью - это вечная драма, у которой нет простого ответа...

Date: 2024-02-10 11:41 am (UTC)
juan_gandhi: (Default)
From: [personal profile] juan_gandhi

CI, конечно, да. Там унификация на другом уровне, похоже.

Date: 2024-02-11 11:35 am (UTC)
juan_gandhi: (Default)
From: [personal profile] juan_gandhi

Логично, конечно. Но надо различать. Одно дело каплинг внутри модуля, другое дело - между модулями. А лишние параметры, согласно книжкам по рефакторингу, нужно засовывать в передаваемый объект. В опциональные параметры я вообще не верю; опция не для вывода, а для ввода. Ну так подумать категорно, вот есть монада Option, и что представляет собой функция f:Option[T]->U? Только мешает.

Profile

amarao: (Default)
amarao

February 2026

S M T W T F S
123456 7
8910111213 14
15161718192021
22232425262728

Most Popular Tags

Page Summary

Style Credit

Expand Cut Tags

No cut tags
Page generated Feb. 26th, 2026 08:03 am
Powered by Dreamwidth Studios