如何优雅的为变量和函数命名

1. 总体原则:

  • 1. 命名和用途一致
  • 2. 能够望文生义
  • 3. 同一模块命名风格统一

2. 软技能

    1. 有意义的命名
      a. 变量名能够精准的反映他的含义和内容(变量名,通常是名词 或 名词短语)。
      b.方法名能够准确的表达该方法的行为(方法名,通常是动词 或 动宾结构
      如:insert、append比add更能精准的表达含义; 尽可能使用email代替emailAddress,因为后者并未提供比前者更多的信息
      c. 方法参数名能够自解释(即没有文档的情况下,能够自解释)
      d. 避免无意义的命名
    1. 对变量采用具体含义的单词命名。
      即不采用过于抽象、广泛的单词命名。如:get()有些抽象,不够具体。
# 一个好的例子:
def get_book_price()  # 简单的返回数据
def fetch_book_list()  # 从远程获取数据
def load_book_context() # 从其他地方加载数据
  • 3.易读性
    • 可读性强、易懂,尽量不要用缩写或简写单词。除非公认的缩写单词。
    • 名称过长或过短,易读性都很差。
    1. 不同代码段采用不同命名长度
    • 通常循环计数器采用一个词命名;
    • 循环判断变量采用一个词命名;
    • 方法采用1-2个单词命名;
    • 类采用2-3个单词命名;
    • 全局变量采用3-4个词命名;
    1. 一致的命名风格
      a. 符合语言本身的命名规范要求
      b. 和当前模块的命名风格保持一致,即命名统一
      c. 符合公司的编码规范要求
    1. 好的代码几乎不需要注释
      这是优雅代码、可读性强代码的终极追求目标。(注释越多意味着代码可读性越差)

3. 硬技能

  • 一些约定:

  1. 命名尽量使用全拼单词。常用缩写(如:xml、id),约定俗称缩写除外,如:
名称 缩写
function fn
text txt
object obj
context cnt
number num
  1. 下划线的用法
    a. 前导下划线,表示私有。 如: private_func
    b. 后缀下划线,避免关键字冲突。如: id

    c. 两个前导下划线,避免继承时类属性重名冲突。如: __class_var
    d. 两个前导和后缀下划线,特殊用途的对象或属性。 仅使用,不创造。
  • 规则:

  1. 模块名&包名
    尽量短小,全部使用小写,模块命名允许使用下划线,使用名词;【强制】
#好的命名
import decoder
import html_parser

#不好的命名
import Decoder

2.类名
a. 采用名词,驼峰命名法,首字母大写,多个词组合时每个词的首字母大写;【强制】

b.名称中有缩写名词时缩写名全大写。如HTTPServerError优于HttpServerError

c. 异常类名建议使用CapWords+Error后缀的方式;【强制】

d. 私有类,用下划线开头

# 好的命名:
class WSGIInterfaceError():
    pass

class AnimalFarm():
    pass

class _PrivateFarm():
    pass

# 不好的命名:
class WsgiInterfaceError():
    pass

class kill_apple(killfood):
    pass
  1. 函数名
    a. 函数命名采用动宾结构,各个词中间采用下划线隔开,不使用少于三个字符的函数名字;【强制】
    b.私有函数,下划线开头
#好的命名:
def create_dvs():
    pass
def get_dvs_by(id):
    pass
def _filter_vr_by(filters):
    pass

# 不好的命名:
def get_bvs_id_from_dvs_id(dvs_id):    # 好的命名 def get_bvs_id_by(dvs_id)
    pass
  1. 变量名
    a. 使用全小写加下划线,不使用单个字符或缩写字符的变量名;【强制】
    b. 禁止使用全局变量,采用类加静态变量的方式实现;【强制】
    c. 变量名字不能隐藏内部名字(内部变量优先于外部变量);【强制】
    d. 有文档辅助的接口,比如sdk,命名应当短小精练,不能带类型,在业务流程代码,缺少文档的命名,比如局部变量,文件全局变量,应该有类型标识;【建议】
    e. 若与关键字名字冲突,后缀一下划线,如:id_。[建议]
    f.尽量不使用缩略等其他方式。【建议】
  1. 常量命名
    使用全部大写的方式,可以使用下划线.【强制】
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1、引言 数据库设计过程中表、字段等的命名规范也算是设计规范的一部分,不过设计规范更多的是为了确保数据库设计的合理...
    虾米咬小米阅读 3,194评论 0 0
  • 1、引言 数据库设计过程中表、字段等的命名规范也算是设计规范的一部分,不过设计规范更多的是为了确保数据库设计的合理...
    SnowflakeCloud阅读 41,087评论 0 48
  • 分段式的 1.1 基本命名原则 以下基本原则适用于所有数据库对象命名,如无特别说明则为强制规范。Ø规范:遵循行业规...
    elileo阅读 1,638评论 0 2
  • 转自:https://mp.weixin.qq.com/s/2GnWvmN3BkuqLVpmc_SDTg 简洁清爽...
    西三旗靓仔阅读 336评论 0 1
  • python 中变量的命名规范 模块名: 小写字母,单词之间用_分割 ad_stats.py 包名: 和模块名一样...
    步_尘阅读 2,528评论 0 0