Python  开发的风格与建议 编码风格、技术选择与一些建议 Kingsoft KOS
Python  编码的一些惯例 <ul><li>使用四空格而非  tab  缩进 </li></ul><ul><li>为函数和类编写  docstring </li></ul><ul><li>尽可能使用  utf8 </li></ul><ul>...
一些好用的语法糖 <ul><li>隐式拆装 </li></ul><ul><ul><li>a, b = b, a </li></ul></ul><ul><li>列表推导 </li></ul><ul><ul><li>[diff(x, y) for ...
Pythonic  是什么? <ul><li>追求简单、易读的编码风格。 </li></ul><ul><li>使用轻而浅层的代码组织。 </li></ul><ul><li>善用文档和测试功能。 </li></ul><ul><li>工作过程自动化...
选择 Python ,使用 Python <ul><li>现代软件开发,编程语言的选择,包括了语言的运行时和语言的选择。 </li></ul><ul><li>用好一门语言,要了解和运用好它的语法,也同样要能掌控它的运行时。 </li></ul>...
常见  Web  框架 <ul><li>Django </li></ul><ul><li>webpy </li></ul><ul><li>zope </li></ul><ul><li>turbogears </li></ul><ul><li>p...
Web  框架选择 <ul><li>Web  框架的选择,通常应该基于应用的特色、框架的社区活跃程度、文档、扩展性。 </li></ul><ul><li>每一个框架都声称自己够快。 </li></ul><ul><li>最快的不一定是最好用的,甚...
ORM 的争议 <ul><li>ORM 的水准取决于三个方向:连接池、建模能力、 SQL 生成能力。 </li></ul><ul><li>不需要追求最强的通用性,因为在实际工作中,最难迁移的就是数据库。 </li></ul><ul><li>OR...
ORM 的争议 <ul><li>ORM 很可能会给开发带来负作用 </li></ul><ul><li>糟糕的连接池…… </li></ul><ul><ul><li>storm </li></ul></ul><ul><li>糟糕的建模机制…… <...
唯一推荐的  Python ORM ! <ul><li>SQLAlchemy  是  Python  平台上最为优秀的  ORM  框架,在我心目中这是一个全能的强大工具 </li></ul><ul><li>建模能力强,可以在应用层建立分布式存...
测试驱动开发? <ul><li>积极使用  doctest  和  unit test ,可以有效控制代码质量。 </li></ul><ul><li>开发人员额外编写测试代码,确实会付出一定时间 ,但是对于一定复杂度以上的程序,确实是值得的。 ...
一些野生程序的山寨体悟 <ul><li>代码即文档 </li></ul><ul><ul><li>docstring +  注释  +  高可读性的代码 </li></ul></ul><ul><li>测试即设计 </li></ul><ul><ul...
一些野生程序的山寨体悟 <ul><li>运行时的架构比开发时的代码组织重要 </li></ul><ul><li>运行时接口比开发时接口重要 </li></ul><ul><li>在 Python 中慎用多线程 </li></ul><ul><li>...
刘鑫 [email_address] Kingsoft KOS
Upcoming SlideShare
Loading in …5
×

3 Python开发风格与建议

2,273 views

Published on

Python 开发中一些值得关注的语法、框架、设计思想

2 Comments
11 Likes
Statistics
Notes
No Downloads
Views
Total views
2,273
On SlideShare
0
From Embeds
0
Number of Embeds
245
Actions
Shares
0
Downloads
60
Comments
2
Likes
11
Embeds 0
No embeds

No notes for slide

3 Python开发风格与建议

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

×