别让大脑“超载”:写 Go 函数的三个简单技巧

核心思想:代码不是写给机器看的,是写给人看的。
你的同事、未来的你,甚至半夜 Debug 的你——都值得更清晰、更轻松的代码!


一、直接返回布尔表达式:别绕弯子!

看看这个函数:

func NeedsLicense(kind string) bool {
    if kind == "car" || kind == "truck" {
        return true
    }
    return false
}

它想表达什么?“如果是小车或卡车,就需要驾照”。
if ... return true; else return false 就像说:“如果天是蓝的,那我就说天是蓝的;否则,我说不是。”

其实,布尔表达式本身就是 truefalse

✅ 直接写成:

func NeedsLicense(kind string) bool {
    return kind == "car" || kind == "truck"
}
  • 更短 ✅
  • 更清晰 ✅
  • 不需要多一层“判断壳” ✅

💡 小贴士:只要函数返回 bool,而你的逻辑最终是一个条件判断——那就直接 return 条件


二、别用 strings.Compare,除非你真需要三路比较

再看这个函数:

func ChooseCar(car1, car2 string) string {
    if strings.Compare(car1, car2) < 0 {
        return car1
    }
    return car2
}

strings.Compare 返回 -10+1,用于排序等场景。
但这里我们只是想知道“哪个车名更靠前”——这完全可以用 Go 原生的字符串比较!

Go 的字符串天然支持 <>== 操作,而且更快、更易读

✅ 改成:

func ChooseCar(car1, car2 string) string {
    if car1 < car2 {
        return car1
    }
    return car2
}

现在,任何人一眼就能看懂:“选字典序更小的那个”。

📌 官方文档也说:
“It is usually clearer and always faster to use the built-in string comparison operators.”


三、条件分支按“线性顺序”排列,别跳来跳去!

来看一个二手车估价函数:

func CalculateResellPrice(originalPrice, age float64) float64 {
    if age < 3 {
        return originalPrice * 0.8
    } else if age >= 10 {
        return originalPrice * 0.5
    } else {
        return originalPrice * 0.7
    }
}

问题在哪?
你先看“小于3岁”,然后突然跳到“大于等于10岁”,最后才处理中间的“3~9岁”。
这就像看地图时:先看北京,再看广州,最后才看上海——打乱了大脑的自然阅读流

我们的大脑习惯从左到右、从上到下、从小到大的线性思维。

✅ 优化思路:

  1. 去掉多余的 else
  2. 按年龄从小到大排列条件
func CalculateResellPrice(originalPrice, age float64) float64 {
    if age < 3 {
        return originalPrice * 0.8 // 新车
    }
    if age < 10 {
        return originalPrice * 0.7 // 中年车
    }
    return originalPrice * 0.5     // 老车
}

现在,逻辑像一条平滑的坡道:

0 → 3 → 10,一路向下,毫不费力。

🎯 设计原则

  • 尽量让主流程靠左对齐(减少嵌套)
  • 条件范围按自然顺序排列(如时间、数值、字母)

四、总结:写 Go,要“懒”得聪明

坏习惯好习惯为什么更好
if cond { return true } else { return false }return cond少写两行,少一个脑回路
strings.Compare(a, b) < 0a < b更快、更直观
条件跳跃(<3, ≥10, else)条件线性(<3, <10, else)符合人类直觉

五、这些技巧能提升什么?

  • 降低认知负荷:别人读你代码时,不需要“解码”你的逻辑
  • 减少 Bug:越简单的逻辑,越不容易出错
  • 提升 Review 效率:PR 里少争论“能不能简化”,多聚焦业务逻辑

🚗 举个生活化例子
写代码就像给朋友指路。
你说:“往前走,看到红绿灯左转,第二个路口右转” —— 清晰!
别说:“如果你没看到超市就继续走,但如果看到银行就回头,除非今天是周二……” —— 谁记得住?


0
0
0
0
评论
未登录
暂无评论