一:Code Review的必要性

代码审查,可以帮助他人发现不足,也可以促进自己培养良好的编程习惯。

自我代码审查,可以在编码完成之后,对自己的代码进行整理,发现“味道不好”的代码,作进一步的调整、重构,这个过程也是沉淀自己、积累经验、提升的过程。

由于我所在的公司是“业务推动型”的,所以没有进行CR。

平时,我都是尽量在调试过程中顺手对自己的代码审查一下,或者一天任务完成后进行审查,所以我的审查技巧只是针对个人。

二:自我Code Review怎么做

  • 代码格式审查:这是最基本的,审查代码缩进、注解位置、是否符合编码规范等。

  • 可读性审查:命名审查(类名、函数名、变量名要尽量表明用途,变量名以“类型_用意”格式,如:day_start)、功能审查(对函数进行审查,把能够提取出去的部分进行重构)、注释审查(注释要准确)

  • 健壮性审查:以怀疑的眼光检查代码,对可能出现的异常情况进行排查、fix。例如:对象调用类的语句最容易出现空指针调用、类型转换语句可能会报错等等。

  • 重构:代码是否有可以重构的地方,并且进行重构

三:Python编码规范

1:注释的格式

文档字符串:类、函数的必要注解

类的docstring格式为:第一行概述,第二行空行,第三行开始是类的详细描述,之后以空行分割,Attributes部分描述类的属性们。

"""Summary of class here.

    Longer class information....
Longer class information.... Attributes:
likes_spam: A boolean indicating if we like SPAM or not.
eggs: An integer count of the eggs we have laid.
"""

函数的docstring格式为:第一行是函数的主要功能,以句号, 问号或惊叹号结尾。

第二行是一个空行。

第三行是类、函数的详细描述。

第四行是空行。

第五行开始,分别是:Args、returns、raises,三部分以空行分割。

"""概述.

    详细描述.

    Args:
参数1: 类型、作用.
参数2: 类型、作用.
...... Returns:
类型、作用. Raises:
Error1: 什么错误、引发条件。
"""

代码注释:在行中的注释,需要与代码隔开两个空格。

2:字符串的写法

占位符的使用:

     x = '%s, %s!' % (imperative, expletive)
x = '{}, {}!'.format(imperative, expletive)
x = 'name: %s; score: %d' % (name, n)
x = 'name: {}; score: {}'.format(name, n)

连接字符串:不要用+,而用列表,把要连接的字符串append进列表,作用join即可连接。

四:工具使用:isort+yapf+pylint+unittest

1:首先,用isort整理import语句

