一: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. TextView中文文档

    十分感谢农民伯伯的翻译:http://www.cnblogs.com/over140/archive/2010/08/27/1809745.html xml 属性: 属性名称 描述  android: ...

  2. 低版本系统兼容的ActionBar(六)用Fragment+ViewPager+Tab实现快速导航

    Tab经常和Fragment结合使用,这一讲我们用3种方式来实现这种快捷导航. 0.重要的两个监听器 MyTabListener,这个我们之前已经接触过了 package com.kale.actio ...

  3. 虚拟机内存复用技术的比较(XEN系统)

    技术途径 业界就该问题定义为虚拟机内存复用(复用干嘛? 当然是为了跑更多的虚拟机呀!) :memory overcommit.围绕次问题主要有4种技术手段,下面简要介绍和分析: 1 气泡驱动(ball ...

  4. [leetcode]N-Queens II @ Python

    原题地址:https://oj.leetcode.com/problems/n-queens-ii/ 题意:和N-Queens这道题其实是一样的,只不过这次要求返回的时N皇后的解的个数的问题. 解题思 ...

  5. gradlew 命令行 build 调试 构建错误 Manifest merger failed MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...

  6. 大数据开发实战:Spark Streaming流计算开发

    1.背景介绍 Storm以及离线数据平台的MapReduce和Hive构成了Hadoop生态对实时和离线数据处理的一套完整处理解决方案.除了此套解决方案之外,还有一种非常流行的而且完整的离线和 实时数 ...

  7. 十个 Laravel 5 程序优化技巧

    性能一直是 Laravel 框架为人诟病的一个点,所以调优 Laravel 程序算是一个必学的技能. 接下来分享一些开发的最佳实践,还有调优技巧,大家有别的建议也欢迎留言讨论. 这里是简单的列表: 配 ...

  8. 在Android上山寨了一个Ios9的LivePhotos,放Github上了

    9月10号的凌晨上演了一场IT界的春晚,相信很多果粉(恩,如果你指坚果,那我也没办法了,是在下输了)都熬夜看了吧,看完打算去医院割肾了吧.在发布会上发布了游戏机 Apple TV,更大的砧板 Ipad ...

  9. linux kernel内存映射实例分析

    作者:JHJ(jianghuijun211@gmail.com)日期:2012/08/24 欢迎转载,请注明出处 引子 现在android智能手机市场异常火热,硬件升级非常迅猛,arm cortex ...

  10. js的技巧

    字典: if(tac["detail"][sid] || tac["detail"][sid]==0) //判断某项是否存在,0为真 tac["det ...