Python 开发规范

下面是一些在常见 Python 通用代码规范之外的实践,带有一定的个人色彩。

Import is hard

# good

import io
import json

from django.conf import settings
from django.utils.functional import SimpleLazyObject

from shared.content_type.usecases import ContentTypeUsecase
from shared.papp.usecases import PappUsecase

Explicit is better than implicit

避免制造万能工具

class Object(object):

    def __init__(self, **kwargs):
        for k, v in kwargs.items():
            setattr(self, k, v)

上面这个类是一个万能的类,它可以产生任何你想要的类的实例,甚至可以动态绑定函数作为方法呢,然后呢? 作为其他开发者和作者自己无法从这个类的声明中确定他的任何属性和方法。

避免不确定性的函数

def get_something(data):
    type = data.get('type', 'default')

上面犯了好几个错误

让代码更加有序

配置

数据校验

对于一般的 Web 程序而言,最大的输入来源是 API 请求,只有/只要我们从 API 层做好数据校验,就可以/才能够保证后端系统的可靠性。

io 分离

集中管理

集中管理的意思是通过一定的手段让系统对象分布更加有序

装饰器

文档