PEP 8中关于命名规范的优先原则是什么?

6
PEP 8 Python代码风格指南中,命名约定下列出的第一条规则是“Overriding Principle(优先原则)”。

优先原则

对于用户可见的公共API部分,名称应遵循反映用途而非实现的惯例。

PEP指南没有给出任何其他细节或示例,这让我不确定这个规则实际上意味着什么。 在PEP 8中,什么是优先原则?这个规则什么时候适用?

我认为这不是一个“规则”,而是随后规则的动机。 - juanpa.arrivillaga
3
这句话的意思是,变量的命名应该反映它的用途。例如:obj.lengthobj.get_length() - cs95
2
@cᴏʟᴅsᴘᴇᴇᴅ 我认为这也是一个不错的解释。所以,可以用 builder.info 替代 builder.get_info_from_db 这个方法。 - juanpa.arrivillaga
我认为最重要的原则就是一致性。这可以避免编写我所说的“精神分裂”(或者可能是多重人格障碍)代码,这些代码很难理解和维护。 - martineau
3
coldspeed: “.length”和“.get_length()”都被不推荐使用了;我们已经有了“len()”。 - Yann Vernier
2个回答

1
我也觉得这很令人困惑,然而,我一直认为,最好让名称反映应用领域(用途),而不是机器正在执行的工作(实现)。除非领域就是机器本身,否则它们是相同的。我想这就是它所指的。
很容易陷入根据你正在工作的当前实现来命名事物的习惯中,因为你在命名时正在思考如何做X。然而,当一个人去阅读代码(特别是第一次)时,你试图在其所属的系统的上下文中理解它。因此,通过按照领域的方式命名事物,您可以为那些阅读代码的人提供服务。
这也对重构有影响。如果事物的命名更加倾向于实现,您将在重构期间发现自己更改更多的名称。不这样做会强化领域。
最后,现实世界中元素有自然的组织方式。如果软件构件根据它们的真实世界对应物进行命名,则该组织可能适用于软件构件的组织。这也使阅读更容易,潜在地使软件更好。

-1
Python编程的最重要原则是,您应该能够查看代码并知道它的功能,而无需阅读其他任何代码。 Python鼓励“显式胜于隐式”,因此编写良好的Python代码应该是明显的。不应有任何暗示的功能,一切都应以一种方式命名,这样您就不会对其所做的事情感到惊讶。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接