elifzeng / Computory-Background

some knowledge about computer
5 stars 0 forks source link

Beginning Python #7

Open elifzeng opened 4 years ago

elifzeng commented 4 years ago

Python 基础教程(第3版)学习记录

本来是要看《深入理解Python特性》这本书的,但是我还不知道自己的菜到底是哪种程度的菜 :chicken:,所以先看看这本书。

目前计划的是:懂的略看,不懂的详看,不需要的不看,相应代码见thisrepo/python,那么咱们开始吧!

我的天哪,为发现了我的特长——特别擅长给自己挖坑,巨坑那种 :smiley:

elifzeng commented 3 years ago

充电之《代码整洁之道》

(谁能想到这是我一年前打算看的东西呢? (这说明我这大半年代码能力没有一点长进,太辣鸡了,是我我就哭了 :crying_cat_face: 所有的目的都是为了使代码明确、精确和易于理解

名副其实

而且发现更好的名称就换掉旧的

  1. 变量、函数或类的名称:告诉你它为什么存在,做什么事,应该怎么用。甚至不需要补充注释。

    int daysSinceCreation; int daysSinceModification

  2. 代码的模糊度:上下文在代码中未被明确体现的程度。

    比如 if index == 4,这个值4的意义是什么?return lista,这个返回的列表接下来如何使用? 上述两个语句都没有表示出来,所以应该将其改为更有意义的名称,如maxNum == 4...if index == maxNumreturn catagory

    避免误导

  3. 不和专有名词重叠

    比如 unix, python, etc

  4. 注意后缀

    如果要储存一组账号,但不用列表来储存,那么就不要命名为accountsList,用accountsGroup等可能更好。

  5. 不要用太相似的名称,避免混淆

    比如abcde and abcdf1 and l, o and 0 and O

    做有意义的区分

    两个变量,以a and b or a1 and a2区分完全没有意义,因为体现不出差别。 类似的,getAcount(), getAccounts(), getAccountInfo()也完全没有区分度。

    使用读得出来的名称

    不要用DtaRcrd02之类的读不出来的命名

    使用可搜索的名称

    单字母名称和数字常量,很难在一大篇文字中找出来。长名称胜于短名称,搜得到的名称胜于自造的名称。名称长短最好与其作用域大小相对应。如单字母一般仅用于短方法中的本地变量。

    避免使用编码

    什么是句柄:在程序设计中,句柄(handle)是Windows操作系统用来标识被应用程序所建立或使用的对象的整数。其本质相当于带有引用计数的智能指针。当一个应用程序要引用其他系统(如数据库、操作系统)所管理的内存块或对象时,可以使用句柄。 编程时尽量避免使用句柄。此外,前缀后缀,如m_dsc也尽量避免,因为人们在读代码时会下意识忽略前缀。

    类名

    类名和对象名应该是名词或名词短语,如AddressParser,避免使用动词,如Info, Data之类的。

    方法名

    应当使用动词或动词短语,如save, deletePage。属性访问器、修改器和断言应该根据其值命名,并加上get, set, is前缀。如setProp, getName

    专业名词相关命名

    为了使大多数人看得懂代码,应该尽量使用CS领域的术语。若不能,就尽量用所涉领域的专业名称。

    添加有意义的语境

    名称是不能自我说明的,所以需要用有良好命名的类、函数或名称空间来放置名称,给读者提供语境。如果不能,就加前缀。 比如,在一个大类Adress下,有houseName, street, state, lastName这些变量名,很明显是构成了一个地址。而如果没有创建类Adress时,也可以添加前缀addrHouseName, addrStreet来提供语境(当然,在类下这样创建变量名更清楚)。 但也不要添加没用的语境。只要名称足够清楚,就不要用长名称