3 Python开发风格与建议
description
Transcript of 3 Python开发风格与建议
Python Python 开发的风格与建议开发的风格与建议
编码风格、技术选择与一些建议编码风格、技术选择与一些建议
Kingsoft KSO
Python 编码的一些惯例
• 使用四空格而非 tab 缩进• 为函数和类编写 docstring• 尽可能使用 utf8• import this...• 管理好命名• 善用语法糖
Kingsoft KSO
一些好用的语法糖
• 隐式拆装– a, b = b, a
• 列表推导– [diff(x, y) for x, y in box if x<y]– d = dict((x, y) for x, y in box if x<y)
• str.join– ', '.join(['a', 'b', 'c'])
• 生成器 yield– 线性迭代逻辑
• 修饰– 实现业务正交分解
Kingsoft KSO
Pythonic 是什么?
追求简单、易读的编码风格。使用轻而浅层的代码组织。善用文档和测试功能。工作过程自动化。重视文档。
Kingsoft KSO
选择 Python ,使用 Python
现代软件开发,编程语言的选择,包括了语言的运行时和语言的选择。
用好一门语言,要了解和运用好它的语法,也同样要能掌控它的运行时。
灵活运用知识和技术,不拘泥于某一种模式。在全局高度设计架构,跳出框架限制。
Kingsoft KSO
常见 Web 框架
• Django• webpy• zope• turbogears• pylons• web2py• tornado• ...
Kingsoft KSO
Web 框架选择
Web 框架的选择,通常应该基于应用的特色、框架的社区活跃程度、文档、扩展性。
• 每一个框架都声称自己够快。• 最快的不一定是最好用的,甚至不一定是“最快
的”。• 最“易用”的同样未必是最易用的。• 能否与前端的应用服务器和后端的存储层灵活高
效的结果,是非常重要的指标。
Kingsoft KSO
ORM 的争议
ORM 的水准取决于三个方向:连接池、建模能力、SQL 生成能力。
不需要追求最强的通用性,因为在实际工作中,最难迁移的就是数据库。
ORM 不一定慢,专业的 ORM 工具可以生成很高质量的 SQL ,并且可能拥有非常好的连接池机制。
好的 ORM 可以帮助我们更好的建立具有伸缩能力的存储层,控制事务,提高代码的可维护性。
好的 ORM 本身应该具有足够的弹性,允许我们穿透封装,直接使用底层的功能。
Kingsoft KSO
ORM 的争议
ORM 很可能会给开发带来负作用• 糟糕的连接池……– storm
• 糟糕的建模机制……– storm– web2py dal
• 糟糕的 SQL 生成机制……– web2py dal
Kingsoft KSO
唯一推荐的 Python ORM!
SQLAlchemy 是 Python 平台上最为优秀的 ORM 框架,在我心目中这是一个全能的强大工具
• 建模能力强,可以在应用层建立分布式存储• 广泛支持所有主流数据库,对各自的特殊特性支持很好
• SQL 生成机制非常好,复杂查询也可以生成高质量代码
• 内置成熟的连接池• 对日志和调试友好• Pythonic
Kingsoft KSO
测试驱动开发?
积极使用 doctest 和 unit test ,可以有效控制代码质量。
开发人员额外编写测试代码,确实会付出一定时间 ,但是对于一定复杂度以上的程序,确实是值得的。
好的代码组织应该能更方便的测试
Kingsoft KSO
一些野生程序的山寨体悟
• 代码即文档– docstring + 注释 + 高可读性的代码
• 测试即设计– 编写测试代码不仅为了测试,也帮助理清设计的思路
• 享受动态类型– 不追求“严谨”的重型设计,将安全保护放在运行时边界
• 面向数据结构编程• 掌握文本处理技术– 行文本– 正则– 管道 ...
Kingsoft KSO
一些野生程序的山寨体悟
• 运行时的架构比开发时的代码组织重要• 运行时接口比开发时接口重要• 在 Python 中慎用多线程• 熟悉 Python 的组件,用好互联网资源