Code Review学习笔记
一: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学习笔记的更多相关文章
- EF Code First学习笔记
EF Code First学习笔记 初识Code First EF Code First 学习笔记:约定配置 Entity Framework 复杂类型 Entity Framework 数据生成选项 ...
- EF Code First 学习笔记:关系
一对多关系 项目中最常用到的就是一对多关系了.Code First对一对多关系也有着很好的支持.很多情况下我们都不需要特意的去配置,Code First就能通过一些引用属性.导航属性等检测到模型之 ...
- EF Code First学习笔记:数据库创建
控制数据库的位置 默认情况下,数据库是创建在localhost\SQLEXPRESS服务器上,并且默认的数据库名为命名空间+context类名,例如我们前面的BreakAway.BreakAwayCo ...
- EF Code First 学习笔记:表映射
多个实体映射到一张表 Code First允许将多个实体映射到同一张表上,实体必须遵循如下规则: 实体必须是一对一关系 实体必须共享一个公共键 观察下面两个实体: public class Perso ...
- EF Code First学习笔记 初识Code First
Code First是Entity Framework提供的一种新的编程模型.通过Code First我们可以在还没有建立数据库的情况下就开始编码,然后通过代码来生成数据库. 下面通过一个简单的示例来 ...
- EF Code First学习笔记 初识Code First(转)
Code First是Entity Framework提供的一种新的编程模型.通过Code First我们可以在还没有建立数据库的情况下就开始编码,然后通过代码来生成数据库. 下面通过一个简单的示例来 ...
- EF Code First 学习笔记:表映射 多个Entity到一张表和一个Entity到多张表
多个实体映射到一张表 Code First允许将多个实体映射到同一张表上,实体必须遵循如下规则: 实体必须是一对一关系 实体必须共享一个公共键 观察下面两个实体: public class Per ...
- EF Code First学习笔记:数据库创建(转)
控制数据库的位置 默认情况下,数据库是创建在localhost\SQLEXPRESS服务器上,并且默认的数据库名为命名空间+context类名,例如我们前面的BreakAway.BreakAwayCo ...
- EF Code First 学习笔记:表映射(转)
多个实体映射到一张表 Code First允许将多个实体映射到同一张表上,实体必须遵循如下规则: 实体必须是一对一关系 实体必须共享一个公共键 观察下面两个实体: public class Per ...
随机推荐
- localhost与127.0.0.1及本机ip的区别
很多人会接触到这个ip地址127.0.0.1.也许你会问127.0.0.1是什么地址?其实127.0.0.1是一个回送地址,指本地机,一般用来测试使用.大家常用来ping 127.0.0.1来看本地i ...
- SharePoint 设置客户端上传文件大小
in sharepoint 2013, 2016 , there is a limitatoin on the size of the uploading files , default size f ...
- win7 64位系统及开发环境重装后的总结
前言 话说来这家公司之后就一直使用这个系统,现在感觉这系统跑的实在是有点慢了,运行,调试各种浪费时间呀,不过也用了将近20个月了,这也可以说是我用的最久的一个系统了.由于新项目即将拉开战幕,所以自己趁 ...
- 用SparseArray代替HashMap
SparseArray是android提供的一个工具类,它可以用来替代hashmap进行对象的存储,其内部实现了一个矩阵压缩算法,很适合存储稀疏矩阵的. PS:support包中还提供了兼容的类Spa ...
- Orchard模块开发全接触5:深度改造前台第二部分
在这一部分,我们继续完善我们的购物车,我们要做以下一些事情: 1:完成 shoppingcart.cshtml: 2:让用户可以更新数量及从购物车删除商品: 3:创建一个 widget,在上面可以看到 ...
- java常见反编译工具
1.Java反编译插件 —— Jadclipse JadClipse是Jad的Eclipse插件,是一款非常实用而且方便地Java反编译插件,我们只需将下载的插件包复制到eclipse的plugins ...
- Android Studio导入项目的中文注释乱码解决方法
在Android studio中,导入Android的项目后,容易出现项目文件的中文乱码,中文无法正常显示,变成了一些格子问号之类的,导致无法查看中文的注释,下面来看看导入项目和解决乱码 ...
- Caffe中deploy.prototxt 和 train_val.prototxt 区别
之前用deploy.prototxt 还原train_val.prototxt过程中,遇到了坑,所以打算总结一下 本人以熟悉的LeNet网络结构为例子 不同点主要在一前一后,相同点都在中间 train ...
- DAU预测
转自: http://www.kaixin001.com/repaste/80488684_6910412734.html 我们知道在所有的游戏运营数据中,最终要的两个数据莫过于DAU.ARPU了.| ...
- protobuf标准消息方法
protobuf标准消息方法 1.标准消息方法 每个消息类包含一些其他方法允许你检查和控制整个消息,包括: · IsInitialized() :检查是否所有必须(required)字段都已经被赋值了 ...