下载看水印
使用正确的名称来描述你所定义的内容非常重要!
有人说:”思考名称的时间太浪费了,与其花时间想名称,不如直接开始快速编码。“
我想说的是,选取一个好的名称可能需要一定的时间,但是这样绝对可以节省你之后维护和其他人阅读的时间成本,作为开发者,要有长远的目光,不能只顾当前,需要综合长远发展考虑。
千万莫要只看眼前发展,这样应了这一句话: 井蛙不可以语于海者,拘于虚也;夏虫不可以语于冰者,笃于时也;曲士不可以语于道者,束于教也。——《庄子.秋水》
一旦发现了更好的名称,就应该换掉旧的名称,如果某一天,你的同事或者其他人来询问你某个属性或者函数等命名是什么意思,那么你就应该思考应该怎样换一个更加容易看懂并且贴合业务功能的名称了。
一个好的命名往往比注释更重要,我们不能直接依赖注释,注释主要是对复杂实现和无法简短描述的功能的说明补充,规范的doc注释同时也是为了生成对应语言的doc而考虑。
一个好的函数、变量或者类名称它应该能够告诉你它为什么存在,它做什么事情,如何使用。
如果名称需要使用注释来解释和补充说明,那它就不是名副其实的,除非过于复杂无法简单描述。
比如,当你想要描述一个简单的从数据库直接拿到数据的函数,你可以使用getXXXByDB,当然,你也可以有一套自己或者公司的命名规范,但是一切都是为了让命名更加清晰。
如果上述功能涉及到了复杂的查找操作,不妨将名称改为findXXXByDB,你也可以选择将中间的by改为其他词汇,如findXXXInDB。
如果你只是getXXX,或许这并不详细,如果代码量较少并且清晰的话,自然没问题,如果场景复杂,你需要从很多不同的数据库中查找相同概念的数据,那么这个名称就需要加上你的操作的具体指向,如getNameInCache、getNameInDB、findNameInCookieBasisUID。
当然,如果名称过长也不太好,尽可能思考如何简短并有效的描述,同时结合上下文(比如函数结合类中其他逻辑和属性)来尽可能减少不必要的场景描述词。
比如你已经在UserEntity类中了,那么属性命名只需要type name就可以,类名已经可以说明场景了,如:long id在UserEntity中我们自然知晓他是属于User的id。
但是,如果你说,其他开发者英语不好,那么就有些为难了,因为中文编程至少现在还不够普及与成熟,更别提大范围的企业级应用了,所以作为开发者,我们还是需要学习学习自己有需要的语言,比如英语。
还有!尽可能的避免魔法值或者魔法状态,将魔法值尽可能的内敛,向外抛出更加语义的命名,比如if(xxx == 1)改为if(xxx.isXXX),事实上,你可以尽可能避免使用==来作为逻辑判断语法中的条件,而是选择将它的判断内敛为一个直接的具有语义的方法,这样可能可读性会增强。
如果你不知道魔法值是什么,我相信你聪明的大脑一定可以获取到答案,比如?浏览器!
领取专属 10元无门槛券
私享最新 技术干货