`
monkeyc
  • 浏览: 13123 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

读<google python style guide>几点记录

阅读更多

放假闲暇想写几行代码,心想反正时间充裕不如先看看《google python style guide》挑挑平时写代码时候的错,于是真的发现了数处习惯和知识的漏洞,特此记录。

 

1. default argument values python中定义函数可以个参数赋予默认值,默认值可以是字符串,数字,None,当然也可是list [] 或者 dict {}等。当默认值是上述后两者等可变对象(mutable object)的时候可能产生一些问题,这些潜在的问题是由于函数的加载的时候默认参数值会被初始化,而不是每次函数调用的时候。考虑如下代码:

 

 

#default arguments values 
def f(a, b=1): 
    pass 

#调用 
f(1) # b 缺省,使用默认值 1 
f(1, b=2) # b 为 2

 

问题所在:

 

#default arguments values 是 [] 等可变对象时会产生一些潜在的问题 
def f(a, l=[]): 
    l.append(a) 
    return l 

#调用 
f(1) 
>>> [1] 
f(2) 
>>> [1, 2] 
f(3) 
>>> [1, 2, 3] 

#改成如下代码解决 
def f(a, l=None): 
    if not l: l = [] 
    # ... 

(此代码参照了 http://blog.csdn.net/delphiwcdj/article/details/5719470 )  

 

2. 空格的使用(whitespace)

代码中适量的空格会是代码格式清晰,更加易读;但过量使用空格也会适得其反,使得阅读、维护成本增高。

2.1 "()", "{}", "[]" 中不要有空格:

 

Yes: spam(ham[1], {eggs: 2}, [])
No: spam( ham[ 1 ], { eggs: 2 }, [ ] )

2.2 逗号(comma),分号(semicolon),冒号(colon)之前不要有空格,在这些符号的(前提是符号不在行末尾)后面可以有一个空格:

 

Yes:
if a == b:
    print x, y

No:
if a == b : 
    print x , y

2.3 函数调用、数组选取、dict选取的左括号前不要有空格:

 

Yes:
spam(1)
list[index] = dict['key']

No:
spam (1)
list [index] = dict ['key']

2.4 >, =, == 等操作符两侧最好有空格,但函数声明的default arguments value 和函数调用传递参数时 = 两侧不要有空格:

 

Yes:
def f(a=1, b=2):
    pass

f(a=3, b=4)

No:
def f(a = 1, b = 2):
    pass

f(a = 3, b = 4)

2.5 在一行之内不要用空格控制竖直位置,以免增加维护成本:

 

Yes:
class AaBb(Entity):
    a = Field(String(100), default='aa') # name
    b = Field(Integer(8)) #number

No:
class AaBb(Entity):
    a = Field(String(100), default='aa') # name
    b = Field(Integer(8))                       #number

 

3 有关字符串的一些连接操作:

3.1 两个或几个字符串直接拼接的时候可以用 a + b,否则用'%s, %s.'%(a, b) 更妥;

3.2 循环体内字符串拼接的时候最好先将片段存入数组,再进行 join 拼接。这样可以减少不断的生成临时string 对象从而缩短运行时间。

 

4 TODO 注释:

没有代码可以一次性写到完美,很多实际情况也确实要求我们暂时只把事情做到80%,所以TODO注释是非常重要的。通过TODO注释可以告诉自己也告诉其他人这部分代码可能在未来某时需要怎么样的改进,以及为何采用现在的暂时性方法。

标准的格式主要为了便于搜索:

 

# TODO(Zeke): change this to use relations
 

最后的结束语看过之后也很有触动,为什么要做一份代码编写规范(协议)呢?我们应该怎样做呢?

1. 保持代码所在环境的风格。在已有代码中加入新代码的时候应该先去熟悉现有代码的风格,比如缩进、空格的使用,然后再加入自己的代码,以使得新代码的风格不会显得突兀,从而给阅读者造成困扰;

2. 代码编写规范的意义就在于使别人(或自己)阅读代码的时候专注于代码的内容是什么,而不是这段代码是怎么写的。团队协作尤其需要这些。

3. 最重要的一点:始终如一的坚持某一风格。

 

-eof-

0
3
分享到:
评论

相关推荐

    QQ代码简单的

    9. **代码规范与重构**:遵循一定的编码规范,如PEP8(Python)或Google Java Style Guide,可以使代码更易读、易维护。同时,通过重构将复杂代码分解为可重用的模块,可以提高代码质量。 10. **持续学习与社区资源...

    更新_更新源码_

    遵循一定的编码规范(如PEP8 for Python,Google Style Guide for Java等)可以使代码更易读,更易于维护。 10. 单元测试和覆盖率:确保每个更新都有对应的测试用例,以提高代码覆盖率,降低未来可能出现的问题。 ...

    media ataemedia

    4. **编程规范**:解释编程规范的重要性,列举一些常见的编程规范,如Pep8(Python)、Google Style Guide(Java、C++等)以及JavaScript的Airbnb Style Guide。 5. **考试准备**:分享如何有效地准备编程规范考试...

    psikus-源码.rar

    例如,Java有Google Java Style Guide,Python有PEP 8。 7. **注释和文档**:源码中的注释提供了关于代码功能和用途的信息,而项目文档可能包括README、CHANGELOG和API参考等,帮助理解和使用项目。 8. **测试**:...

    Java通讯录TelephoneBook

    10. **代码规范**:遵循良好的编程习惯,如使用有意义的变量名,适当的注释,以及遵守Java代码风格指南(如Google Java Style Guide),可以使代码更易于阅读和理解。 通过这个项目,开发者不仅可以巩固Java基础...

    分享代码-全功能

    9. 代码风格和规范:为了保持代码的一致性和可读性,团队通常会遵循特定的代码风格指南,如Google Style Guide或Airbnb Style Guide。代码格式化工具(如Prettier)和静态代码分析工具(如ESLint)可以帮助自动检查...

    neu-hj2neu-hj2neu-hj2neu-hj2neu-hj2neu-hj2neu-hj2

    不同的编程语言有各自的编码规范,如Python的PEP 8,Java的Google Java Style Guide等。 4. **Visual Assist X**:Visual Assist X是Visual Studio的一个插件,它提供了代码补全、重构、格式化、导航等功能,极大地...

    DP_P2源码.zip

    7. **代码规范**:遵循一定的编码规范,如Google Style Guide或PEP8,能提高代码的可读性和可维护性。 8. **文档**:高质量的源码通常配有详细的README文件或API文档,解释项目的用途、安装步骤、使用方法等。 9. ...

    reproducible-源码.rar

    10. **代码规范和风格**:遵循一致的编码规范(如PEP8 for Python或Google Style Guide for Java)可以提高代码的可读性和可维护性,有助于他人理解和复现代码。 总的来说,"reproducible-源码.rar" 压缩包可能包含...

    代码之美-精选版.pdf

    良好的编程风格包括合理的命名规则、注释规范、代码缩进和空白的使用,以及遵循一定的编码标准,如PEP8(Python)或Google Style Guide(Java)等。 2. **模块化与封装**:将复杂问题拆解为独立的模块,可以提高...

    ERA_modalanalysis_源码.zip

    10. **编码规范**:代码是否遵循一定的编码标准,如PEP8(Python)、Google Java Style Guide等,这影响代码的可读性和团队协作。 11. **代码复杂性**:通过计算圈复杂度(Cyclomatic Complexity)等指标,可以评估...

    PF-TBD-master_PFTBD_PF-TBD_PF_TBD_tbd检测前跟踪_tbd.zip

    6. **代码规范**:项目的编码风格和注释有助于理解和维护代码,可能遵循某种约定,如Google的Java Style Guide或PEP8(Python)。 7. **文档**:除了源代码,项目可能还包括`README.md`、`docs`目录下的技术文档,...

    读者与写着问题源代码

    大多数编程语言都有推荐的官方风格指南,如Python的PEP 8,Java的Google Java Style Guide等。 3. **注释**:注释是源代码中的非执行部分,用于解释代码的功能、用途或实现细节。有效的注释能帮助读者快速理解代码...

    练习2_

    7. **代码风格**:遵循一定的编码规范,如PEP8(Python)或Google Style Guide(Java),可以提高代码的可读性和团队协作效率。 8. **数据结构和算法**:如果练习复杂度增加,可能涉及到数据结构(如数组、列表、...

    公交小demo

    2. **编程规范**:遵循一定的编程规范(如PEP8 for Python, Google Style Guide for Java等)能确保团队间的代码一致性,减少理解难度。对于“烂”代码,引入规范并进行代码审查可以显著提升代码质量。 3. **错误...

    coolformat 代码格式化工具

    这使得它能适应各种编码规范,如Google Style Guide、PEP8等。 7. **批量处理**:工具可能具备批量格式化功能,用户可以选择整个目录或者多个文件进行一次性格式化,大大提高了工作效率。 8. **快捷键绑定**:...

    classDemo:上课的额外信用演示

    7. **代码规范**:遵循一定的编码风格和规范,如PEP8(Python)或Google Java Style Guide,可以使代码更易于阅读和维护。 8. **文档编写**:良好的项目应该有清晰的文档,包括README文件,描述项目的目标、如何...

    工具包源码和出错的源码

    5. **代码风格**:遵循一定的编码规范,如PEP8对于Python,或者Google的C++ Style Guide,以保持代码的一致性。 6. **性能优化**:考虑代码的运行效率,避免不必要的计算,合理使用数据结构和算法。 7. **测试**:...

    HomeWork8

    10. **编程规范**:遵循良好的编码风格,比如PEP8(Python)或Google C++ Style Guide。 如果"HomeWork8"是一个团队项目,可能还会涉及到团队协作、项目管理工具(如Trello或Jira)的使用,以及代码审查和文档编写...

    挑战1

    遵循一定的编码标准,如PEP8(Python)或Google Style Guide(C++),可以使代码更易于理解和合作。 在实际操作中,我们需要首先解压文件,然后根据代码内容确定挑战的具体要求。这可能涉及到学习新的编程概念或...

Global site tag (gtag.js) - Google Analytics