懂了,涨知识了!

懂了,涨知识了!,第1张

概述程序员宝藏库:https://github.com/Jackpopc/CS-Books-Store代码质量,是评价开发者的一个重要指标。我曾经不止一次的提及过代码质量的重要性,优秀的代码,直接关乎可读性、维护成本等诸多方面的问题。Python作为一种高级编程语言,对于语法的限制非常少,开发者可以忽略很多要点,同样

程序员宝藏库:https://github.com/Jackpopc/CS-Books-Store

代码质量,是评价开发者的一个重要指标。

我曾经不止一次的提及过代码质量的重要性,优秀的代码,直接关乎可读性、维护成本等诸多方面的问题。

Python作为一种高级编程语言,对于语法的限制非常少,开发者可以忽略很多要点,同样可以满足自己的需要的功能,因此,代码质量开始被很多Python开发者忽视。

但是,要成为一名优秀的开发者,代码质量是永远无法绕开的话题。

今天,就来教大家如何写出简洁、干净的Python代码,来提升一下你的代码质量吧!

1. 合并嵌套条件语句

太多的嵌套,会使得代码变得非常难以理解,在Python中尤其如此,因为Python中没有括号来帮助描述不同的嵌套级别。

阅读深层嵌套的代码令人困惑,因为你必须跟踪哪些条件与哪些级别相关。

因此,我们力求在可能的情况下减少嵌套,并减少两个if条件可以组合使用的情况。

重构前

if a:    if b:        return c

重构后

if a and b:    return c
2. 提升代码复用能力

删减重复代码,是提升代码质量、减少代码冗余的一个很好方法。

有时候,我们在实现一些相近功能时,有很多代码是可以通过一些抽象进行复用的,通过这种方法,可以提升代码的简洁度。

重构前

if sold > disCOUNT_AMOUNT:    total = sold * disCOUNT_PRICE    label = f'Total: {total}'else:    total = sold * PRICE    label = f'Total: {total}'

在这段代码中,通过对变量label进行抽取,不仅能够删除重复代码,还能够使代码逻辑更加清晰。

重构后

if sold > disCOUNT_AMOUNT:    total = sold * disCOUNT_PRICEelse:    total = sold * PRICElabel = f'Total: {total}'
3. 利用any()替代for循环

一个常见的问题,我们需要查找某个条件是否满足集合中一个或所有项目的条件。

这时,很多同学都会想起for循环。

found = Falsefor thing in things:    if thing == other_thing:        found = True        break

其实,Python中有两个函数all()和any(),能够使这段代码变得更加清晰、简洁:

found = any(thing == other_thing for thing in things)

这个应该很容易理解,如果至少有一个满足any()内部条件,它会返回True,反之返回False。

4. 把重复代码块合并到条件中

就像前面所说的那样,删除重复代码块,是提升代码常用的一种方法。

其中,if...elif就是一个非常值得关注的点。

def process_payment(payment):    if payment.currency == 'USD':        process_standard_payment(payment)    elif payment.currency == 'EUR':        process_standard_payment(payment)    else:        process_international_payment(payment)

从这段代码中可以看出,有很多冗余的代码可以优化,我们可以通过or把多余的语句合并起来:

def process_payment(payment):    if payment.currency == 'USD'or payment.currency == 'EUR':        process_standard_payment(payment)    else:        process_international_payment(payment)
5. 删除没必要的调用keys()

字典是由一个个的键值对组成的,如果你遍历字典时只需要访问键,用不到值,有很多同学会用下面这种方式:

for currency in currencIEs.keys():    process(currency)

在这种情况下,不需要调用keys(),因为遍历字典时的默认行为是遍历键。

for currency in currencIEs:    process(currency)

现在,该代码更加简洁,易于阅读,并且避免调用函数会带来性能改进。

6. 简化序列比较

我们经常要做的是在尝试对列表或序列进行 *** 作之前检查列表或序列是否包含元素。

if len(List_of_hats) > 0:    hat_to_wear = choose_hat(List_of_hats)

使用Python的方法则更加简单:如果python列表和序列具有元素,则返回为True,否则为False:

if List_of_hats:    hat_to_wear = choose_hat(List_of_hats)
7. 仅使用一次的内联变量

我们在很多代码中经常看到,有些同学分配结果给变量,然后马上返回它,例如,

def state_attributes(self):    """Return the state attributes."""    state_attr = {        ATTR_CODE_FORMAT: self.code_format,        ATTR_CHANGED_BY: self.changed_by,    }    return state_attr

如果直接返回,则更加直观、简洁,

def state_attributes(self):    """Return the state attributes."""    return {        ATTR_CODE_FORMAT: self.code_format,        ATTR_CHANGED_BY: self.changed_by,    }

这样可以缩短代码并删除不必要的变量,从而减轻了读取函数的负担。

8. 将条件简化为return语句

如果,我们实现的函数要返回一个布尔型的结果,通常会这样去做,

def function():    if isinstance(a, b) or issubclass(b, a):        returnTrue    returnFalse

但是,对比这样,直接返回结果会更加明智:

def function():    return isinstance(a, b) or issubclass(b, a)
结语

从本文介绍的内容来看,这些知识点并不是很难,对于很多同学,可以秒级就能够理解其中的要点。

我认为这些更像是一种习惯,习惯性的去思考如何重构代码,如何让代码质量更进一步。

如果养成这些习惯,融为自己的一部分,那么就会在不知不觉中就会写出高质量的Python代码。

当然,提升代码的路上,要学习的远不止本文介绍的这些。

希望通过本文的介绍能够起到一个抛砖引玉的作用,来引导大家挖掘更多提升代码质量的方法。

 

总结

以上是内存溢出为你收集整理的懂了,涨知识了!全部内容,希望文章能够帮你解决懂了,涨知识了!所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1186137.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存