我是否应该让python代码不那么简单以提高可读性?

2024-10-01 19:25:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图使我的代码更简单,但我注意到,键入代码需要很多时间,并且需要更多的时间来读取代码。在

而不是:

class TextServer(object):
    def __init__(self, text_values):
        self.text_values = text_values
        # <more code>
    # <more methods>

我倾向于这样写:

^{pr2}$

我的python编码风格是否过于偏执?或者,有没有一种方法可以提高可读性,同时又能保证它不会出错?在

  • 注1:我添加了<和{}之间的注释,只是为了澄清。在
  • 注2:我试图防止滥用代码的主要傻瓜是我未来的自己。在

Tags: 代码textself键入objectinitdefmore
3条回答

在Python中,使用私有实例属性,然后像您所拥有的那样通过属性公开它是不寻常的。只需使用self.text_values。在

“我的python编码风格是否过于偏执?或者,有没有一种方法可以提高可读性,同时又能保证它不会出错?”在

你要保护自己的那个傻瓜是谁?在

你呢?你担心你不记得你写的API吗?在

同龄人?你是否担心隔壁的人会主动尝试通过API传递错误的东西?你可以和他们谈谈解决这个问题。如果您提供文档,它可以节省大量代码。在

一个完全反社会的人会下载你的代码,拒绝阅读API文档,然后用不恰当的参数调用所有的方法?你能为他们提供什么样的帮助?在

“傻瓜证明”编码并不是很有帮助,因为所有这些场景都可以用另一种方式更容易地解决。在

如果你是在自欺欺人,也许这并不明智。在

如果你是一个同事或同事的傻瓜证明,你应该——也许——和他们谈谈,确保他们理解API文档。在

如果你是在愚弄一些假想的反社会程序员谁来颠覆API,你就无能为力了。是Python。他们有消息来源。当他们可以编辑源代码来破坏代码时,为什么还要费劲去滥用API呢?在

以下是this page中关于Python习惯用法的一些好建议:


捕捉错误而不是避免错误,以避免使用特殊情况使代码混乱。这个成语叫做EAFP(“请求原谅比请求许可更容易”),与LBYL(“三思而后行”)相反。这通常使代码更具可读性。例如:

更糟的是:

#check whether int conversion will raise an error
if not isinstance(s, str) or not s.isdigit:
    return None
elif len(s) > 10:    #too many digits for int conversion
    return None
else:
    return int(str)

更好:

^{pr2}$

(请注意,在这种情况下,第二个版本要好得多,因为它可以正确处理前导的+和-,以及介于20亿到100亿之间的值(对于32位计算机)。不要因为预测所有可能的失败而使代码变得混乱:只需尝试一下并使用适当的异常处理。)

相关问题 更多 >

    热门问题