# 第四章 审美
## 为什么审美这么重要
代码审美直接影响代码的可读性和可维护性。美观的代码不仅让人愉悦,还能显著提高团队协作效率。
// 不好的代码风格
function calculate(a:number,b:number,op:string){
if(op==='+')return a+b
else if(op==='-')return a-b
else if(op==='*')return a*b
else if(op==='/')return a/b}
// 好的代码风格
function calculate(
a: number,
b: number,
op: '+' | '-' | '*' | '/'
): number {
switch(op) {
case '+': return a + b;
case '-': return a - b;
case '*': return a * b;
case '/': return a / b;
}
}
# 重新安排换行来保持一致和紧凑
合理的换行可以使代码结构更清晰。
// 不一致的换行
const user = {name:'张三',age:25,
gender:'male'};
// 一致的换行
const user = {
name: '张三',
age: 25,
gender: 'male'
};
# 用方法来整理不规则的东西
将不规则逻辑封装成方法可以提高可读性。
// 直接使用不规则逻辑
if (user.age > 18 && user.gender === 'male' && user.education
=== 'college') {
// ...
}
// 封装成方法
function isEligibleForDiscount(user: User): boolean {
return user.age > 18 &&
user.gender === 'male' &&
user.education === 'college';
}
if (isEligibleForDiscount(user)) {
// ...
}
# 在需要时使用列对齐
列对齐可以使相似代码更易比较。
// 未对齐的常量
const MAX_WIDTH = 1024;
const MIN_WIDTH = 100;
const DEFAULT_WIDTH = 800;
// 对齐的常量
const MAX_WIDTH = 1024;
const MIN_WIDTH = 100;
const DEFAULT_WIDTH = 800;
# 选一个有意义的顺序,并一致地使用
保持一致的顺序有助于快速理解代码。
// 不一致的顺序
interface User {
age: number;
name: string;
id: string;
}
// 一致的顺序
interface User {
id: string;
name: string;
age: number;
}
# 把声明按块组织起来
相关声明应该组织在一起。
// 分散的声明
let total = 0;
const TAX_RATE = 0.1;
let subtotal = 100;
const DISCOUNT = 0.9;
// 按块组织的声明
// 常量
const TAX_RATE = 0.1;
const DISCOUNT = 0.9;
// 变量
let subtotal = 100;
let total = 0;
# 把代码分成"段落"
用空行分隔逻辑段落。
function processOrder(order: Order) {
// 验证订单
if (!isValid(order)) {
throw new Error('Invalid order');
}
// 计算价格
const subtotal = calculateSubtotal(order.items);
const tax = subtotal * TAX_RATE;
const total = subtotal + tax;
// 保存订单
saveOrderToDatabase(order, total);
}
# 个人风格与一致性
在团队中保持一致的代码风格比个人偏好更重要。
# 总结
大家都愿意都更有美感的代码。通过把代码用一致的、有意义的方式“格式化”,可以把代码变得更容易读,并且可以读得更快。
下面是讨论过得一些具体技巧:
- 如果多个代码块做相似得事情,尝试让它们有相同得剪影。
- 把代码按列对齐可以让代码更容易浏览。
- 如果在一段代码中提到ABC,那么不要在另一端中说BCA。选择一个有意义得顺序,并且始终用这样得顺序。
- 用空行来吧大块代码分成逻辑上得“段落”。