Loading... >> 常见的命名规则是:类名是一个名词,表示一个对象,而方法名则是一个**动词**,或者是**动宾短语,表示一个动作。eg. 动词+名词,不要是名词+动词** >> > > # 一、命名多长最合适 > > 在足够表达其含义的情况下,命名当然是越短越好。 > > 这样一方面能让命名短一些,另一方面又不影响阅读理解,比如,sec 表示 second、str 表示 string、num 表示 number、doc 表示 document。 > > 对于作用域比较小的变量,我们可以使用相对短的命名,比如一些函数内的临时变量。 > > 对于类名这种作用域比较大的,我更推荐用长的命名方式。 > > # 二、违反语法规则的命名 > > ```cpp > public: > void completedTranslate(const List<ChapterId> chapterIds) { > List<Chapter> chapters = repository.findByChapterIdIn(chapterIds); > chapters.forEach(Chapter::completedTranslate); > repository.saveAll(chapters); > } > ``` > 初看之下,这段代码写得还不错,它要做的是将一些章节的信息标记为翻译完成。似乎函数名也能反映这个意思,但仔细一看你就会发现问题。作者想表达的是“完成翻译”,因为是已经翻译完了,所以,他用了完成时的 completed,而翻译是 translate。这个函数名就成了 completedTranslate。 > > **但是上面这个并不是动宾短语**: > > completedTranslate 并不是一个有效的动宾结构。如果把这个名字改成动宾结构,只要把“完成”译为 complete,“翻译”用成它的名词形式 translation 就可以了。所以,这个函数名可以改成 completeTranslation: > > ```cpp > public: > void completeTranslation(const List<ChapterId> chapterIds) { > List<Chapter> chapters = repository.findByChapterIdIn(chapterIds); > chapters.forEach(Chapter::completeTranslation); > repository.saveAll(chapters); > } > ``` > 再比如: > > 一个函数名是 retranslation,其表达的意图是重新翻译,但作为函数名,它应该是一个动词,所以,正确的命名应该是 **retranslate**。 > > # 三、不准确的英语词汇 > > ```cpp > public: > enum ChapterAuditStatus { > PENDING, > APPROVED, > REJECTED; > } > ``` > 如果你用审核作为关键字去[字典网站](http://dict.youdao.com/)上搜索,确实会得到 audit 这个词。 > > ```cpp > public: > enum ChapterReviewStatus { > PENDING, > APPROVED, > REJECTED; > } > ``` > 我把 audit 和 review 同时放到了搜索引擎里查了一下。原来,audit 会有更官方的味道,更合适的翻译应该是审计,而 review 则有更多核查的意思,二者相比,review 更适合这里的场景。于是,章节的审核状态也统一使用了 review: > > 这种情况的解决办法:; > > **最好的解决方案还是建立起一个`业务词汇表`,千万不要臆想**。一般情况下,我们都可以去和业务方谈,共同确定一个词汇表,包含业务术语的中英文表达。这样在写代码的时候,你就可以参考这个词汇表给变量和函数命名。 > > 这个词汇表: 一方面,词汇表给出的都是业务术语,同时也给出了在特定业务场景下的含义;另一方面,它也给出了相应的英文,省得你费劲心思去思考。当你遇到了一个词汇表中没有的术语怎么办呢?那就需要找出这个术语相应的解释,然后,补充到术语表里。 > >  > > # 四、英语单词拼写错误 > > 对今天的程序员来说,工具已经很进步了,像 `IntelliJ IDEA 这样的 IDE 甚至可以给你提示代码里有拼写错误(typo)`,不少支持插件的工具也都有自己的拼写检查插件,比如Visual Studio Code的[\*\*Code Spell Checker](https://marketplace.visualstudio.com/items?itemName=streetsidesoftware.code-spell-checker)插件\*\* > > # 五、其他简单的坏味道 > > 使用拼音进行命名; > > 使用不恰当的单词简写(比如,多个单词的首字母,或者写单词其中的一部分)。 > > # 六、命名要可读、可搜索 > >> 我这里所说的“可读”,指的是不要用一些特别生僻、难发音的英文单词来命名。 >> > > 在命名的时候,最好能符合整个项目的命名习惯。大家都用“selectXXX”表示查询,你就不要用“queryXXX”;大家都用“insertXXX”表示插入一条数据,你就要不用“addXXX”,统一规约是很重要的,能减少很多不必要的麻烦。 最后修改:2025 年 07 月 01 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 如果觉得我的文章对你有用,请随意赞赏