Источники
Список всех книг, статей, докладов и исследований, на которых основан доклад «Рефакторинг на максималках».
Исходный код всех примеров с доклада доступен на Гитхабе.
Книги
- Чёрный лебедь. Нассим Талеб
- Эффективная работа с легаси-кодом. Майкл Физерс
- Читаемый код. Д. Босуэлл, Т. Фаучер
- Рефакторинг. М. Фаулер, К. Бекк
- Отдебажь это! Пол Батчер
- Доменное моделирование в функциональном стиле. Скотт Влашин
- Структура и интерпретация компьютерных программ. Х. Абельсон, Дж. Сассман
- Код. Тайный язык информатики. Чарльз Петцольд
- Чистая архитектура. Роберт Мартин
- Domain-Driven Design, Eric Evans
- Code That Fits in Your Head, Mark Seemann
- Теория решения изобретательских задач, Генрих Альтшуллер
Статьи
- Попасть в окно рефакторинга
- The Human Cost of Tech Debt
- How to Get Your Code Reviewed Faster
- Полиморфизм простыми словами
- Parse, Don't Validate
-
Такой простой
Boolean
- Распутываем сложные условия в коде
- Основы функционального программирования
-
Destroy all
if
s - Anti-if, the Missing Patterns
- Why should you return early?
- Immutability
-
Option
type in F# - Impureim Sandwhich
- The Error Model
- Functional Core, Imperative Shell
- Difference between CQRS and CQS
- CQS versus server generated IDs
- Functional design is intrinsically testable
- Results in F#
- DDD, Hexagonal, Onion, Clean, CQRS, … How I put it all together
- Anti-Corruption Layer
- Dependency Rejection
- Higher Order Functions
- Maintain a Single Layer of Abstraction at a Time
- A conditional sandwich example
- Syntax in Functions, Pattern matching
- Bringing Pattern Matching to TypeScript
- Pattern Matching in JS
Доклады и видео
- Антипаттерны общие для всех парадигм. Тимур Шемсединов
- Рефакторинг: причины, цели, техники и процесс. Тимур Шемсединов
- ESLint & Prettier - Партизанщина
- Монады — не приговор, Виталий Брагилевский
- Почему ваша архитектура функциональная и как с этим жить, Роман Неволин
- Быстрорастворимое проектирование, Максим Аршинов
- Контрактное программирование, Тимур Шемсединов
- Метапрограммирование и мультипарадигменное программирование с примерами на JavaScript и Node.js. Тимур Шемсединов
- (Не|ну)жная монада Either на практике и в теории, Д. Махнёв, А. Кобзарь
- How do you prepare before tackling a problem?
- All the Little Things, Sandi Metz
- Transforming Code into Beautiful, Idiomatic Python
- 7 Ineffective Coding Habits of Many Programmers, Kevlin Henney
- Log4J & JNDI Exploit: Why So Bad?
- Maybe Not, Rich Hickey
- Where does bad code come from?
- Preventing the Collapse of Civilization
Исследования
- How Readable Code Is
- Evaluating Code Readability and Legibility
- Designing for Extensibility
- Code Readability Testing, an Empirical Study
Методологии
- Теория решения изобретательских задач, Генрих Альтшуллер
- Tools for better thinking
- Test-Driven Development
- Domain-Driver Design
Техники и рецепты
- Code Smells, Refactoring Guru
- Refactoring Technics, Refactoring Guru
- Паттерны проектирования
- Naming Cheatsheet
- 12 Factor Apps
- Refactoring Source Code in VSCode
Выдержи из “97 Things...”
- Красота и простота
- Перед началом рефакторинга
- Планируйте свой следующий коммит
- Автоматизируйте стандарт кодирования
- Читайте код
- Разметка кода важна!
- Изучайте другие языки программирования
- Удобство?
- Программируйте на языке предметной области
- Используйте типы из вашей предметной области
- «Подмоченный» код сложнее оптимизировать
- Осторожнее с повторным использованием!
- Мыслите состояниями
- Принцип единственности ответственности
- Выучить язык - значит понять его культуру
Термины на Википедии
- Рефакторинг
- Энтропия
- Автобусный фактор
- Требования к программному обеспечению
- Эвристика
- Закон Мёрфи
- Don't Repeat Yourself
- Абстракция
- Декларативность
- Уровни абстракции
- Разделение ответственности
- Декомпозиция
- Функциональное программирование
- Command Query Responsibility Segragation
- Инкапсуляция
- Композиция функций
- Булева алгебра
- Законы де Моргана
- Функция-предикат
- Чистые функции
- Предметно-ориентированное проектирование
- Функции высшего порядка
- Декоратор, паттерн
- Зацепление в программировании
- Закон Деметры
- Архитектурный паттерн MVC
Из блога автора
- Копипаста в коде
- Потерянная абстракция
- Разделение функций на команды и запросы
- Управление состоянием приложения с помощью конечного автомата
- Декларативная валидация с помощью правило-ориентированного подхода и функционального программирования
- Чистая архитектура во фронтенде
- Dependency Injection с TypeScript на практике
Об авторе
Саша Беспоясов, консультант в 0+X. Пишу код больше 10 лет. Веду технический блог, пишу о разработке.