起名字这事儿,真挺让人头大的

你说是不是,搞软件开发最头疼的不是写代码,而是给东西起名字?我跟你讲,我昨天就卡在一个函数名上了,愣是想了快一个小时,最后起了个doSomething,我自己都看不下去。

其实吧,起名字这事儿看着小,影响可不小。你想啊,别人看你代码,第一眼看到的就是变量名、函数名、类名这些,要是起得不清楚,人家根本看不懂你干啥。我就见过一个同事写的代码,变量全是abtempdata1,看得我脑壳疼,那哪是代码,简直是谜语大会。

后来我们老大说了,命名要见名知意。于是我们开始认真对待这事儿。比如处理用户登录的函数,不能再叫func1了,得叫validateUserLogincheckCredentialsauthenticateUser这种,一听就知道干啥的。还有那个保存数据的,以前叫save,现在都改成saveUserDataToDatabasepersistUserProfilewriteConfigToFile,虽然长了点,但清清楚楚。

类名也一样,不能随便起。比如管理订单的类,就不能叫Manager或者Handler这种万金油名字。得具体点,像OrderProcessorShoppingCartServicePaymentGatewayClient,这样一看就知道它是干啥的,哪个模块用它也一目了然。

接口命名也有讲究。我们之前有个接口叫IService,后来被吐槽得不行,改成了UserServiceNotificationProviderDataExporter,直接说明白了它的职责。说实话,起得好听又好懂的名字,连文档都省了不少事。

还有包名、模块名,也不能马虎。我们项目里现在都是按功能分的,比如authbillinguser-managementreporting-engine,谁要看哪个部分,直接进对应目录就行,效率高多了。

还有包名、模块名,也不能马虎。我们项目里

你别说,起名字这活儿还上瘾。我现在看到个新功能,第一反应不是画流程图,而是先琢磨名字。比如最近要做个定时任务,我想了好久,最后定了几个候选:DailyReportSchedulerCleanupJobRunnerBackupTaskExecutor,一个个念出来还挺有成就感的。

当然啦,也不是每个名字都能一次到位。有时候起完过两天再看,觉得不够准确,就得重构重命名。像之前那个handleRequest,后来发现只处理支付相关的,就改成了processPaymentRequestverifyPaymentDatasendPaymentConfirmation,一下子清晰多了。

说到底,好名字就是代码的说明书。别嫌麻烦,花点时间起个靠谱的名字,后面维护的人会感激你的。毕竟谁都不想面对一堆xyobjmanager这种神秘代号,对吧?

所以啊,下次你写代码前,先别急着敲,坐那儿好好想想——这个名字,够不够明白?够不够准?能不能让三个月后的自己也一眼看懂?要是能,那就对了。