好的代码不是写给机器执行的,是写给下一个阅读它的人看的。那个人很可能就是六个月后的你自己。
艺术的最高境界是"不言自明"。代码也一样,好的命名能让逻辑自我解释,不需要注释来"擦屁股"。
反面案例(程序员日常):
# 糟糕:需要注释才能看懂
def process(data):
# 计算用户的活跃度分数
x = 0
for i in range(len(data)):
if data[i]['last_active'] > 7:
x += 1
return x / len(data) * 100艺术的写法(无需注释):
def calculate_user_activity_percentage(users):
active_users = [
user for user in users
if user.is_active_in_last_days(7)
]
return (len(active_users) / len(users)) * 100艺术点拆解:
process → calculate_user_activity_percentage(动词+名词,精准表达)7 → 封装成is_active_in_last_days(7)(语义化)艺术的金线:当你觉得需要写注释时,先试试能不能通过改名来解决。
真正的艺术不是"一地一策",而是找到重复逻辑背后的韵律,用抽象把它唱出来。
场景:你需要验证用户输入的各种字段——邮箱、手机、密码。
平庸的做法(复制粘贴地狱):
def validate_user(email, phone, password):
if '@' not in email or '.' not in email:
return False
if len(phone) != 11 or not phone.isdigit():
return False
if len(password) < 8:
return False
return True艺术的写法(构建验证器韵律):
# 构建一个声明式的验证规则表(仅10行)
validators = {
'email': lambda v: '@' in v and '.' in v,
'phone': lambda v: len(v) == 11 and v.isdigit(),
'password': lambda v: len(v) >= 8
}
def validate_user(email, phone, password):
fields = {'email': email, 'phone': phone, 'password': password}
return all(
validators[key](value)
for key, value in fields.items()
)艺术点拆解:
all()配合生成器表达式,形成流式判断(短路求值,效率最优)艺术的韵律:当你在写第三遍相似的代码时,停下来,抽象它。
最顶级的艺术是"少即是多"。一段代码解决一个复杂问题,不炫技、不啰嗦,刚好够用。
问题:实现一个懒加载缓存函数(只计算一次,后续直接返回缓存结果)。
普通实现(带状态管理、闭包、条件判断):
function createLazyCache(computeFn) {
let cached = null;
let computed = false;
return function() {
if (!computed) {
cached = computeFn();
computed = true;
}
return cached;
};
}艺术的极简实现(利用函数对象的属性):
function lazy(compute) {
return function() {
return lazy.value || (lazy.value = compute());
};
}等等,这有问题! lazy.value会被所有实例共享,不是闭包隔离的。
艺术的修正版(但仍然极简):
const lazy = (fn) => {
let value;
return () => value ??= fn();
};艺术点拆解:
??=(逻辑空赋值运算符)是ES2021的语法糖,一行代码代替了if (value === null || value === undefined)艺术的留白:能删的代码绝不留着,能合并的逻辑绝不拆分。
很多人把"代码艺术"误解成"用晦涩的高级语法秀操作",比如:
// 这不是艺术,这是恶作剧
const sum = (...n) => n.reduce((a,b) => a+b, 0);真正的艺术是让新人也能看懂,让老人也能敬佩。比如下面这段处理用户权限的代码:
# 艺术:用集合运算代替多层if-else
def get_accessible_pages(user_roles):
all_pages = {'dashboard', 'settings', 'reports', 'admin'}
role_permissions = {
'viewer': {'dashboard'},
'editor': {'dashboard', 'reports'},
'admin': all_pages
}
allowed = set().union(*[role_permissions[role] for role in user_roles])
return sorted(allowed & all_pages) # 交集保证不会访问到未定义页面艺术在哪里?
评价一段代码是不是"艺术",不看它多优雅,看它被修改时多痛苦。
艺术的核心是降低认知负担,让未来的维护者(包括你自己)能用最小的成本理解并修改它。
最后送你三行"艺术宣言":
# 代码的艺术 =
可读性 + 抽象力 + 极简主义
# 但最重要的是:
让六个月后的你,看到这段代码时,说一声"写得真好"。后记:如果你觉得上面这些例子太简单,说明你已经被复杂代码PUA了。真正的艺术从来不复杂,复杂的是我们把它搞复杂的心。下次写代码时,多问自己一句:"这里还能再删一行吗?"
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。