coding习惯矫正

直系领导手把手带我Refactor代码,纠正下以前的坏习惯,记录下来

目录

1.try-except后一定要处理except:

2.不要把所有的参数说明都写在代码中,给一个link ref就好

3.不要把debug时的print等注释掉,要么删除,要么加上debug或者verbose变量:

4.利用枚举清晰逻辑

5.习惯使用f-string与pep8进行format

6.命名规范


1.try-except后一定要处理except:

'''
原始写法如下:
目的:pic1是opencv读取的图片,如果为空返回一个[],但是不为空时为numpy,使用if not会报错,就采用了try的方式,这是练leetcode学会的,用try规避报错。
但是这里这样写就导致了except没有做任何事情,如果发生的其他错误,风险极大
'''
try:
    if not pic1:return
except:
    pass

'''
修改:
pic1如果为空返回None而不是[],
'''
if pic1 is None:return

我很习惯用try去跳脱错误,但是这是不好的方式,改正!改正!

2.不要把所有的参数说明都写在代码中,给一个link ref就好


'''
原始写法如下:
'''

'''
image: 必须是二值图像,推荐使用canny边缘检测的结果图像; 
rho: 线段以像素为单位的距离精度,double类型的,推荐用1.0 
...
'''
lines = cv.HoughLinesP(img_canny, 1.0, np.pi / 180, threshold=30 + 5 * i, minLineLength=40, maxLineGap=5)


'''
改为:
'''

'''
HoughLinesP参数 ref:https://blog.csdn.net/dcrmg/article/details/78880046
'''
lines = cv.HoughLinesP(img_canny, 1.0, np.pi / 180, threshold=30 + 5 * i, minLineLength=40, maxLineGap=5)

3.不要把debug时的print等注释掉,要么删除,要么加上debug或者verbose变量:

'''
原始代码,imshow被注释掉了,这是在debug过程中可视化展示调节的内容
'''
def main(json_path):
    # 此处省略。。。
    # cv.imshow('image', cv.resize(pic1, (500, 400)))
    # cv.waitKey(0)

'''
改动:直接删除是一种方法,另一种方法是加上参数
main不光加上了verbose这个参数,还加上了*,目的是区分该debug的参数
'''
def main(json_path,*,verbose=False):
    # 此处省略。。。
    if verbose:
        cv.imshow('image', cv.resize(pic1, (500, 400)))
        cv.waitKey(0)

这个其实比较简单,只是要养成这种习惯,不然代码会debug过程中越来越乱,尤其是有些debug内容又不想删掉就难以区分

4.利用枚举清晰逻辑

枚举类似于结构体,这样虽然代码看起来复杂了一些,但是逻辑更加清晰了

'''
原始代码:
'''
image = image[...,0]  # 读取蓝色通道


'''
改动,创建一个py文件存放枚举数据,使用枚举变量进行读取,一眼就能看出是读取蓝色通道,可去掉注释了
from enum import IntEnum
class Channel(IntEnum):
    BLUE = 0
    GREEN = 1
    RED = 2
'''
image = image[..., Channel.BLUE]  # 读取蓝色通道

5.习惯使用f-string与pep8进行format

f-string谁用谁知道,真好用

按代码规范format养成习惯就行

6.命名规范

(1)类名一般是首字母大写:比如CameraCalibration
(2)变量名一般用下划线:比如camera_param
(3)python习惯:一个下划线表示self的变量,两个下划线表示内部方法,一般而言在init中初始化的变量都是带下划线的:

def __init__(self, aruco_detector, image_size):
    self._ARUCO_DETECTOR = aruco_detector
    self._IMG_SIZE = image_size

(4)全局变量全大写,以前java也是如此
(5)变量名字一眼要能读懂什么意思,比如camera_params就是相机的参数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值