Sources
Complete list of all books, articles, talks, and studies on which my talk “Refactor like a superhero” is based.
The source code of all the examples from the talk is available on GitHub.
Books
- The Black Swan by Nassim Nicholas Taleb
- Working Effectively with Legacy Code by Michael C. Feathers
- The Art of Readable Code by D. Bowsell, T. Foucher
- Refactoring by M. Fowler, K. Beck
- Debug It! by Paul Butcher
- Domain Modeling Made Functional by Scott Wlaschin
- Code That Fits in Your Head by Mark Seemann
- Structure and Interpretation of Computer Programs, H. Abelson, J. Sussman
- Code by Charles Petzold
- The Clean Architecture by Robert C. Martin
- Domain-Driven Design, Eric Evans
- TRIZ, Genrich Altshuller
Articles and Posts
- The Human Cost of Tech Debt
- How to Get Your Code Reviewed Faster
- Program like Proteus — a beginner’s guide to polymorphism in JavaScript
- Types and Polymorphism
- Parse, Don't Validate
-
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
- Functional design is intrinsically testable
- Results in F#
- DDD, Hexagonal, Onion, Clean, CQRS, … How I put it all together
- Anti-Corruption Layer
- CQS versus server generated IDs
- 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
Talks and Videos
- 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
In Russian with Subtitles or Supporting Materials in English
- ESLint & Prettier - “Partisanship”
- Refactoring: Reasons, Objectives, Technics, Process. Timur Shemsedinov
- Antipatterns as Worst Practices, Timur Shemsedinov
- Metaprogramming and Multi-Paradigm Programming with JavaScript and Node.js. Timur Shemsedinov
In Russian without Subtitles
- Monads aren't a verdict, Vitaly Bragilevsky
- Why Your Architecture is Functional, Roman Nevolin
- Fast soluble design, Maxim Arshinov
- Contract Programming, Timur Shemsedinov
- (Un)necessary Either, D. Makhnyov, A. Kobzar
Studies
- How Readable Code Is
- Evaluating Code Readability and Legibility
- Designing for Extensibility
- Code Readability Testing, an Empirical Study
Methodologies
Technics and Recipes
- Code Smells, Refactoring Guru
- Refactoring Technics, Refactoring Guru
- Design Patterns
- Design Patterns for Humans
- Naming Cheatsheet
- 12 Factor Apps
- Refactoring Source Code in VSCode
Excerpts from “97 Things Every Programmer Should Know”
- Beauty Is in Simplicity
- Before You Refactor
- Know Your Next Commit
- Automate Your Coding Standard
- Read Code
- Code Layout Matters
- Know Well More than Two Programming Languages
- Convenience Is not an -ility
- Code in the Language of the Domain
- Prefer Domain-Specific Types to Primitive Types
- WET Dilutes Performance Bottlenecks
- Beware the Share
- Thinking in States
- The Single Responsibility Principle
- Don't Just Learn the Language, Understand its Culture
From Wikipedia
- Code Refactoring
- Entropy
- Bus Factor
- Software Requirements
- Heuristic
- Murphy's Law
- Don't Repeat Yourself
- Abstraction
- Declarative Programming
- Abstraction Layer
- Separation of Concerns
- Decomposition
- Functional Programming
- Function Composition
- Command–Query Separation
- Encapsulation
- Boolean algebra (structure)
- De Morgan's laws
- Pure Function
- Predicate
- Domain-driven design
- Higher-order function
- Coupling
- Law of Demeter
- Model–View–Controller
From Author's Blog
- Copypaste in Code
- Missing Abstraction
- Command-Query Separation
- Application State Management with Finite State Machines
- Declarative Data Validation with Rule-Based Approach and Functional Programming
- Clean Architecture on Frontend
- Dependency Injection with TypeScript in Practice
About Author
Alex Bespoyasov, developer at 0+X. Been writing code more than 10 years now. Have a technical blog where I collect and share my experience in software development.