likes
comments
collection
share

Java 命名篇之“成对”命名法一、启示 我们在写代码的时候,经常遇到一些成对命名,这些成对的命名可以帮助我们很好地命名

作者站长头像
站长
· 阅读数 42

一、启示

我们在写代码的时候,经常遇到一些成对命名,这些成对的命名可以帮助我们很好地命名。

给一段简单的 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 / syncasyncInvoke/syncInoke异步/同步
source/destination (src、dest)sourceData/destinationData源头/目标
start/finishstart/finish开始结束
preHandle / handle/ afterHandlepreHandle / handle/ afterHandle前中后处理器
before/afterbeforeUpdate/afterUpdate表示更新操作前后的事件
begin, endbeginTransaction() / endTransaction()事务处理的开始和结束。
open, closeopenFile() / closeFile()文件的打开和关闭。
start, stopstartService() / stopService()服务或进程的启动和停止。
enter, exitenterCriticalSection() / exitCriticalSection()进入和退出临界区。
lock, unlocklockResource() / unlockResource()对资源加锁和解锁。
connect, disconnectconnectToDatabase() / disconnectFromDatabase()数据库连接的建立和断开。
init, destroyinitComponent() / destroyComponent()组件的初始化和销毁。
create, deletecreateUser() / deleteUser()创建和删除用户。
add, removeaddElement() / removeElement()向集合添加或移除元素。
insert, deleteinsertRecord() / deleteRecord()插入和删除记录。
push, poppushStack() / popStack()堆栈的操作:压入和弹出。
enqueue, dequeueenqueueMessage() / dequeueMessage()队列的操作:入队和出队。
put, getputValue() / getValue()存储和获取值。
set, getsetOption() / getOption()设置和获取选项或属性。
write, readwriteFile() / readFile()写入和读取文件。
send, receivesendMessage() / receiveMessage()发送和接收消息。
request, responsesendRequest() / handleResponse()请求和响应的处理。
increase, decreaseincreaseVolume() / decreaseVolume()增加和减少音量。
show, hideshowDialog() / hideDialog()显示和隐藏对话框。
enable, disableenableFeature() / disableFeature()启用和禁用功能。
load, unloadloadModule() / unloadModule()加载和卸载模块。
attach, detachattachListener() / detachListener()附加和分离监听器。
register, unregisterregisterService() / unregisterService()注册和注销服务。
subscribe, unsubscribesubscribeToTopic() / unsubscribeFromTopic()订阅和取消订阅主题。
bind, unbindbindSocket() / unbindSocket()绑定和解绑套接字。
login, logoutloginUser() / logoutUser()用户登录和登出。
acquire, releaseacquireLock() / releaseLock()获取和释放锁。
prepare, commitprepareStatement() / commitChanges()准备SQL语句和提交更改。
encode, decodeencodeString() / decodeString()编码和解码字符串。
serialize, deserializeserializeObject() / deserializeObject()序列化和反序列化对象。
compress, decompresscompressData() / decompressData()压缩和解压缩数据。
encrypt, decryptencryptMessage() / decryptMessage()加密和解密消息。
pack, unpackpackItems() / unpackItems()打包和解包项目。
mount, unmountmountFileSystem() / unmountFileSystem()挂载和卸载文件系统。
build, cleanbuildProject() / cleanProject()构建和清理项目。
compile, decompilecompileCode() / decompileCode()编译和反编译代码。
link, unlinklinkLibrary() / unlinkLibrary()链接和解除链接库。
fork, joinforkProcess() / joinProcess()分叉进程和合并进程。
suspend, resumesuspendThread() / resumeThread()暂停和恢复线程。
pause, playpauseMedia() / playMedia()暂停和播放媒体。
forward, backwardforwardPage() / backwardPage()向前和向后翻页。
next, previousnextItem() / previousItem()下一个和上一个项目。
first, lastfirstEntry() / lastEntry()第一个和最后一个条目。
install, uninstallinstallPlugin() / uninstallPlugin()安装和卸载插件。
activate, deactivateactivateUser() / deactivateUser()激活和停用用户。
sort, unsortsortArray() / unsortArray()排序和取消排序数组。
validate, invalidatevalidateInput() / invalidateInput()验证和无效化输入。
enter, leaveenterRegion() / leaveRegion()进入和离开区域。
increment, decrementincrementCounter() / decrementCounter()增加和减少计数器。
min, maxminValue() / maxValue()获取最小值和最大值。
import, exportimportData() / exportData()导入和导出数据。

三、总结

将“成对”思想移植到命名中,一定会对好的命名有所启示。

转载自:https://juejin.cn/post/7422441242645479476
评论
请登录