鱼缸碎碎念:一个懒人新手的养鱼日记

事情要从那个20加仑的鱼缸说起。
为什么养鱼
说实话,养鱼不是我的第一选择。
先是养猫,老婆嫌掉毛。养狗,出差没人管。养乌龟,查了一圈发现可能比我活得还久,到时候谁送谁走还不一定。

事情要从那个20加仑的鱼缸说起。
说实话,养鱼不是我的第一选择。
先是养猫,老婆嫌掉毛。养狗,出差没人管。养乌龟,查了一圈发现可能比我活得还久,到时候谁送谁走还不一定。
你一定见过这样的代码:
|
|
第一次看到这行代码时,你的脑子里会冒出一个问号:那个 true 是什么意思? 是跳过校验?是异步执行?还是发送通知?不看函数定义根本猜不出来。
很多开发者把 DRY(Don’t Repeat Yourself)奉为圭臬,一看到重复代码就急着抽取公共函数。结果呢?公共函数越来越臃肿,参数列表越来越长,最终变成一个谁也不敢动的"上帝函数"。
二十年前学编程,第一关是语法。C语言的指针、Java的泛型、Python的缩进——你要花大量时间记规则、查文档、对着报错信息发呆。那时候"会编程"的门槛,很大一部分是"记住了多少语法"。
做了多年技术,我见过太多选型翻车的案例。团队兴奋地引入最新框架,三个月后陷入维护泥潭;为了高吞吐选了异步框架,结果调试困难、bug 频出;跟风用了微服务,结果几个人维护二十多个服务,疲惫不堪。
下完订单 30 分钟未支付,自动关闭。优惠券到期前 1 小时,推送提醒。注册后 3 天未登录,发送召回邮件。这些场景的本质是同一个问题:在某个未来时间点执行一个任务。
一个支付系统,最初只支持支付宝。产品说要加微信支付,你加了一个 if。三个月后要加银联,又加了一个 if。半年后要加 Apple Pay、Google Pay、虚拟货币……等你回过神来,支付路由函数已经变成了这样: