zoukankan      html  css  js  c++  java
  • 代码整洁之道(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很像

  • 相关阅读:
    线程
    i/o流
    编码
    File类
    How to put an object on the request in a servlet
    How to forward from a Java servlet to a JSP
    Window.scrollTo()
    JavaScript code to let users double-click to move back to the top of the page
    How to create zebra stripes in JSP tables
    How to set the default input focus on a field in an HTML web form
  • 原文地址:https://www.cnblogs.com/marton/p/12764447.html
Copyright © 2011-2022 走看看