isort **/*.py  #整理一个文件夹内所有py文件
isort *.py #整理当前文件夹内所有py文件

2:然后,使用yapf整理代码格式

yapf -i -r 文件夹名  #整理并替换文件夹内所有py文件
yapf -i *.py #整理当前文件夹内所有py文件

3:最后,使用pylint逐个审查py文件,逐项修正

pylint 文件名.py

根据打印信息,逐项去修正代码。

message 的格式如下: 
    MESSAGE_TYPE: LINE_NUM:[OBJECT:] MESSAGE

MESSAGE_TYPE 有如下几种: 
    (C) 惯例。违反了编码风格标准 
    (R) 重构。写得非常糟糕的代码。 
    (W) 警告。某些 Python 特定的问题。 
    (E) 错误。很可能是代码中的错误。 
    (F) 致命错误。阻止 Pylint 进一步运行的错误。

4:最后的最后,使用各种用例对代码进行测试,测试过程中逐个检查函数,发现冗余代码并运用重构手法进行重构。

Code Review学习笔记的更多相关文章

  1. EF Code First学习笔记

    EF Code First学习笔记 初识Code First EF Code First 学习笔记:约定配置 Entity Framework 复杂类型 Entity Framework 数据生成选项 ...

  2. EF Code First 学习笔记:关系

      一对多关系 项目中最常用到的就是一对多关系了.Code First对一对多关系也有着很好的支持.很多情况下我们都不需要特意的去配置,Code First就能通过一些引用属性.导航属性等检测到模型之 ...

  3. EF Code First学习笔记:数据库创建

    控制数据库的位置 默认情况下,数据库是创建在localhost\SQLEXPRESS服务器上,并且默认的数据库名为命名空间+context类名,例如我们前面的BreakAway.BreakAwayCo ...

  4. EF Code First 学习笔记:表映射

    多个实体映射到一张表 Code First允许将多个实体映射到同一张表上,实体必须遵循如下规则: 实体必须是一对一关系 实体必须共享一个公共键 观察下面两个实体: public class Perso ...

  5. EF Code First学习笔记 初识Code First

    Code First是Entity Framework提供的一种新的编程模型.通过Code First我们可以在还没有建立数据库的情况下就开始编码,然后通过代码来生成数据库. 下面通过一个简单的示例来 ...

  6. EF Code First学习笔记 初识Code First(转)

    Code First是Entity Framework提供的一种新的编程模型.通过Code First我们可以在还没有建立数据库的情况下就开始编码,然后通过代码来生成数据库. 下面通过一个简单的示例来 ...

  7. EF Code First 学习笔记:表映射 多个Entity到一张表和一个Entity到多张表

      多个实体映射到一张表 Code First允许将多个实体映射到同一张表上,实体必须遵循如下规则: 实体必须是一对一关系 实体必须共享一个公共键 观察下面两个实体: public class Per ...

  8. EF Code First学习笔记:数据库创建(转)

    控制数据库的位置 默认情况下,数据库是创建在localhost\SQLEXPRESS服务器上,并且默认的数据库名为命名空间+context类名,例如我们前面的BreakAway.BreakAwayCo ...

  9. EF Code First 学习笔记:表映射(转)

      多个实体映射到一张表 Code First允许将多个实体映射到同一张表上,实体必须遵循如下规则: 实体必须是一对一关系 实体必须共享一个公共键 观察下面两个实体: public class Per ...

随机推荐

  1. linux dig命令 转

    dig 命令主要用来从 DNS 域名服务器查询主机地址信息. 查询单个域名的 DNS 信息 dig 命令最典型的用法就是查询单个主机的信息. $ dig baidu.com dig 命令默认的输出信息 ...

  2. Objective-C 入门笔记

    简介 建立在C语言之上,可以混编C/C++代码,编写一个类需要二个文件: .h的头文件 .m的实现文件(如果是C/C++混编文件,文件后缀为.mm) 既然有头文件,所以很多人会拿它与C++进行类比,它 ...

  3. Lua date转秒数

    之前写过一篇关于把秒转换成指定的日期格式 Lua date format   接到一个需求,需要从配置文件中读取活动显示时间段:startDate ~ endDate(格式为:yyyy-mm-dd H ...

  4. ios之单例模式

    原帖地址:http://www.galloway.me.uk/tutorials/singleton-classes/ 本文为博主自行翻译,转载请注明出处:http://blog.csdn.net/i ...

  5. <A>标签锚标记

    链接到本页面 – 锚记标签用于使用户“跳”到文档的某个部分 – HTML 的NAME 属性用于创建锚标记 <A NAME = “marker”>主题名称</A> – 为达到这种 ...

  6. Installing Hyperledger Fabric v1.1 on Ubuntu 16.04 — Part II &  Part III

    This entire tutorial is the second part of the installation of Hyperledger Fabric v1.1. In the previ ...

  7. AsyncHttpClient的连接池使用逻辑

    AsyncHttpClient的连接池结构很简单, NettyConnectionsPool内部重要的几个变量如下 // 连接池, 通过 host 区分不同的池 private final Concu ...

  8. ASP.NET MVC:WebPageRenderingBase.cs

    ylbtech-funcation-Utility: ASP.NET MVC:WebPageRenderingBase.cs 提供用于呈现使用 Razor 视图引擎的页的方法和属性. 1.A,WebP ...

  9. caffe添加python数据层

    caffe添加python数据层(ImageData) 在caffe中添加自定义层时,必须要实现这四个函数,在C++中是(LayerSetUp,Reshape,Forward_cpu,Backward ...

  10. HTML5基础扩展——地理位置、本地存储、缓存

    HTML5扩展,继上两篇博客,我们来看一下HTML5的一些扩展的功能,由于HTML5更多是为了兼容电脑浏览器,安卓浏览器,苹果浏览器更多浏览器,或者说为这些浏览器提供一个统一的标准.因此目前在手机上的 ...