前几天帮邻居老李调试他家智能路由器的自动化脚本,打开代码一看,差点没认出来哪个是哪个。一堆像 a1、temp2、flag_x 这样的变量名堆在一起,看得人脑壳疼。其实这种情况在家庭网络相关的脚本开发里挺常见,尤其是自己写着玩的程序,图快随手就写,结果过两周连自己都看不懂了。
变量乱起名,迟早要还债
老李写了个自动检测Wi-Fi设备并通知的Python小脚本。里面有个变量叫 res,乍一看以为是响应结果,结果翻到后面发现它存的是设备数量。另一个叫 data_list_new_2 的列表,其实装的是黑名单里的MAC地址。这种命名方式短期内省事,时间一长维护起来特别费劲,改个功能都得从头推演逻辑。
重构第一步:换个明白的名字
把 res 改成 connected_device_count,data_list_new_2 改成 blocked_mac_addresses,代码立马清晰不少。哪怕不懂编程的人扫一眼也能猜出大概意思。命名不是越短越好,而是越准越好。比如 is_connected 就比 flag1 强十倍。
举个实际例子
这是老李原来的代码片段:
def check():
a = get_devices()
b = 0
for i in a:
if i[2] == True:
b += 1
return b
改成这样之后,读起来顺多了:
def count_active_devices():
all_devices = get_devices()
online_count = 0
for device in all_devices:
if device['is_online']:
online_count += 1
return online_count
小改动,大不同
家里搞智能家居联动、写个定时重启路由器的脚本,或者监控网络使用情况,都可能用到小段代码。别觉得“就我一个人看”就可以随便起名。一个月后你可能完全忘了当初为什么设这个变量。花一分钟改个好名字,能省下下次排查问题的半小时。
重构不一定要大动干戈,从变量命名开始,一点点清理,代码就会越来越干净。就像整理书房,书归类放好,下次找起来才不费劲。