# 浅谈软件开发中的命名

好的命名不止于遵循规范，还需要深入理解业务、辨析关系并提高抽象能力。

Canonical: https://samanhappy.com/zh/writing/naming-in-software-development
Language: zh-CN
作者: 青扬
最后更新: 2023-10-13

本文于 2023-10-13 首发于微信公众号，此处保留当时的原文。
https://mp.weixin.qq.com/s/y2Yn5odFRXXFw1EoduHqJQ


在日常的研发工作中，命名是一件再熟悉不过的事情，甚至熟悉到无感或“忽略”的程度。

作为程序员，我们每天都在命名，如表名、字段名、类名、方法名、属性名、变量名等等。

为什么要关注命名？

因为代码是用来读的，无论是给别人，还是未来的自己，甚至是以Github Copilot为代表的AI工具。命令良好的代码可以更好地被读懂，更方便修改和扩展，从而提高了软件的可维护性。

什么样的名字是好名字呢？

首先不能太长，长了啰嗦；也不能太短，短了不达意。

好的名字可以精确表示要描述的事物，看到的人可以轻易明白，不需要太多的思考。

好的名字也不应该存在歧义，需要人去猜。

做好命名，其实是一件很难的事。

业界很多编码规范里面都专门提到了命名规范，比如

- 采用驼峰命名法，类名首字母大写，方法名首字母小写

- 使用特定后缀以表示某一类事物，如经典MVC模式中的Controller,Service,Dao

- 不要使用没有意义的临时变量，如i,j,k等

遵循一定的命名规范，确实可以提高代码的可读性，但在我看来，这还远远不够。

在设计表名和字段名时，往往需要基于清晰正确的数据模型或者领域模型。而正确的数据模型，则需要很好的理解和抽象能力。模型是对现实的映射，如果没有对事物和事物间关系的深刻洞察，没有对业务和场景的深入了解，是不可能设计出一个好的模型的。

在了解的基础上，还需要更高层次的抽象、概括、总结、压缩，可以从繁多复杂的现实表面识别和提取出真正的底层规律和第一性原理，这样才有可能得到更合适的命名。

这篇文章虽然主要说的是开发中的命名，但如果扩展到战略、计划、产品设计等其实都是一样的道理。

那么，到底该如何提高命名的水平呢？在我看来，需要关注但不限于以下几点

- 遵循业界的命名规范

- 深刻理解业务知识和领域概念，使用通用语言

- 提高结构化分析的能力，学会区分不同的物体，以及物体间的不同关系

- 提高抽象能力，识别不同物体的相同点，发现事物背后的通用规律

最后总结一下，命名很重要，好的命名很难，提高命名水平是一个长期且艰苦（但是绝对值得）的过程。
