有意义的命名
参考书籍:《代码整洁之道》,语言: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很像