专栏名称: 程序人生
十年漫漫程序人生,打过各种杂,也做过让我骄傲的软件;管理过数十人的团队,还带领一班兄弟姐妹创过业,目前在硅谷一家创业公司担任 VP。关注程序人生,了解程序猿,学做程序猿,做好程序猿,让我们的程序人生精彩满满。
目录
相关文章推荐
腾讯技术工程  ·  0day漏洞量产?AI Agent“生产线”曝光 ·  19 小时前  
蚂蚁技术AntTech  ·  欢迎参加!蚂蚁SRC年度颁奖盛典&大模型安全交流会 ·  23 小时前  
大淘宝技术  ·  大模型微调知识与实践分享 ·  昨天  
伯乐在线  ·  HR ... ·  2 天前  
伯乐在线  ·  HR ... ·  2 天前  
极客之家  ·  22k star,微软硬核开源,让 ... ·  3 天前  
51好读  ›  专栏  ›  程序人生

于小微处见大功夫

程序人生  · 公众号  · 程序员  · 2019-09-12 14:49

正文

请到「今天看啥」查看全文


在上面的代码里,计算交易的佣金这件事和 update_balance 是彼此独立的,update_balance 不必知道也不该知道如何计算交易的佣金的细节就能完成它自己的任务。之所以说不该知道,是因为 update_balance 知道了这个细节,那么万一交易佣金的计算方式发生改变,那么必然涉及 update_balance 的改变,而因为这个改变散落在这个函数的不同地方,容易牵一发而动全身。

那么可能会发生什么改变呢?这就有赖于程序员的产品感观。commission_rate 是个佣金的比率,既然交易的佣金可以按比例抽成,那么是不是将来有可能按固定值抽成?或者交易额小于一个数量,固定抽成,大于一个数量,按比例抽成,甚至再复杂些,阶梯累进抽成?

所以我们应该讲这个计算的过程独立出来,为其创建一个函数,比如:calc_commission,那么 update_balance 就变为:

def update_balance(input_value) do  ...  commission = calc_commission(input_value)  balance1 = data1.balance + input_value - commission  ...  balance2 = data2.balance + commission  ...end
def calc_commission(input_value) do commission_rate = get_config("commission_rate") round(input_value * commission_rate)end






请到「今天看啥」查看全文