我的编码规范

news/2024/7/19 9:53:05 标签: python, 爬虫, 测试
我的编码规范

title: 我的编码规范
date: 2015-07-19 16:31:54
categories: [Python]
tags: [Python, CodeStyle]
---

开篇闲扯

距离上一次更新已经有快三个月了,这三个月我都在干什么呢?首先是继续实习,因为一些原因,本来计划的三个月实习变成了四个月。在实习的过程中逐步接手了一些维护的工作,并提交了不少代码。7月6号正式入职以后,我加入了一个Amazing的新项目的创建,目前我们做出来的Demo真是非常的Amazing。不过可惜的是,这样一个项目在最近几年是不会对外公布的。

在6月之前,每晚回家就是做毕设了,这段时间休息的都比较晚,头发都白了很多。

还有就是给极客学院录课,第一个系列课程《定向爬虫入门》已经全部录制完毕了,一共8课,大家可以在about me 里面找到前7课的链接,最后一课目前正在后期制作当中,上线以后会更新链接。接下来我会讲解远程控制软件的编写,欢迎大家在极客学院关注我,我的名字叫kingname~

闲话完毕,那我们开始正题。

本题由来

其实以前我是不太注意编码风格的,觉得程序可以运行了就行。甚至网上还有一种说法:

如果你急急忙忙写一个程序,都没有注重编码规范,程序可能一次就跑通了;但是如果你仔细编码,而且还把单元测试做的非常完善,很有可能程序会出现大bug,而且还难以找到原因。

然而在我实习的过程中,读了公司的很多代码,才发现编码规范是如此的重要,以至于可以显著影响对代码的理解。而且由于在部门里面code review做的比较严格,因此代码的风格不统一的话,是不能merge的,于是在多次提交代码以后渐渐的总结出了一些规律。

变量命名

在我大一学编程的时候,老师告诉我们变量命名最后使用匈牙利命名法,例如,经常出现hszStr、istuNum之类的变量名,如果对代码不熟悉的话,都不知道是什么意思。

现在我们并不使用匈牙利命名法,而是直接将变量的含义通过单纯完整拼写处理。例如:

deviceSerialDict: 用于保存设备串号的字典
deviceSerialDictList: 用于保存设备串号字典的列表
unusedSerialNumList: 未使用的序列号列表

我们约定:

  • 变量名首字母小写
  • 多个单词的构成的变量,从第二个开始首字母大写
  • 缩写词做单词处理,例如ACM在变量名中应该写为Acm而不是ACM
  • 常量大写,每个单词使用_下划线分割
  • 不允许出现Magic Number
  • 使用名词或者动宾结构

类与方法

使用面向对象编程,这一点在我做毕业设计的程序时,帮了我大忙,大大减轻了我的工作压力。

我们的风格其实有点像Java了,文件名和类名相同,如果一个文件里面有多个类,那文件名与主要的类名相同。

我们约定:

  • 非私有的方法,首字母小写,动宾结构,例如getSerialNum
  • 对于和类本身没有什么大关系的方法,要使用@staticmethod
  • 只有类自己使用的方法需要设为私有,也就是名称前加两个下划线

代码细节

  • 逗号后面要有一个空格
  • 每一行代码后面不能有空格
  • 文件的最后要有一个空行
  • 等号左右都需要有空格,但是作为参数的时候不需要空格
  • 方法的参数大于6个,则使用列表或者字典来传递

总结

挂一漏万,以上的规范使用Pylint都可以帮忙检查出来。没有说到的地方请大家补充,除了以上的规范以外,还有Python自己本身的编码规范,请戳->https://www.python.org/dev/peps/pep-0008/。

最近重构了MCC,请大家对比

https://github.com/kingname/MCC

与 重构之前

https://github.com/kingname/MCC/tree/c806c3ccfd0c0585d51caa9f85e6867e0f3ee8cb

的区别。

posted on 2015-10-07 19:19 青南 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/xieqiankun/p/mycodestyle.html


http://www.niftyadmin.cn/n/1634774.html

相关文章

竖线的显示

前天LP问我怎么样显示一根竖线,因为我们知道 <hr> 能显示一条横线,可是怎么样才能出现一条竖线呢?想起这个问题也曾经让我很烦,以至于采取画一个表格,在里面画很多的小竖线,连起来也就是一条竖线了,效果也不错. 可是有一个方法很简单,当我知道能这样实现的时候,我很郁闷…

一个常见的错误时编写代码

实验室阶段做练习&#xff0c;其中&#xff0c;变化bug称号&#xff1a;#include <iostream> #include <vector>int main(int, char**) {std::vector<int>** ppRandomData distributeRandomInt(100);for (unsigned int i0; i<1000; i){if (ppRandomData[…

江苏小高考计算机什么时候考,2021江苏小高考时间 什么时候考试

江苏省2021年普通高考及普通高中学业水平合格性考试(原俗称“小高考”)报名工作即将开始。我市考生普通高考报名时间为2020年11月11日-14日&#xff0c;普通高中学业水平合格性考试报名时间为2020年11月15&#xff0d;17日。逾期不得补报。2021江苏小高考什么时候报名江苏小高考…

AOC的服务还算好,但不知道要等多久

显示器据称要拿到广州去修&#xff0c;但估计要一个月……说是免费帮我修。 不知道放寒假之前能否到手 显示器的问题是有划痕&#xff0c;怀疑防静电涂层脱落&#xff0c;然后不断有静电打在屏幕上&#xff0c;造成越来越多的划痕。 相关链接&#xff1a; :) 显示器没了…… ( …

SQLite数据库框架ORMLite与GreenDao的简单比较

笔记摘要&#xff1a;最近准备使用数据库做个缓存&#xff0c;以前因为项目中的实时性要求比较高&#xff0c;所以在整体的框架中就没有加缓存&#xff0c;有些地方只 是简单的将对象保存到了Preference中&#xff0c;所以并没有对数据库方面有所研究&#xff0c;既然准备使用数…

单元格等于计算机日期,Excel相邻单元格快速填入相同日期的几种方法

Excel中要在相邻单元格中输入相同的日期数据&#xff0c;虽然方法多多&#xff0c;但究竟哪种方法最方便呢&#xff1f;下面我就给大家一一列举一下&#xff0c;哪种最方便您就自己下结论吧。1、地球人都知道的复制粘贴大法&#xff1a;在一个单元格中输入完日期后&#xff0c;…

计算机不同的路由如何共享打印机,不同局域网内电脑如何实现互访实现文件或打印机共享...

一、使用一条网线将两个路由器连接&#xff0c;网线插在路由器的LAN口上;二、两个路由器要设置两个不同的局域网段IP&#xff1a;将A路由器LAN设置为192.168.1.1&#xff0c;子网掩码为&#xff1a;255.255.0.0;B路由器LAN设置为192.168.2.1&#xff0c;子网掩码为&#xff1a;…

设置Maven默认的JDK为1.7,解决Update Maven Project默认为1.5和Maven打包报错2个问题

1.之前&#xff0c;一直遇到这个问题。Update Maven Project的时候&#xff0c;JDK变成了1.5的。 如果项目中有使用“overdide”&#xff0c;程序就会报错&#xff0c;需要手动修改JRE为1.7的。2. Maven打包时&#xff0c;Java代码使用了JDK1.7的语法" catch (IllegalA…