关于编程时的高质量

高质量代码与编程陷阱

《剑指offer》的第三张开始讲关于高质量代码的内容,里面涉及到了关于编程时的边界条件,细节疏忽的问题,这里记录一下;


关于异常的处理有三种方法:

1:返回值:利用函数的返回值,判断是否出现问题,在windows下面,一般返回零表示成功,返回非零值,根据不同的值,代表不同的问题;

2:全局变量:当发生错误的时候,我们可以把错误的值传递到全局变量中,然后判断全局变量;

3:使用异常的方式:当有错误发生的时候,可以直接抛出异常;

分析这三种的优缺点

返回值:优点:和系统的API统一。缺点:不能将函数的返回值作为参数,赋值给其他变量,或者当作函数参数;

全局变量:优点:可以方便的使用 计算结果,但是用户很肯能忘记检查全局变量。

异常方式:优点:可以很方便的定义不同的异常类型。缺点:有些语言不支持,抛出异常的时候会打乱程序的执行顺序,对性能有影响。


如何判断两个double或者float类型的数据是否相等,对于刚开始学习编程的人肯定会直接写 a == b 但是这种方式只适用于int类型,对于double和float类型由于精度的问题,不能保证所以要设置一个误差范围

bool equal(double a, double b)
{
	if ((a - b) > -0.0000001 && (a - b) < 0.0000001)
		return true;
	else
		return false;
}

对于一个数的平方,我们需要考虑的问题有:底数是否为零、指数是否为零、指数大于零还是小于零、如果底数为零并且指数也为零的时候,零的倒数是多少???

尤其是对于一个除法:一定要注意除数不能为零

面试题12:输入数字n,按顺序打印出从1到最大的n位十进制数,比如输入3,则打印出1,2,3一直到最大的3为数999.

这里正常的想法肯定的设置一个int类型或者long long类型的,但是最终都会溢出。。。所以最好的方式是利用数组,为了是所用的内存最少,所以使用字符数组。可以无限制的输出很多位数了。具体如何实现,这里就不讲了。

面试题13:在O(1)的时间内删除链表节点,并且给定单向链表头指针和一个要删除的节点的指针;

由于这种题很多人说,所以大家都知道了,但是有几个地方需要注意的,首先:如果删除的是链表的最后一个元素呢?最后一个元素的next指向的是NULL,没法像正常的元素那样,把下一个元素的内容复制到要删除的元素内,然后把下一个元素删掉,所以对于最后一个元素没有别的办法,只能从头指针进行扫描,把上一个元素找到,然后是:对于只有一个元素,这时被删除的元素即是头元素也是尾元素,要让头指针也指向NULL,所以这里也要分开讨论。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值