• 程序命名规范


    程序命名规范

    名称易读、可搜索

    可读指的是不要使用一些生僻字,难以发音的单词。

    可搜索是便于利用 IED 的自动补全和搜索功能,能根据我们的命名规范快速定位想要找的类或者方法等。

    可读

    名称读不出来,在讨论的时候就好像是一个沙雕。

    哎,那个「treeNewBeeAxibaKula」类是什么作用?

    听到这样的名字尴尬癌都犯了。

    使用一些生僻字,犹如「王大妈的裹脚布,又长又臭」,没有两年脑血栓写不出这样的垃圾代码。

    可搜索

    IED 很智能,当我们输入 「Hash」的时候,会列举出所有 Hash 相关的类。

    命名的时候最好符合项目命名习惯,列表数据查询大家使用 listXXX,你就不要用 queryXXX,统一命名规范,很重要。

    包命名

    包名统一使用小写点分隔符之间有且仅有一个自然语义的英文单词或者多个单词自然连接到一块(如 springframework,deepspace 不需要使用任何分割)。

    包名的构成可以分为以下几四部分【前缀】 【发起者名】【项目名】【模块名】。

    以下表格授权于「Java 填坑笔记」

    常见的前缀可以分为以下几种:

    前缀名含义
    indi(或onem ) indi.发起者名.项目名.模块名.…… 个体项目,指个人发起,但非自己独自完成的项目,可公开或私有项目,copyright主要属于发起者。
    pers pers.个人名.项目名.模块名.…… 个人项目,指个人发起,独自完成,可分享的项目,copyright主要属于个人
    priv priv.个人名.项目名.模块名.…… 私有项目,指个人发起,独自完成,非公开的私人使用的项目,copyright属于个人。
    team team.团队名.项目名.模块名.…… 团队项目,指由团队发起,并由该团队开发的项目,copyright属于该团队所有
    顶级域名 com.公司名.项目名.模块名.…… 公司项目,copyright由项目发起的公司所有

    类名

    类名使用大驼峰命名形式,应该使用名词或者名词短语,比如:Customer、Account。

    避免使用 Manager、Processor 等动词。

    接口名除了用名词和名词短语以外,还可以使用形容词或形容词短语,如 Cloneable,Callable 等,表示实现该接口的类有某种功能或能力。

    属性约束
    抽象类 Abstract 或者 Base 开头 BaseUserService
    枚举类 Enum 作为后缀 GenderEnum
    工具类 Utils作为后缀 StringUtils
    异常类 Exception结尾 RuntimeException
    接口实现类 接口名+ ImpI 或者 前缀接口名 + 接口名 UserService + UserServiceImpl、IUserService + UserService
    领域模型相关 /DO/DTO/VO/DAO 正例:UserDAO 反例:UserDo, UserDao
    设计模式相关类 Builder,Factory等 当使用到设计模式时,需要使用对应的设计模式作为后缀,如ThreadFactory
    处理特定功能的 Handler,Predicate, Validator 表示处理器,校验器,断言,这些类工厂还有配套的方法名如handle,predicate,validate
    测试类 Test结尾 UserServiceTest, 表示用来测试UserService类的

    方法名

    方法命名一般为动词或动词短语,与参数或参数名共同组成动宾短语,即动词 + 名词。一个好的函数名一般能通过名字直接获知该函数实现什么样的功能。

    布尔返回值的方法

    注:Prefix-前缀,Suffix-后缀,Alone-单独使用

    位置单词意义
    Prefix is 对象是否符合期待的状态 isValid
    Prefix can 对象能否执行所期待的动作 canRemove
    Prefix should 调用方执行某个命令或方法是好还是不好,应不应该,或者说推荐还是不推荐 shouldMigrate
    Prefix has 对象是否持有所期待的数据和属性 hasObservers
    Prefix needs 调用方是否需要执行某个命令或方法 needsMigrate

    按需执行的方法

    位置单词意义
    Suffix IfNeeded 需要的时候执行,不需要的时候什么都不做 drawIfNeeded
    Prefix might 同上 mightCreate
    Prefix try 尝试执行,失败时抛出异常或是返回errorcode tryCreate
    Suffix OrDefault 尝试执行,失败时返回默认值 getOrDefault
    Suffix OrElse 尝试执行、失败时返回实际参数中指定的值 getOrElse
    Prefix force 强制尝试执行。error抛出异常或是返回值 forceCreate, forceStop

    用来检查的方法

    单词意义
    ensure 检查是否为期待的状态,不是则抛出异常或返回error code ensureCapacity
    validate 检查是否为正确的状态,不是则抛出异常或返回error code validateInputs

    异步相关方法

    位置单词意义
    Prefix blocking 线程阻塞方法 blockingGetUser
    Suffix InBackground 执行在后台的线程 doInBackground
    Suffix Async 异步方法 sendAsync
    Suffix Sync 对应已有异步方法的同步方法 sendSync
    Prefix or Alone schedule Job和Task放入队列 schedule, scheduleJob
    Prefix or Alone post 同上 postJob
    Prefix or Alone execute 执行异步方法(注:我一般拿这个做同步方法名) execute, executeTask
    Prefix or Alone start 同上 start, startJob
    Prefix or Alone cancel 停止异步方法 cancel, cancelJob
    Prefix or Alone stop 同上 stop, stopJob

    回调方法

    位置单词意义
    Prefix on 事件发生时执行 onCompleted
    Prefix before 事件发生前执行 beforeUpdate
    Prefix pre 同上 preUpdate
    Prefix will 同上 willUpdate
    Prefix after 事件发生后执行 afterUpdate
    Prefix post 同上 postUpdate
    Prefix did 同上 didUpdate
    Prefix should 确认事件是否可以发生时执行 shouldUpdate

    操作对象生命周期的方法

    单词意义
    initialize 初始化。也可作为延迟初始化使用 initialize
    pause 暂停 onPause ,pause
    stop 停止 onStop,stop
    abandon 销毁的替代 abandon
    destroy 同上 destroy
    dispose 同上 dispose

    4.7 与集合操作相关的方法

    单词意义
    contains 是否持有与指定对象相同的对象 contains
    add 添加 addJob
    append 添加 appendJob
    insert 插入到下标n insertJob
    put 添加与key对应的元素 putJob
    remove 移除元素 removeJob
    enqueue 添加到队列的最末位 enqueueJob
    dequeue 从队列中头部取出并移除 dequeueJob
    push 添加到栈头 pushJob
    pop 从栈头取出并移除 popJob
    peek 从栈头取出但不移除 peekJob
    find 寻找符合条件的某物 findById

    与数据相关的方法

    单词意义
    create 新创建 createAccount
    new 新创建 newAccount
    from 从既有的某物新建,或是从其他的数据新建 fromConfig
    to 转换 toString
    update 更新既有某物 updateAccount
    load 读取 loadAccount
    fetch 远程读取 fetchAccount
    delete 删除 deleteAccount
    remove 删除 removeAccount
    save 保存 saveAccount
    store 保存 storeAccount
    commit 保存 commitChange
    apply 保存或应用 applyChange
    clear 清除数据或是恢复到初始状态 clearAll
    reset 清除数据或是恢复到初始状态 resetAll

    成对出现的动词

    单词意义
    get获取 set 设置
    add 增加 remove 删除
    create 创建 destory 移除
    start 启动 stop 停止
    open 打开 close 关闭
    read 读取 write 写入
    load 载入 save 保存
    create 创建 destroy 销毁
    begin 开始 end 结束
    backup 备份 restore 恢复
    import 导入 export 导出
    split 分割 merge 合并
    inject 注入 extract 提取
    attach 附着 detach 脱离
    bind 绑定 separate 分离
    view 查看 browse 浏览
    edit 编辑 modify 修改
    select 选取 mark 标记
    copy 复制 paste 粘贴
    undo 撤销 redo 重做
    insert 插入 delete 移除
    add 加入 append 添加
    clean 清理 clear 清除
    index 索引 sort 排序
    find 查找 search 搜索
    increase 增加 decrease 减少
    play 播放 pause 暂停
    launch 启动 run 运行
    compile 编译 execute 执行
    debug 调试 trace 跟踪
    observe 观察 listen 监听
    build 构建 publish 发布
    input 输入 output 输出
    encode 编码 decode 解码
    encrypt 加密 decrypt 解密
    compress 压缩 decompress 解压缩
    pack 打包 unpack 解包
    parse 解析 emit 生成
    connect 连接 disconnect 断开
    send 发送 receive 接收
    download 下载 upload 上传
    refresh 刷新 synchronize 同步
    update 更新 revert 复原
    lock 锁定 unlock 解锁
    check out 签出 check in 签入
    submit 提交 commit 交付
    push 推 pull 拉
    expand 展开 collapse 折叠
    begin 起始 end 结束
    start 开始 finish 完成
    enter 进入 exit 退出
    abort 放弃 quit 离开
    obsolete 废弃 depreciate 废旧
    collect 收集 aggregate 聚集

    总结

    命名目的都是为了让代码和工程师进行对话,增强代码的可读性,可维护性。优秀的代码往往能够见名知意。

  • 相关阅读:
    批量修改Linux文件夹下所有文件大小写
    如何使用malloc申请一个二位数组
    CenOS 配置C/C++语言
    C++类定义,.h文件与.cpp文件之间的关系以及条件编译
    Error while building/deploying project...When executing step "qmake"——Qt Creator快速排错
    Hello World!
    HDU1262:寻找素数对
    NOIP1998复赛:2的幂次方表示
    HDU1002 : A + B Problem II
    Open Judge2748:全排列
  • 原文地址:https://www.cnblogs.com/Zingu/p/16080226.html
Copyright © 2020-2023  润新知