代码整洁之道(1)- 有意义的命名

有意义的命名

参考书籍:《代码整洁之道》,语言:Python

1.变量的命名要与其本意相符合

1)变量、函数或类的命名应该能告诉我们,它为什么存在,它做什么事,应该怎么用

2)如果一个名称还需要注释来补充,那就不算是名副其实

3)目的:选择体现本意的名称让人更容易理解和维护

 

案例1:定义一个变量,用来表示消逝的时间,以日计

1 #名称d什么也没有说明,它没有引起时间逝去的感觉,也没有说明时间的单位
2 d = 13  
4 #定义指明计量对象和计量单位的名称
5 elapsed_time_in_days = 1
6 days_since_creation = 1
7 days_since_modification = 1
8 file_age_in_days = 1

 

 

案例2:一段模糊代码的优化

 1 """
 2     demo1:
 3         a.没有体现list1表示什么
 4         b.没有体现list2的0下标表示什么
 5         c.没有体现值3表示什么
 6         d.没有体现应该怎么使用返回的列表
 7 """
 8 list1 = [[0, 1, 2], [3, 1, 3]]
 9 def get_them():
10     list2 = []
11     for x in list1:
12         if x[0] == 3:
13             list2.append(x)
14     return list2
15 
16 #print(“demo1 ”, get_them())
17 
18 ##假设我们开发一种扫雷游戏,盘面上的单元格都用一个列表表示,0下标表示单元格的一种状态值,值3表示“已标记”
19 
20 """
21     demo2:将变量的命名修改为有意义的名称
22 """
23 game_board1 = [[0, 1, 2], [3, 1, 3]]
24 STATUS_VALUE = 0
25 FLAGGED = 3
26 def get_flagged_cells1():
27     flagged_cells = []
28     for cell in game_board1:
29         if cell[STATUS_VALUE] == FLAGGED:
30             flagged_cells.append(cell)
31     return flagged_cells
32 
33 #print("demo2 ", get_flagged_cells1())
34 
35 """
36     demo3:用一个类表示单元格
37 """
38 class Cell():
39 
40 
41     FLAGGED = 3
42 
43     def __init__(self, status, x_point, y_point):
44         self.status = status
45         self.x_point = x_point
46         self.y_point = y_point
47 
48     def is_flagged(self):
49         return self.status == FLAGGED
50 
51 
52 game_board2 = [Cell(0, 1, 2), Cell(3, 1, 3)]
53 def get_flagged_cells2():
54     flagged_cells = []
55     for cell in game_board2:
56         if cell.is_flagged():
57             flagged_cells.append(cell)
58     return flagged_cells
59 
60 #print("demo3 ", get_flagged_cells2()[0].status, get_flagged_cells2()[0].x_point, get_flagged_cells2()[0].y_point)

 

2.避免使用引起变量本意误导的命名

1)变量名不要携带变量类型的信息,比如names_list

2)accounts比account_group和bunch_of_accounts会好一些

3)提防两个外形太相似的命名,比如xyyz_controller_for_efficient_handling_of_strings和xyyz_controller_for_efficient_storage_of_strings

4)不要用误导性的变量命名,比如小写的字母l和大写的字母O,因为它们与1和0很像

 

posted @ 2020-04-23 22:55  可口可乐嗨  阅读(223)  评论(0编辑  收藏  举报
levels of contents