一些可能发生的情况

代码写的不好了,导致团队中另一波人开始对项目另起炉灶,开了一个新的仓库。然后开始了持久的双方的竞赛。这对开发来说是一种巨大的精力浪费。

正常情况下,平时写代码的时候,阅读代码:编写代码的时间是9:1 ,使用一个录屏然后加速处理就可以看出来。但实际上糟糕的时候这个比值会变大。

要写一写测试框架,甚至有专门的面向测试编程。

python的单元测试:

1
2
3
4
5
6
7
8
9
# 文件名: calculator.py

class Calculator:
def add(self, a, b):
return a + b

def subtract(self, a, b):
return a - b

测试代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 文件名: test_calculator.py

import unittest
from calculator import Calculator

class TestCalculator(unittest.TestCase):

def test_add(self):
calc = Calculator()
self.assertEqual(calc.add(1, 2), 3)
self.assertEqual(calc.add(-1, 1), 0)
self.assertEqual(calc.add(-1, -1), -2)

def test_subtract(self):
calc = Calculator()
self.assertEqual(calc.subtract(3, 1), 2)
self.assertEqual(calc.subtract(-1, 1), -2)
self.assertEqual(calc.subtract(-1, -1), 0)

if __name__ == '__main__':
unittest.main()

有点像出算法题的测试用例。单元测试可以帮助我们节省一些手动测试的情况,让我们心里更有底。

糟糕的代码

命名

  1. 命名不好:拼音、拼错、奇怪的方言
  2. 不好理解:缩写、抖机灵、驼峰格式不一致
  3. 出现冲突:和一些专用词冲突、通用性太强难搜索
  4. 误导歧义:本来是set类型但名字却有个list。

血泪经验

1
2
3
4
5
6
7
8
9
10
11
# 用的太多了,建议加上user
name -> userName
id -> userId
# 不专业
headSculpture -> avatar # 哈哈,头部雕像
# 拼写错误
paino -> piano
mood -> mode
# 冲突
str = 'xxx' # python内置了
list = 'xxx'

函数

一个函数多多件事情(违反单一职责原则)

参数不好:太多,参数位置混乱

考虑副作用

异常处理存放层级混乱

注释

  1. 编辑器可能有注释折叠功能
  2. 编辑器带有注释高亮效果:todo 、fixme。但在合作中写todo会让别人感觉不爽,也会让git提交时候产生警告。
  3. 废话注释,重复的话说来说去,一旦代码功能改了但注释忘了改,这个废话会变成谎言
  4. 滥用位置标记注释
  5. 注释掉的代码:会让合作者产生担心,不敢碰。确信没用的代码就删了,别总留着注释。

格式

编辑器不同引发的问题:

2023年前端项目和别人合作,我用的Webstome,另一个人用的vscode,格式化标准都不一样,最后安装了一个专门格式化的包 prettierrc。

webstome安装之后自带的报错警告效果优于刚安装的vscode,但是vscode在各种插件的加持下会优于刚安装的webstome。

报错警告不同引起合作的时候一个人看起来代码正常但另一个人打开的时候难受。

需要一个文件夹专门存放代码格式说明

文件格式

  1. 规定每个代码文件一行尽量不超过多少字符
  2. 规定每个代码文件尽量不超过多少行