Рефакторинг. Улучшение проекта существующего кода на Java Script 🔍
Мартин Фаулер при участии Кента Бека ; перевод с английского и редакция И. В. Красикова Диалектика; Диалектика, 2-е изд., Москва, Санкт-Петербург, Russia, 2019
俄语 [ru] · DJVU · 12.8MB · 2019 · 📘 非小说类图书 · 🚀/lgli/lgrs · Save
描述
Титульный лист
Выходные данные
Оглавление
Содержание
Предисловие к первому изданию
Введение
Что такое рефакторинг
О чем эта книга
Примеры кода на JavaScript
На кого рассчитана эта книга
На плечах других
Благодарности
Ждем ваших отзывов!
Глава 1. Первый пример рефакторинга
Начальная точка
Комментарии к программе
Первый шаг
Декомпозиция функции statement
Устранение переменной play
Извлечение бонусов
Удаление переменной format
Удаление переменной volumeCredits
Состояние: множество вложенных функций
Разделение вычисления и форматирования
Состояние: разделение на два файла (и этапы)
Реорганизация вычислений в соответствии с типом постановки
Создание калькулятора представлений
Перемещение функций в калькулятор
Превращение калькулятора представлений в полиморфный
Состояние: создание данных с помощью калькулятора представлений
Заключительные замечания
Глава 2. Принципы рефакторинга
Определение рефакторинга
Две шляпы
Почему нужно заниматься рефакторингом
Рефакторинг совершенствует проектирование программного обеспечения
Рефакторинг упрощает понимание программ
Рефакторинг помогает находить ошибки
Рефакторинг ускоряет написание программ
Когда нужно выполнять рефакторинг
Подготовительный рефакторинг — упрощение добавления функциональной возможности
Осмыслительный рефакторинг — упрощение понимания кода
Убирающий рефакторинг
Запланированный и спонтанный рефакторинги
Долгосрочный рефакторинг
Рефакторинг в ходе анализа кода
Что мне сказать руководству?
Когда не следует прибегать к рефакторингу
Проблемы при рефакторинге
Замедление внедрения новых возможностей
Владение кодом
Ветви
Тестирование
Устаревший код
Базы данных
Рефакторинг и архитектура
Рефакторинг и процесс разработки программного обеспечения
Рефакторинг и производительность
Истоки рефакторинга
Автоматизированные рефакторинги
Что дальше
Глава 3. Запахи в коде
Таинственное имя
Дублируемый код
Длинная функция
Длинный список параметров
Глобальные данные
Изменяемые данные
Расходящиеся изменения
Стрельба дробью
Завистливые функции
Группы данных
Одержимость примитивами
Повторяющиеся switch
Циклы
Ленивый элемент
Теоретическая общность
Временное поле
Цепочки сообщений
Посредник
Внутренний обмен
Большой класс
Альтернативные классы с разными интерфейсами
Классы данных
Отказ от наследства
Комментарии
Глава 4. Создание тестов
Важность самотестируемого кода
Пример кода для тестирования
Первый тест
Добавление другого теста
Изменение прибора тестирования
Проверка границ
И многое другое...
Глава 5. На пути к каталогу рефакторингов
Формат описания рефакторинга
Выбор рефакторинга
Глава 6. Первое множество рефакторингов
Извлечение функции (Extract Function)
Мотивация
Техника
Пример: переменных вне области видимости нет
Пример: использование локальных переменных
Пример: присваивание локальной переменной
Встраивание функции (Inline Function)
Мотивация
Техника
Пример
Извлечение переменной (Extract Variable)
Мотивация
Техника
Пример
Пример с классом
Встраивание переменной (Inline Variable)
Мотивация
Техника
Изменение объявления функции (Change Function Declaration)
Мотивация
Техника
Пример: переименование функции (простая техника)
Пример: переименование функции (техника миграции)
Пример: добавление параметра
Пример: замена параметра одним из его свойств
Инкапсуляция переменной (Encapsulate Variable)
Мотивация
Техника
Пример
Переименование переменной (Rename Variable)
Мотивация
Техника
Пример
Введение объекта параметра (Introduce Parameter Object)
Мотивация
Техника
Пример
Объединение функций в класс (Combine Functions into Class)
Мотивация
Техника
Пример
Объединение функций в преобразование (Combine Functions into Transform)
Мотивация
Техника
Пример
Разделение этапа (Split Phase)
Мотивация
Техника
Пример
Глава 7. Инкапсуляция
Инкапсуляция записи (Encapsulate Record)
Мотивация
Техника
Пример
Пример: инкапсуляция вложенной записи
Инкапсуляция коллекции (Encapsulate Collection)
Мотивация
Техника
Пример
Замена примитива объектом (Replace Primitive with Object)
Мотивация
Техника
Пример
Замена временной переменной запросом (Replace Temp with Query)
Мотивация
Техника
Пример
Извлечение класса (Extract Class)
Мотивация
Техника
Пример
Встраивание класса (Inline Class)
Мотивация
Техника
Пример
Сокрытие делегата (Hide Delegate)
Мотивация
Техника
Пример
Удаление посредника (Remove Middle Man)
Мотивация
Техника
Пример
Подстановка алгоритма (Substitute Algorithm)
Мотивация
Техника
Глава 8. Перенос функциональности
Перенос функции (Move Function)
Мотивация
Техника
Пример: перенос вложенной функции на верхний уровень
Пример: перенос между классами
Перенос поля (Move Field)
Мотивация
Техника
Пример
Пример: перенос в совместно используемый объект
Перенос инструкций в функцию (Move Statements into Function)
Мотивация
Техника
Пример
Перенос инструкций в точку вызова (Move Statements to Callers)
Мотивация
Техника
Пример
Замена встроенного кода вызовом функции (Replace Inline Code with Function Call)
Мотивация
Техника
Перемещение инструкций (Slide Statements)
Мотивация
Техника
Пример
Пример: перемещение с условными конструкциями
Дальнейшее чтение
Разделение цикла (Split Loop)
Мотивация
Техника
Пример
Замена цикла конвейером (Replace Loop with Pipeline)
Мотивация
Техника
Пример
Дальнейшее чтение
Удаление неработающего кода (Remove Dead Code)
Мотивация
Техника
Глава 9. Организация данных
Расщепление переменной (Split Variable)
Мотивация
Техника
Пример
Пример: присваивание входному параметру
Переименование поля (Rename Field)
Мотивация
Техника
Пример: переименование поля
Замена вычисленной переменной запросом (Replace Derived Variable with Query)
Мотивация
Техника
Пример
Пример: несколько источников
Замена ссылки значением (Change Reference to Value)
Мотивация
Техника
Пример
Замена значения ссылкой (Change Value to Reference)
Мотивация
Техника
Пример
Глава 10. Упрощение условной логики
Декомпозиция условной инструкции (Decompose Conditional)
Мотивация
Техника
Пример
Объединение условного выражения (Consolidate Conditional Expression)
Мотивация
Техника
Пример
Пример: использование операторов И
Замена вложенных условных конструкций граничным оператором (Replace Nested Conditional with Guard Clauses)
Мотивация
Техника
Пример
Пример: обращение условий
Замена условной инструкции полиморфизмом (Replace Conditional with Polymorphism)
Мотивация
Техника
Пример
Пример: использование полиморфизма для вариативного поведения
Введение частного случая (Introduce Special Case)
Мотивация
Техника
Пример
Пример: использование литерала объекта
Пример: использование преобразования
Введение утверждения (Introduce Assertion)
Мотивация
Техника
Пример
Глава 11. Рефакторинг API
Отделение запроса от модификатора (Separate Query from Modifier)
Мотивация
Техника
Пример
Параметризация функции (Parameterize Function)
Мотивация
Техника
Пример
Удаление аргумента-флага (Remove Flag Argument)
Мотивация
Техника
Пример
Сохранение всего объекта (Preserve Whole Object)
Мотивация
Техника
Пример
Пример: вариация для создания новой функции
Замена параметра запросом (Replace Parameter with Query)
Мотивация
Техника
Пример
Замена запроса параметром (Replace Query with Parameter)
Мотивация
Техника
Пример
Удаление метода установки значения (Remove Setting Method)
Мотивация
Техника
Пример
Замена конструктора фабричной функцией (Replace Constructor with Factory Function)
Мотивация
Техника
Пример
Замена функции командой (Replace Function with Command)
Мотивация
Техника
Пример
Замена команды функцией (Replace Command with Function)
Мотивация
Техника
Пример
Глава 12. Работа с наследованием
Подъем метода (Pull Up Method)
Мотивация
Техника
Пример
Подъем поля (Pull Up Field)
Мотивация
Техника
Подъем тела конструктора (Pull Up Constructor Body)
Мотивация
Техника
Пример
Опускание метода (Push Down Method)
Мотивация
Техника
Опускание поля (Push Down Field)
Мотивация
Техника
Замена кода типа подклассами (Replace Type Code with Subclasses)
Мотивация
Техника
Пример
Пример: использование косвенного наследования
Удаление подкласса (Remove Subclass)
Мотивация
Техника
Пример
Извлечение суперкласса (Extract Superclass)
Мотивация
Техника
Пример
Свертывание иерархии (Collapse Hierarchy)
Мотивация
Техника
Замена подкласса делегатом (Replace Subclass with Delegate)
Мотивация
Техника
Пример
Пример: замена иерархии
Замена суперкласса делегатом (Replace Superclass with Delegate)
Мотивация
Техника
Пример
Библиография
Предметный указатель
Список рефакторингов
Запахи в коде
备用文件名
lgrsnf/Фаулер М. Рефакторинг кода на JavaScript. (2019).djvu
备选标题
Рефакторинг кода на JavaScript: улучшение проекта существующего кода
备选作者
Фаулер, Мартин
备用出版商
б. и.; Диалектика
备用出版商
Dialektika
备用版本
2-е изд., Москва, Санкт-Петербург, Russia, 2020
备用版本
Russia, Russian Federation
元数据中的注释
Предм. указ.: с. 453-456
Библиогр.: с. 449-452
Пер.: Fowler, Martin Rafactoring improving the design of existing code 978-0-13-475759-9
元数据中的注释
РГБ
元数据中的注释
Russian State Library [rgb] MARC:
=001 010284446
=005 20200225152948.0
=008 200217s2020\\\\ru\a\\\\\\\\\\000\|\rus\d
=017 \\ $a КН-П-20-010417 $b RuMoRKP
=020 \\ $a 978-5-907144-59-0 $c 500 экз.
=040 \\ $a RuMoRGB $b rus $e rcr
=041 1\ $a rus $h eng
=044 \\ $a ru
=084 \\ $a З973.2-018.19JavaScript,0 $2 rubbk
=084 \\ $a З973.2-014,0 $2 rubbk
=100 1\ $a Фаулер, Мартин $d 1963-
=245 00 $a Рефакторинг кода на JavaScript : $b улучшение проекта существующего кода $c Мартин Фаулер при участии Кента Бека ; перевод с английского и редакция И. В. Красикова
=250 \\ $a 2-е изд.
=260 \\ $a Москва $b Диалектика ; $a Санкт-Петербург $b Диалектика $c 2020
=300 \\ $a 456 с. $b ил. $c 24 см
=336 \\ $a Текст (визуальный)
=337 \\ $a непосредственный
=500 \\ $a Предм. указ.: с. 453-456
=504 \\ $a Библиогр.: с. 449-452
=534 \\ $p Пер.: $a Fowler, Martin $t Rafactoring improving the design of existing code $z 978-0-13-475759-9
=650 \7 $a Техника. Технические науки -- Энергетика. Радиоэлектроника -- Радиоэлектроника -- Вычислительная техника -- Электронные вычислительные машины (компьютеры) -- Цифровые электронные вычислительные машины. Программирование -- Теория. Исследования -- Программирование. Web-программирование -- Языки программирования -- Отдельные языки и программирование на них -- JavaScript $2 rubbk
=650 \7 $a Техника. Технические науки -- Энергетика. Радиоэлектроника -- Радиоэлектроника -- Вычислительная техника -- Электронные вычислительные машины (компьютеры) -- Цифровые электронные вычислительные машины. Программирование -- Теория. Исследования -- Кодирование. Коды $2 rubbk
=700 1\ $a Бек, Кент
=852 \\ $a РГБ $b FB $j 2 20-9/211 $x 90
=852 \\ $a РГБ $b ORF $x 82
元数据中的注释
Предм. указ.: с. 453-456
Библиогр.: с. 449-452
Пер.: Refactoring. Improving the design of existing code 978-0-13-475759-9
元数据中的注释
Russian State Library [rgb] MARC:
=001 010092503
=005 20191017131429.0
=008 190918s2019\\\\ru\||||\\\\\\\0||\|\rus|d
=017 \\ $a КН-П-19-068663 $b RuMoRKP
=020 \\ $a 978-5-907144-59-0 $c 500 экз.
=040 \\ $a RuMoRGB $b rus $e rcr
=041 1\ $a rus $h eng
=044 \\ $a ru
=084 \\ $a З973.2-018,0 $2 rubbk
=084 \\ $a З973.2-014,0 $2 rubbk
=100 1\ $a Фаулер, Мартин, $d 1963-
=245 00 $a Рефакторинг. Улучшение проекта существующего кода на Java Script $c Мартин Фаулер при участии Кента Бека ; перевод с английского и редакция И. В. Красикова
=250 \\ $a 2-е изд.
=260 \\ $a Москва $b [б. и.] ; $a Санкт-Петербург $b Диалектика $c 2019
=300 \\ $a 456 с. $b ил. $c 24 см
=336 \\ $a Текст (визуальный)
=337 \\ $a непосредственный
=500 \\ $a Предм. указ.: с. 453-456
=504 \\ $a Библиогр.: с. 449-452
=534 \\ $p Пер.: $t Refactoring. Improving the design of existing code $z 978-0-13-475759-9
=650 \7 $a Техника. Технические науки -- Энергетика. Радиоэлектроника -- Радиоэлектроника -- Вычислительная техника -- Вычислительные машины электронные цифровые -- Программирование $2 rubbk
=650 \7 $a Техника. Технические науки -- Энергетика. Радиоэлектроника -- Радиоэлектроника -- Вычислительная техника -- Вычислительные машины электронные цифровые -- Коды $2 rubbk
=700 1\ $a Бек, Кент
=852 \\ $a РГБ $b FB $j 2 19-55/160 $x 90
=852 7\ $a РГБ $b CZ2 $h З973.2-018/Ф28 $x 83
开源日期
2024-07-17
更多信息……

🚀 快速下载

成为会员以支持书籍、论文等的长期保存。为了感谢您对我们的支持,您将获得高速下载权益。❤️

🐢 低速下载

由可信的合作方提供。 更多信息请参见常见问题解答。 (可能需要验证浏览器——无限次下载!)

所有选项下载的文件都相同,应该可以安全使用。即使这样,从互联网下载文件时始终要小心。例如,确保您的设备更新及时。
  • 对于大文件,我们建议使用下载管理器以防止中断。
    推荐的下载管理器:Motrix
  • 您将需要一个电子书或 PDF 阅读器来打开文件,具体取决于文件格式。
    推荐的电子书阅读器:Anna的档案在线查看器ReadEraCalibre
  • 使用在线工具进行格式转换。
    推荐的转换工具:CloudConvertPrintFriendly
  • 您可以将 PDF 和 EPUB 文件发送到您的 Kindle 或 Kobo 电子阅读器。
    推荐的工具:亚马逊的“发送到 Kindle”djazz 的“发送到 Kobo/Kindle”
  • 支持作者和图书馆
    ✍️ 如果您喜欢这个并且能够负担得起,请考虑购买原版,或直接支持作者。
    📚 如果您当地的图书馆有这本书,请考虑在那里免费借阅。