Java 命名篇之“成对”命名法一、启示 我们在写代码的时候,经常遇到一些成对命名,这些成对的命名可以帮助我们很好地命名
一、启示
我们在写代码的时候,经常遇到一些成对命名,这些成对的命名可以帮助我们很好地命名。
给一段简单的 Java 代码例子。java.util.Collections#copy
从 dest, src, 可以清楚地知道参数的含义,这样的命名可以称之为好的命名。
public static <T> void copy(List<? super T> dest, List<? extends T> src) {
int srcSize = src.size();
if (srcSize > dest.size())
throw new IndexOutOfBoundsException("Source does not fit in dest");
if (srcSize < COPY_THRESHOLD ||
(src instanceof RandomAccess && dest instanceof RandomAccess)) {
for (int i=0; i<srcSize; i++)
dest.set(i, src.get(i));
} else {
ListIterator<? super T> di=dest.listIterator();
ListIterator<? extends T> si=src.listIterator();
for (int i=0; i<srcSize; i++) {
di.next();
di.set(si.next());
}
}
}
二、成对
code | 案例 | 描述 |
---|---|---|
async / sync | asyncInvoke/syncInoke | 异步/同步 |
source/destination (src、dest) | sourceData/destinationData | 源头/目标 |
start/finish | start/finish | 开始结束 |
preHandle / handle/ afterHandle | preHandle / handle/ afterHandle | 前中后处理器 |
before/after | beforeUpdate/afterUpdate | 表示更新操作前后的事件 |
begin, end | beginTransaction() / endTransaction() | 事务处理的开始和结束。 |
open, close | openFile() / closeFile() | 文件的打开和关闭。 |
start, stop | startService() / stopService() | 服务或进程的启动和停止。 |
enter, exit | enterCriticalSection() / exitCriticalSection() | 进入和退出临界区。 |
lock, unlock | lockResource() / unlockResource() | 对资源加锁和解锁。 |
connect, disconnect | connectToDatabase() / disconnectFromDatabase() | 数据库连接的建立和断开。 |
init, destroy | initComponent() / destroyComponent() | 组件的初始化和销毁。 |
create, delete | createUser() / deleteUser() | 创建和删除用户。 |
add, remove | addElement() / removeElement() | 向集合添加或移除元素。 |
insert, delete | insertRecord() / deleteRecord() | 插入和删除记录。 |
push, pop | pushStack() / popStack() | 堆栈的操作:压入和弹出。 |
enqueue, dequeue | enqueueMessage() / dequeueMessage() | 队列的操作:入队和出队。 |
put, get | putValue() / getValue() | 存储和获取值。 |
set, get | setOption() / getOption() | 设置和获取选项或属性。 |
write, read | writeFile() / readFile() | 写入和读取文件。 |
send, receive | sendMessage() / receiveMessage() | 发送和接收消息。 |
request, response | sendRequest() / handleResponse() | 请求和响应的处理。 |
increase, decrease | increaseVolume() / decreaseVolume() | 增加和减少音量。 |
show, hide | showDialog() / hideDialog() | 显示和隐藏对话框。 |
enable, disable | enableFeature() / disableFeature() | 启用和禁用功能。 |
load, unload | loadModule() / unloadModule() | 加载和卸载模块。 |
attach, detach | attachListener() / detachListener() | 附加和分离监听器。 |
register, unregister | registerService() / unregisterService() | 注册和注销服务。 |
subscribe, unsubscribe | subscribeToTopic() / unsubscribeFromTopic() | 订阅和取消订阅主题。 |
bind, unbind | bindSocket() / unbindSocket() | 绑定和解绑套接字。 |
login, logout | loginUser() / logoutUser() | 用户登录和登出。 |
acquire, release | acquireLock() / releaseLock() | 获取和释放锁。 |
prepare, commit | prepareStatement() / commitChanges() | 准备SQL语句和提交更改。 |
encode, decode | encodeString() / decodeString() | 编码和解码字符串。 |
serialize, deserialize | serializeObject() / deserializeObject() | 序列化和反序列化对象。 |
compress, decompress | compressData() / decompressData() | 压缩和解压缩数据。 |
encrypt, decrypt | encryptMessage() / decryptMessage() | 加密和解密消息。 |
pack, unpack | packItems() / unpackItems() | 打包和解包项目。 |
mount, unmount | mountFileSystem() / unmountFileSystem() | 挂载和卸载文件系统。 |
build, clean | buildProject() / cleanProject() | 构建和清理项目。 |
compile, decompile | compileCode() / decompileCode() | 编译和反编译代码。 |
link, unlink | linkLibrary() / unlinkLibrary() | 链接和解除链接库。 |
fork, join | forkProcess() / joinProcess() | 分叉进程和合并进程。 |
suspend, resume | suspendThread() / resumeThread() | 暂停和恢复线程。 |
pause, play | pauseMedia() / playMedia() | 暂停和播放媒体。 |
forward, backward | forwardPage() / backwardPage() | 向前和向后翻页。 |
next, previous | nextItem() / previousItem() | 下一个和上一个项目。 |
first, last | firstEntry() / lastEntry() | 第一个和最后一个条目。 |
install, uninstall | installPlugin() / uninstallPlugin() | 安装和卸载插件。 |
activate, deactivate | activateUser() / deactivateUser() | 激活和停用用户。 |
sort, unsort | sortArray() / unsortArray() | 排序和取消排序数组。 |
validate, invalidate | validateInput() / invalidateInput() | 验证和无效化输入。 |
enter, leave | enterRegion() / leaveRegion() | 进入和离开区域。 |
increment, decrement | incrementCounter() / decrementCounter() | 增加和减少计数器。 |
min, max | minValue() / maxValue() | 获取最小值和最大值。 |
import, export | importData() / exportData() | 导入和导出数据。 |
三、总结
将“成对”思想移植到命名中,一定会对好的命名有所启示。
转载自:https://juejin.cn/post/7422441242645479476