命名的原则
- 可读性:命名应该具有清晰的含义,易于理解和解释,避免使用过于简单或晦涩的名称。
- 一致性:保持命名风格的一致性,遵循团队或项目的命名约定。
- 描述性:命名应该尽可能地描述对象或概念的含义和用途。
- 避免缩写和简写:除非缩写是广泛接受的或约定俗成的,否则应避免过多使用缩写和简写。
- 避免保留字和关键字:不要使用编程语言中的保留字和关键字作为命名,以免引起语法错误。
命名的场景
变量和常量
变量命名
- 小驼峰式命名:变量名以小写字母开头,后续单词首字母大写。
- 例如:
count
,userAge
,orderTotal
.
- 例如:
常量命名
- 大写加下划线:所有字母大写,单词之间用下划线分隔。
- 例如:
MAX_VALUE
,DEFAULT_TIMEOUT
,PI
.
- 例如:
函数和方法
- 小驼峰式命名:函数和方法名以小写字母开头,后续单词首字母大写。
- 例如:
calculateScore()
,getUserInfo()
,processOrder()
.
- 例如:
类和对象
- 大驼峰式命名:类和对象名每个单词首字母大写。
- 例如:
Person
,Customer
,OrderDetail
.
- 例如:
文件和目录
- 小写加下划线:文件和目录名全部小写,单词之间用下划线分隔。
- 例如:
index.html
,my_script.js
,user_data
.
- 例如:
数据库表和列
表命名
- 前缀加下划线:通常以
T_
开头,后续单词用下划线分隔。- 例如:
T_user_info
,T_order_detail
.
- 例如:
列命名
- 小写加下划线:列名全部小写,单词之间用下划线分隔。
- 例如:
user_id
,email_address
,order_date
.
- 例如:
枚举和常量
枚举
- 大驼峰式命名:枚举类型名每个单词首字母大写。
- 例如:
Color
,Status
.
- 例如:
常量
- 大写加下划线:所有字母大写,单词之间用下划线分隔。
- 例如:
PI
,MAX_RETRIES
.
- 例如:
模块和包
- 小写加点分隔:模块和包名全部小写,层级之间用点分隔。
- 例如:
utils
,com.example.myapp
,org.apache.commons
.
- 例如:
错误和异常
- 大驼峰式命名:错误和异常类型名每个单词首字母大写。
- 例如:
FileNotFoundError
,NullReferenceException
,InvalidArgumentException
.
- 例如:
线程和进程
- 小驼峰式命名:线程和进程名以小写字母开头,后续单词首字母大写。
- 例如:
workerThread
,mainProcess
,backgroundTask
.
- 例如:
RESTful API 路径和资源
- 小写加斜杠分隔:路径和资源名全部小写,层级之间用斜杠分隔。
- 例如:
/users
,/orders/123
,/products/search
.
- 例如:
GUI 元素和控件
- 小驼峰式命名:元素和控件名以小写字母开头,后续单词首字母大写。
- 例如:
submitButton
,usernameTextField
,loginForm
.
- 例如:
测试用例和断言
- 小驼峰式命名:测试用例和断言名以小写字母开头,后续单词首字母大写。
- 例如:
testCalculateScore
,assertEqual
,verifyUserLogin
.
- 例如:
配置项和参数
配置项
- 小写加点分隔:配置项名全部小写,层级之间用点分隔。
- 例如:
timeout.seconds
,database.url
.
- 例如:
代码参数
- 小驼峰式命名:参数名以小写字母开头,后续单词首字母大写。
- 例如:
timeoutSeconds
,databaseUrl
.
- 例如:
日志和日志级别
日志级别
- 大写:日志级别名全部大写。
- 例如:
DEBUG
,ERROR
,INFO
.
- 例如:
日志消息
- 小驼峰式命名:日志消息
命名的格式风格
驼峰命名法(Camel Case)
- 首字母小写的驼峰命名(lowerCamelCase):常用于命名变量、方法和函数。例如:
myVariable
,calculateScore()
. - 首字母大写的驼峰命名(UpperCamelCase,也称为帕斯卡命名法):常用于命名类和接口。例如:
Person
,CustomerService
。
下划线命名法(Snake Case)
- 全部小写字母,单词之间用下划线分隔:常用于数据库表名、文件名和URL。例如:
user_table
,sales_report.csv
。
全部大写的下划线命名法(SCREAMING_SNAKE_CASE)
- 所有字母大写,单词之间用下划线分隔:常用于常量和枚举。例如:
MAX_VALUE
,COLOR_RED
。
匈牙利命名法(Hungarian Notation)
- 在变量名前加上一个或多个小写字母前缀,表示变量的类型或其他属性。例如:
strName
,nCount
。
首字母缩写命名法(Initialism)
- 使用首字母缩写来表示多个单词,单词之间没有分隔符。例如:
HTML
,XML
,URL
。
链式命名法(Chaining Case)
- 单词之间使用连字符(减号)分隔。也称为短横线命名法。例如:
user-name
,page-title
。
包路径命名法(Dot Case)
- 使用点号分隔单词,常用于表示包路径或命名空间。例如:
com.example.myapp
,System.IO.File
.
帕斯卡与下划线混合命名法(Pascal Case with Underscores)
- 首字母大写的驼峰命名,单词之间使用下划线分隔。例如:
Create_User
,Calculate_Score
.
网络命名风格(Web Style)
- 通常用于 URL、URI 或 Web 相关的命名,使用连字符(减号)分隔单词。例如:
page-title
,user-profile
.
前缀和后缀命名法(Prefix/Suffix)
- 在命名中添加特定的前缀或后缀以表示含义、类型或作用。例如:
isReady
,hasPermission
,calculateTotalAmount
.
一些常见设计模式及其典型方法名的介绍:
创建型模式
单例模式(Singleton)
getInstance()
: 提供全局访问点,确保只创建一个实例。
工厂方法模式(Factory Method)
createXXX()
: 创建对象的方法,具体对象类型由子类决定。
抽象工厂模式(Abstract Factory)
createXXX()
: 创建一系列相关对象的方法。
Builder 模式
build()
: 构建并返回最终对象。setXXX()
: 设置对象的属性。
原型模式(Prototype)
clone()
: 返回对象的一个副本。
结构型模式
适配器模式(Adapter)
request()
: 客户端调用的方法,适配器将调用转换为适配者的方法。
装饰器模式(Decorator)
decoratedObject()
: 返回被装饰对象。operation()
: 定义一个接口,具体实现由子类提供。
代理模式(Proxy)
subject()
: 返回实际执行操作的对象。request()
: 代理对象的方法,可能包含额外的逻辑。
行为型模式
命令模式(Command)
execute()
: 执行命令的方法。undo()
: 撤销命令的方法。
责任链模式(Chain of Responsibility)
handleRequest()
: 处理请求的方法,可能会转发给下一个处理者。
观察者模式(Observer)
update()
: 观察者接收到通知时调用的方法。subscribe()
: 注册观察者的方法。unsubscribe()
: 注销观察者的方法。
策略模式(Strategy)
algorithm()
: 策略接口中定义的操作。
模板方法模式(Template Method)
templateMethod()
: 定义算法骨架的方法。
访问者模式(Visitor)
visitXXX()
: 对不同类型的元素执行操作的方法。
状态模式(State)
handle()
: 根据当前状态处理请求的方法。
备忘录模式(Memento)
saveMemento()
: 保存当前状态的方法。restoreMemento()
: 恢复状态的方法。
迭代器模式(Iterator)
next()
: 移动到下一个元素。hasNext()
: 检查是否有更多元素。
中介者模式(Mediator)
mediate()
: 中介者协调各个同事对象的方法。