Продолжаем бороться с переменными
Добрый день,
Сегодня заметки будут о временных переменных внутри функции.
Временные переменные плохи тем, что они временны и локальны. Временные переменные
локализуются в функциях. Поэтому мы знаем, где их искать.
Если мы использовали TDD, то все функции масенькие, изолированные и простые.
Там негде образовываться временным переменным. Поэтому этим переменным свойственно
появляться в длинных, длиннющих и огромных функциях. Знакома ситуация?
double total = order.Discount(); (1)
или
double total = quantity * cost; (2)
Решение здесь простое. Если они локальны, один раз инициируются и мешают нам
упрощать код функции, то каждая переменная превращается в функцию (2) или подставляется
собственно простое выражение (1). То есть удаляем переменную total, а заводим
функцию totaol(). И везде производим замену.
Если пристально посмотреть на код больших функций, то можно увидеть, что временные
переменный повышают связанность внутри одной функции. Поведение и локальные данные
очень связанные. Развязать это нереально. После такой замены связанность внутри
одной функции понижается и мы радостно можем применять рефакторинг Extract Method.
С Уважением,
Денис Миллер