1. 前言

你写代码时最头疼的是什么,算法?逻辑?还是框架技术?我个人感觉最头疼的一直都是变量命名,今天来聊聊这个话题。欢迎加入微信圈子程序员交流圈 交流编程经验,欢迎投稿。

2. 命名是一门艺术

在中国传统文化中,起名(命名)是十分严肃和庄重的事情。有辈分、生辰八字、以及其它的一些纪念意义之说。当别人告诉你他叫 “王伯堂”时,你会从中知道他可能是家中的老大,如果他告诉你他还有个弟弟,你可能会想到他叫“王仲堂”。

编程中的命名也应当如此,良好的命名可以提高代码的可读性,可理解性,让阅读者直接有代入感。所以在我看来命名更像一门艺术。

3. 一些实践中的经验

我也时常为之而头疼,但是我尽量做好这件事。接下来来讲讲我的一些命名经验。我们命名一定要把其功用描述出来,否则你遇到 abbc01sb 这些变量估计要疯掉,缩写如果是公认约定俗成的也是可以的。言之有物 是最低的要求。

3.1 变量的命名

变量常

用来标识一些属性,比如我们用一个变量height来表示身高。但是这足够清晰地表达这个变量的含义吗?如果是人的身高,或许你加上一个 human 更加明确,即 humanHeight。可总结为 谁的(什么样的)具体属性。对于一些具有集合属性的变量我们命名中体现其集合特性也是极好的,比如 studentList 或者 students。临时变量我通常会包含 temp 后缀。其它比如还有一些约定俗成的命名,比如 i 通常用来代指索引(index)。总的一般来说变量命名以名词和其修饰词组合为主。

约定俗成也具有语言的局限性,eJava 中为异常(exception)而在 JavaScript 通常为事件(event)。

3.2 方法中的命名

对于方法的命名同样需要我们能从名字上知道该方法的具体作用(do what)。是否应该表明方法具体的作用取决于你的具体逻辑,如果就是获取人的身高我们可以命名为 getHumanHeight, 如果不确定只获取人的身高我们可以泛化地命名为 getHeight 。方法的入参也应该采取同样的策略。

想出好的命名的确很难,但是有难的道理,因为好的命名需要只用一两个单词出表达你的根本意思。通常,如果你无法想出一个合适的名字,意味着你的设计可能有问题。你的一个方法里是不是实现了太多的功能?或者你的类的封装,凝聚性不够强?—— Stackoverflow 创始人 Jeff Atwood

3.3 接口的命名

我认为 接口 通常是某种特定的功能的抽象,因此通常接口以 able 结尾, Java 中的 CloneableRunnable等等。但是也不一定,如果接口表达的是同一类事物的共性,也可以这一类的抽象概括命名,比较知名的就是 Servlet 规范中的Filter。还有一些命名方式体现了其使用了某个设计模式,比如 工厂模式使用了 Factory、模版方法模式通常会以 Template 结尾。总之 只要你的命名体现出了该接口的能力我觉得都是合适的

有些规范认为接口应该以大写字母 I 开头,我并不认为这是一个好的选择,而且它不美观。

3.4 类的命名

如果说 接口 是功能的泛化,那么其实现类应该是功能的具体化。类的命名相对会具体一些,而且不一定必须要体现出接口的功能。但是对于基础类往往以 Base 开头,默认使用的实现类以 Default开头,如果是抽象类请以 Abstract 开头。3.3章节  提到的设计模式也通常是一个类命名的选择。总的来说类名称也是以名词和其修饰词组合为主。

4. 如何提高命名水平

首先需要有一些强迫症,否则自己会不在意这个事情。然后就是多阅读知名框架的源码,从大佬的代码中获取灵感。提高英语水平不但提高你命名能力而且对你上限的提升也是非常重要的。

不积硅步,无以至千里;不积小流,无以成江海。

5. 总结

简单写了一些我对编程中命名的一些看法和经验。完全一家之言!其实并没有什么银弹,一切都是积累。不知道你对编程命名有什么好的经验,不妨通过留言分享出来。

更多精彩文章可通过公众号分类菜单获取

