Django 1.6 最佳实践: 编码风格

在我们的博客中, 记录了我们在开发过程中所使用的技术和遇到的问题, 希望作为其他开发和设计者的一个学习交流平台.

Django 1.6 最佳实践: 编码风格


看到这个标题, 你很有可能会跳过这篇文章. 但我们认为只需要在编码时稍加注意, 良好的编码风格会影响颇深.

1. 代码可阅读性的重要性

代码写出来之后, 更多的时间是被阅读. 一段代码可能只用了几分钟就被写了出来, 几十分钟或几小时用来测试debug, 但可能一年或 几十年后都不会再被人修改. 恰恰, 当你或者别人一年或几十年后再阅读时, 一贯简洁的编码风格显得尤为重要. 它使得你不用去猜 想代码的不连续性, 使得大项目更容易维护, 使得小项目也更容易扩展.

那么, 怎么才算是良好的编码风格呢?

  • 避免过度缩写的变量名
  • 清晰的写出function传入参数(argument)的名字
  • 为class和method写注释
  • 重构代码: 将重复的代码提取出来, 写成function或method
  • 保持function和method简短: 一个简单的规则是, 阅读一个function或method时, 不需要翻页

这样, 当重新接触长时间没有查看的代码时, 你会发现阅读和理解代码的时间会大大缩短. 例如, 当你读到一个名为 blance_sheet_decrease的变量时, 是不是比bsd或b_s_d这样的变量名更容易理解? 类似这样的缩写名, 虽然能在编写代码是为你节 省几秒钟, 但当重新阅读时, 可能耗费你几个小时. 因此这种缩写是不值得的!

2. PEP8

PPE 8是Python官方的代码风格指导. 我们建议你详细的阅读并使用这些规范: http://www.python.org/dev/peps/pep-0008/

需要注意的是, PEP8只适用于新的项目, 如果将PEP8带入到已有项目时, 在有代码风格冲突时, 应保持原有规范, 以防发生混乱.

举些例子, PEP 8中定义的代码规范有:

  • 每一等级的缩进使用4个空格
  • 在最高级function和class前空两行
  • class中定义的method, 应该与前面的代码空一行

关于每行字符数限制

PEP8中, 规定了每行字符数的限制是79. 因为这是绝大多数编辑器和开发团队都能支持的字符数. 但PEP8中也有条款, 可将该限制扩展到99个字符数. 我们的理解是, 当该项目是开源时, 应尽量 将字符数控制在每行79个, 而当项目是闭源时, 则可以扩大到99个字符数.

3. 关于import

我们建议import按以下顺序排列:

  • Python标准库
  • Django自带库
  • 第三方App库
  • 项目中App库

例如:

    # Python标准库
    from __future__ import absolute_import
    from math import sqrt
    from os.path import abspath
    
    # Django自带库
    from django.db import models
    from django.utils.translation import ugettext_lazy as _
    
    # 第三方App库
    from django_extensions.db.models import TimeStampedModel
    
    # 项目中App库
    from .models import BananaSplit

使用明确指明的相对路径引用

当在写代码时, 应当时刻注意所写的代码应当能方便的移动, 重命名和升级. 在Python中, 使用明确指明的相对路径引用 (explicit relative import), 降低了模块之间的耦合性, 为我们带来了以上三个优点. 以上代码中的"from django_extensions.db.models import TimeStampedModel"便是一个很好的例子.

避免使用*

大多数情况下, 为了避免引起不可预料的混乱, 我们都不应该使用import *.

4. 其他

虽然在PEP8中没有明确指明, 但在实践中, 因尽量使用下划线"_", 而不是横杠"-", 因为下划线对于大多数IDE和文本编辑器都很友好. 但在URl中, 两者没有差别.


原文链接: http://www.weiguda.com/blog/3/