【问题标题】:What is the Overriding Principle on Naming Conventions in PEP 8?PEP 8 中命名约定的首要原则是什么?
【发布时间】:2018-04-27 18:33:05
【问题描述】:

PEP 8 Style Guide for Python Code 中,Naming Conventions 下列出的第一条规则是最重要的原则。

Overriding Principle

作为 API 的公共部分对用户可见的名称应遵循反映使用而非实现的约定。

PEP 指南没有提供任何额外的细节或示例,这让我不确定这条规则的实际含义。

PEP 8 中最重要的原则是什么?该规则何时适用?

【问题讨论】:

  • 我不认为这是一个“规则”,而是遵循规则的动机。
  • (我认为)这意味着你的变量的名称应该反映它的目的。例如:obj.lengthobj.get_length()
  • @cᴏʟᴅsᴘᴇᴇᴅ 我认为这也是一个很好的解释。所以,而不是 builder.get_info_from_db 之类的方法 builder.info
  • 我认为最重要的原则就是一致性。这样可以避免编写我所说的难以理解和维护的“精神分裂症”(或者可能是多重人格障碍)代码。
  • coldspeed:不鼓励.length.get_length();我们已经有len()

标签: python terminology pep8


【解决方案1】:

Python 最重要的原则是,您应该能够查看代码并知道它的作用,而无需阅读任何其他代码。 Python 鼓励“显式而不是隐式”,因此编写良好的 Python 代码应该是显而易见的。不应该有任何隐含的功能,并且所有东西都应该以一种你不会对它的作用感到惊讶的方式命名。

【讨论】:

    【解决方案2】:

    我也觉得这很令人困惑,但是,我一直发现最好让名称反映应用程序域(使用)的元素,而不是机器正在做什么(实施)。除非域是机器本身,否则它们是相同的。我想这就是它所指的。

    在您正在处理的当前实现中很容易养成命名事物的习惯,因为您在命名事物时正在考虑我如何做 X。然而,当一个人去阅读代码时(尤其是第一次),你试图在它所属的系统的上下文中理解它。因此,您可以通过根据域命名事物来为那些阅读代码的人提供服务。

    这对重构也有影响。如果事物的命名对实现更加隐蔽,您会发现自己在重构期间更改了更多名称。不这样做会强化领域。

    最后,现实世界中的元素有一种自然的组织方式。如果软件构造是根据它们在现实世界中的对应物命名的,那么该组织可能会借给软件构造的组织。这也使软件更易于阅读和可能更好。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-01-14
      • 2011-08-20
      • 2012-11-09
      • 2011-10-06
      • 2022-06-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多