令人头疼的编程命名问题你如何面对?相关推荐

  1. 编程命名中的7+1个提示

    编程命名中的7+1个提示 前几天Neo写过<编程中的命名设计那点事>,这里也有另外一篇和程序命名的文章,可以从另一个角度看看. 1.- 变量应该是尽可能的望文知意.千万不要使用教材中的命名 ...

  2. 少儿编程150讲轻松学Scratch(六)-少儿编程命名规则

    前言 少儿编程命名也是很重要的哦,小朋友们代码里面的命名有没有做好呢?有的宝宝可能要会有疑问,老师老师,我给里面的东西怎么命名又不影响程序功能,为什么起个名字也要在意呢? 无论是代码前期搭建的工作,还 ...

  3. 编程命名很麻烦,自己造了个编程命名助手Code Name

    编程时命名是个问题,一是英文实在一般,不得不经常查词典.网上虽然有网页版的命名,但是速度很慢,而且效果不咋地.自己动手写了一个编程命名助手.输入中文即可得出命名. 只需要把几个汉字词汇用空格分割开,然 ...

  4. 三种编程命名规则:驼峰命名法,帕斯卡命名法,匈牙利命名法

    文章目录 驼峰命令法(Camel) 匈牙利命名法(Hungarian) 帕斯卡(Pascal)命名法 命名的基本原则 变量名的命名规则 函数的命名规范 函数参数命名规范 三种流行的命名法则 目前,业界 ...

  5. 常见编程命名方法,看看你属于哪一种?

    常见编程命名方法 本文章参考以下文章: https://zhuanlan.zhihu.com/p/351189605 https://baike.baidu.com/item/%E5%8C%88%E7 ...

  6. mfc编程淘汰了吗_四种基本的编程命名规范(匈牙利命名法、驼峰式命名法、帕斯卡命名法、下划线命名法)...

    匈牙利命名法 匈牙利命名法是早期的规范,由微软的一个匈牙利人发明的,是 IDE 还十分智障的年代的产物.那个年代,当代码量很多的时候,想要确定一个变量的类型是很麻烦的,不像现在 IDE 都会给提示,所 ...

  7. 编程命名规范—四种命名方法

    目前,编程的命名法则共有四种:驼峰命名法.匈牙利命名法.帕斯卡命名法和下划线命名法,其中前三种是较为流行的命名法. 驼峰命名法: 驼峰命名法分为两种:小驼峰式命名法和大驼峰命名法 小驼峰命名法(Cam ...

  8. 程序员编程命名指导手册

    简洁清爽的代码风格应该是大多数工程师所期待的.在工作中笔者常常因为起名字而纠结,夸张点可以说是编程5分钟,命名两小时!究竟为什么命名成为了工作中的拦路虎. 每个公司都有不同的标准,目的是为了保持统一, ...

  9. 编程命名规则:驼峰命名法和匈牙利命名法

    1.驼峰命名法(Camel-Case)       驼峰命名法(Camel-Case)是电脑程序编写时的一套命名规则(惯例). 程序员们为了自己的代码能更容易的在同行之间交流,所以才取统一的可读性比较 ...

最新文章

  1. 3G网络关闭,4G还会远吗?
  2. Flex前端与Java服务端交互,反射机制挑大旗
  3. 输入 n 个整数,输出其中最小的 k 个
  4. [网站搭建] 阿里云虚拟主机搭建及FTP文件上传
  5. STM32F10x 使用SysTick的延时函数
  6. 编写的windows程序,崩溃时产生crash dump文件的办法
  7. 知识管理夏季论坛,免费,欢迎你来!
  8. 基于语音识别技术的声控鼠标光标程序设计
  9. php中的加密解密模块-mcrypt
  10. [复习]Python基础回顾
  11. python replace_Python replace()方法
  12. 20210610 线程数不断飙升问题定位
  13. STM8S系列基于STVD标准库外设库开发,PWM输出实现LED呼吸灯效果
  14. 设置linux睡眠时间,Linux 睡眠时间函数如何使用?延迟指定时间sleep命令了解一下...
  15. 1、JavaScript入门
  16. 简单图像滤镜功能的Java实现
  17. The e200z4 MMU 学习笔记
  18. spring boot练习--利用websocket实现QQ聊天室
  19. EngineerCMS开发ONLYOFFICE文档协作的权限管理
  20. 海康威视USB相机踩坑指南

热门文章

  1. 什么是http请求和http响应?
  2. nexus 3.x搭建私库引用私库
  3. Azkaban初认识
  4. modified content
  5. #1489 : Legendary Items
  6. 软件不兼容android5.1.1,Android 解决OPPO 5.1 浮窗权限不兼容问题
  7. python数据类型哪些是无序的_Python自学知识-Python中的数据类型有哪些?
  8. 【星戈瑞解析】荧光标记多肽的优缺点-穿膜肽/靶向肽/肽链
  9. 吉林大学超星MOOC学习通高级语言程序设计 C++ 实验02 分支与循环程序设计(2021级)(3)
  10. html多个div纵向排列,多个div横向排列