写好一个函数的基本“规矩”

       函数是软件产品的细胞。如何写好一个命名规范,功能清晰,鲁棒性强的函数,是一个合格程序员的基本素养。

条例1: 一定要对非法输入做错误处理。

        写函数最忌讳的就是不对非法输入做错误处理。调用malloc等可能出错的函数不判断返回值。这样的函数放到一个庞大复杂的系统中将是灾难。不是宕机就是出core或者各种错误的结果。曾经看过一篇文章,说是cpu感触的1纳秒,就相当于人类感触的1秒。一次宕机的时间,对于cpu来说,相当于一个文明的终结。

        if判断,assert假设,都是很好的校验手段。

条例2:对各种边界情况做自测

        自测花的时间,比如不自测导致返工的时间,要少的多。编程珠玑 里面就提到了脚手架测试方法。你可以注意到 leetcode 里面的习题 atoi 通过率是很低的。自己写一个经得起各种边界测试的 atoi 试试 ?

条例3:明确输入和输出的映射关系

        函数的功能尽可能单一,这样才能保证函数的返回值简单可靠。system函数我觉得就是一个反例,因为你很难通过这个函数的返回值做进一步的错误处理。                           

条例4:将函数的复杂性往设计层面隐藏,函数实现要尽可能简短明了。

        一个例子就是 编程之美 里面的 “1 的数目” 这个试题。咋一看,实现的代码很明了,虽然知道里面各变量正在做什么,但是不知道为什么要以这种流程去做。这就是将实现的功能原理给隐藏起来了,但是代码却简洁高效,不易出错。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值