剑指书阅读第三章高质量的代码之
代码的规范性
缩进,命名(用完整的英文单词组合命名变量和函数,不要用关键词)
代码的完整性
软件开发中需求在变,写代码时候能够把未来需求可能的变化考虑进去,在需求变化时减少代码改动的风险,程序的可扩展性和可维护性
三方面:
功能测试
基本功能考虑完全
边界测试
循环的终止条件
递归的终止条件
负面测试(各种可能的错误输入)
把错误信息传递给函数的调用者有三种方法
①返回值 不能方便使用计算结果
②全局变量 能够使用计算结果,但用户容易忘记检查全局变量
③异常可以为不同的出错原因定义不同的异常类型逻辑清晰明了,但有的语言不支持且抛出时对性能有负面影响
解法一:快速幂法 时间复杂度O(logn) 空间复杂度O(1)
class Solution:
def myPow(self, x: float, n: int) -> float:
res = 1
if x == 0:
return 0
if n < 0:
x, n = 1 / x, -n
while n:
if n & 1:
res *= x
x *= x
n >>= 1
return res