Loading...
Loading...
Compare original and translation side by side
.ts.tsx.js.jsxpackage.json.ts.tsx.js.jsxpackage.json| Principle | Description |
|---|---|
| Pure functions | No side effects, same input → same output |
| Immutability | Never mutate, always return new values |
| Declarative style | Describe what, not how |
| Function composition | Build complex from simple functions |
| Higher-order functions | Functions that take/return functions |
| Avoid shared state | No globals, no mutation of external state |
| Discriminated unions | TypeScript pattern matching alternative |
| 原则 | 描述 |
|---|---|
| 纯函数 | 无副作用,相同输入始终返回相同输出 |
| 不可变性 | 绝不修改原有值,始终返回新值 |
| 声明式风格 | 描述要做什么,而非具体怎么做 |
| 函数组合 | 用简单函数构建复杂函数 |
| 高阶函数 | 接收或返回函数的函数 |
| 避免共享状态 | 无全局变量,不修改外部状态 |
| 可辨识联合 | TypeScript的模式匹配替代方案 |
// Before: imperative loop
let results = [];
for (let i = 0; i < items.length; i++) {
if (items[i].active) {
results.push(transform(items[i]));
}
}
// After: declarative
const results = items
.filter(item => item.active)
.map(transform);// 之前:命令式循环
let results = [];
for (let i = 0; i < items.length; i++) {
if (items[i].active) {
results.push(transform(items[i]));
}
}
// 之后:声明式
const results = items
.filter(item => item.active)
.map(transform);// Before: mutation
function addItem(cart, item) {
cart.items.push(item);
cart.total += item.price;
return cart;
}
// After: immutable
function addItem(cart, item) {
return {
...cart,
items: [...cart.items, item],
total: cart.total + item.price
};
}// 之前:可变操作
function addItem(cart, item) {
cart.items.push(item);
cart.total += item.price;
return cart;
}
// 之后:不可变实现
function addItem(cart, item) {
return {
...cart,
items: [...cart.items, item],
total: cart.total + item.price
};
}// Before: shared state
let counter = 0;
function increment() {
counter++;
return counter;
}
// After: pure
function increment(counter) {
return counter + 1;
}// 之前:共享状态
let counter = 0;
function increment() {
counter++;
return counter;
}
// 之后:纯函数实现
function increment(counter) {
return counter + 1;
}// Before: nested
function process(data) {
const validated = validate(data);
if (validated) {
const transformed = transform(validated);
return format(transformed);
}
return null;
}
// After: composed (with pipe/flow)
const process = pipe(
validate,
transform,
format
);// 之前:嵌套逻辑
function process(data) {
const validated = validate(data);
if (validated) {
const transformed = transform(validated);
return format(transformed);
}
return null;
}
// 之后:组合实现(使用pipe/flow)
const process = pipe(
validate,
transform,
format
);| Anti-Pattern | Refactor To |
|---|---|
| |
| |
| Nested callbacks | Composition or async/await |
| Option/Maybe type |
| Result/Either type |
| Class with mutable state | Pure functions + data |
| Global variables | Dependency injection |
| Pattern matching or lookup tables |
| 反模式 | 重构方向 |
|---|---|
带push的 | |
带重新赋值的 | 带转换的 |
| 嵌套回调 | 函数组合或async/await |
到处都是 | Option/Maybe类型 |
到处都是 | Result/Either类型 |
| 带可变状态的类 | 纯函数 + 数据 |
| 全局变量 | 依赖注入 |
| 模式匹配或查找表 |