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

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. 常量命名
    使用全部大写的方式,可以使用下划线.【强制】
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,651评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,468评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,931评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,218评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,234评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,198评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,084评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,926评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,341评论 1 311
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,563评论 2 333
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,731评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,430评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,036评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,676评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,829评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,743评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,629评论 2 354

推荐阅读更多精彩内容

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