首页 存档 技术 查看内容

Python开发指南:最佳实践精选

2018-3-30 13:00 |来自: 互联网 342 0

摘要: (点击上方公号,可快速关注) 一篇 针对Python开发的“最佳实践精选”指南。 总体原则 价值标准 “为别人开发你也想要使用的工具。” Kenneth Reitz “简洁性总是胜过可用性。” Pieter Hintjens “满足90%的使 ...

(点击上方公号,可快速关注)


一篇 针对Python开发的“最佳实践精选”指南。

总体原则

价值标准

  • “为别人开发你也想要使用的工具。” Kenneth Reitz

  • “简洁性总是胜过可用性。” Pieter Hintjens

  • “满足90%的使用场景。忽略那些说不的人。” Kenneth Reitz

  • “优美胜过丑陋。” PEP 20

  • 为开源(甚至是闭源项目)而开发。

一般开发准则

  • “明确胜过含隐含。” PEP 20

  • “易读亦有价。” PEP 20

  • “人人都能打补丁。” 可汗学院开发文档

  • 一旦发现破窗(设计错误,决策失误或编码质量低),马上修补。

  • “现在做也要胜过不去做。” PEP 20

  • “测试要彻底。撰写新功能文档。”

  • 人力驱动型开发,比测试驱动型开发更重要。(译者:原文为Even more important that Test-Driven DevelopmentHuman-Driven Development,译者认为more important that应该是more important than,应该是作者笔误,否则意思不通,)

  • 这些准则可能应该是很可能会改变。

特殊准则

风格

感觉合理的话,就遵循PEP 8。

命名

  • 变量、函数、方法、包、模块

小写,并使用下划线分隔单词(lower_case_with_underscores)

  • 类、异常

首字母大写(CapWords)

  • 受保护的方法和内部函数

单下划线开头(_single_leading_underscore(self, …))

  • 私有的方法

双下划线开头(__double_leading_underscore(self, …))

  • 常量

字母全部大写,单词间用下划线分隔(ALL_CAPS_WITH_UNDERSCORES)

一般命名准则

尽量不要使用只有一个字母的变量名(例如,l,I,O等)。

例外:在很简短的代码块中,如果变量名的意思可以从上下文明显地看出来。

没问题

for e in elements:

e.mutate()

避免冗余描述。

正确的做法

import audio

core = audio.Core()

controller = audio.Controller()

错误的做法

import audio

core = audio.AudioCore()

controller = audio.AudioController()

“反向记法”更好。

正确的做法

elements = ...

elements_active = ...

elements_defunct = ...

错误的做法

elements = ...

active_elements = ...

defunct_elements ...

避免使用getter和setter方法。

正确的做法

person.age = 42


错误的做法

person.set_age(42)


缩进

用4个空格符永远别用Tab制表符。就说这么多。

模块引用

引用整个模块,而不是模块中的单个标识符。举个例子,假设一个cantee模块下面,有一个sessions.py文件,

正确的做法

import canteen

import canteen.sessions

from canteen import sessions

错误的做法

from canteen import get_user # Symbol from canteen/__init__.py

from canteen.sessions import get_session # Symbol from canteen/sessions.py

例外:如果第三方代码的文档中明确说明要单个引用。

理由:避免循环引用。看这里。

把代码引用部分放在文件的顶部,按下面的顺序分成三个部分,每个部分之间空一行。

  1. 系统引用

  2. 第三方引用

  3. 本地引用

理由:明确显示每个模块的引用来源。

文档

遵循PEP 257提出的文档字符串准则。reStructuredText (reST) 和Sphinx有助于确保文档符合标准。

对于功能明显的函数,撰写一行文档字符串。

"""返回``foo``的路径名."""

多行文档字符串应包括:

  • 一行摘要

  • 合适的话,请描述使用场景

  • 参数

返回数据类型和语义信息,除非返回None“”"训练模型,用来对Foo和Bar分类。

用法::

"""Train a model to classify Foos and Bars.

Usage::

声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

相关分类

返回顶部