前段时间阿里开源了《阿里巴巴 JAVA 开发手册》,里面详细叙述了有关编程命名、sql规约、工程规约等内容,作为一个初学者,只讨论一下-编程规约-的部分。

这几天又重新回去看了看JavaSE的部分,使用的是毕向东的系列视频,别嫌弃人家是培训机构,这个系列的课程确实讲的很好,而且经典基础的部分改动很少,是不?

一、一般的参考书上对标识符定义的要求以下几个:

阿拉伯数字0-9,不做开头;
字符a-z,大小写皆可;
符号‘_’‘$’可用,其他符号不可用,可做开头;
非关键字;

这几个要求挺好满足的,很容易注意到,也很容易记住,但是这还不够,下面是几条我特别赞同的。

(1)Java里禁止使用那两个符号_ 、作为开头。(所以这里我有些费解)

(2)包名、类名、方法名、常量名、变量名,这几个点很好理解。

包名采用三段式命名,默认全部小写

【强制】包名统一使用小写,点分隔符之间有且仅有一个自然语义的英语单词。包名统一使用单数形式,但是类名如果有复数含义,类名可以使用复数形式。

类名,首字母大写,并且遵循驼峰形式

【强制】类名使用 UpperCamelCase 风格,必须遵从驼峰形式,但以下情形例外: (领域模型的相关命名) DO / BO / DTO / VO 等。

方法名、常量名、变量名(成员,局部),首字母小写,驼峰形式

【强制】方法名、参数名、成员变量、局部变量都统一使用 lowerCamelCase 风格,必须遵从驼峰形式。

有几点不理解的:

1关于不能使用下划线和美元符号作为变量或者方法开头的规则,为什么要这样用呢,记得初学的时候明确写着可以用,而且javascript和python都在大量使用这类命名方式。

2关于数组的命名方法,‘7. 【强制】中括号是数组类型的一部分,数组定义如下: String[] args;反例: 使用 String args[]的方式来定义。’,这两种类型的却别大吗?先留下一个坑,以后学静了再来填上。


这份文档的内容很多,对很多内容进行了限定,初拿到这份文档的时候,感觉真是‘繁文缛节’,后来随着学习的深入,意识到这些内容的价值不仅仅是一本关于命名规范的手册,还是对整个团队协作的大改进。

我们都知道Java是强类型语言,本身就制定了很多规范,正式这些规范造就了Java,现在回想那些动态语言,很多地方让人费解,在此留坑,日后再来填上。

JavaSE二次学习之标识符和编程命名相关的内容的更多相关文章

  1. 孙鑫VC学习笔记:多线程编程

    孙鑫VC学习笔记:多线程编程 SkySeraph Dec 11st 2010  HQU Email:zgzhaobo@gmail.com    QQ:452728574 Latest Modified ...

  2. 201871010126 王亚涛《面向对象程序设计(Java)》第十二周学习总结

      内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.com/nwnu-daizh/p/ ...

  3. 201871020225-牟星源《面向对象程序设计(java)》第十二周学习总结

    201871020225-牟星源<面向对象程序设计(java)>第十二周学习总结 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ ...

  4. 毕业设计 之 二 PHP学习笔记(一)

    毕业设计 之 二 PHP学习笔记(一) 作者:20135216 平台:windows10 软件:XAMPP,DreamWeaver 一.环境搭建 1.XAMPP下载安装 XAMPP是PHP.MySQL ...

  5. (十二) 一起学 Unix 环境高级编程 (APUE) 之 进程间通信(IPC)

    . . . . . 目录 (一) 一起学 Unix 环境高级编程 (APUE) 之 标准IO (二) 一起学 Unix 环境高级编程 (APUE) 之 文件 IO (三) 一起学 Unix 环境高级编 ...

  6. 学习《Python核心编程》做一下知识点提要,方便复习(一)

    学习<Python核心编程>做一下知识点提要,方便复习. 计算机语言的本质是什么? a-z.A-Z.符号.数字等等组合成符合语法的字符串.供编译器.解释器翻译. 字母组合后产生各种变化拿p ...

  7. Python 2.7 学习笔记 面向对象的编程

    python是一种面向对象的语言.本文介绍如何用python进行面向对象的编程. 首先我们说下对象和类,类是一种类型的定义,对象是类的实例. 一.内置对象类型(内置类) 其实我们前面已经大量用到了对象 ...

  8. WCF学习笔记之事务编程

    WCF学习笔记之事务编程 一:WCF事务设置 事务提供一种机制将一个活动涉及的所有操作纳入到一个不可分割的执行单元: WCF通过System.ServiceModel.TransactionFlowA ...

  9. 201521123061 《Java程序设计》第十二周学习总结

    201521123061 <Java程序设计>第十二周学习总结 1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多流与文件相关内容. 2. 书面作业 将Student对 ...

随机推荐

  1. 干货:基于 Git Flow 的 Git 最佳实践(附加解决大家经常碰到的问题)

    突然想写这一篇Git的使用心得,主要有几个原因,其一是自己使用Git也有快3年时间了,其间自己经历过一些坑,也有迷茫的时候,在呆过的大大小小的团队中,其实每个人也都并不是Git专家,很多对于流程以及G ...

  2. Java并发编程(2):线程中断(含代码)

    使用interrupt()中断线程 当一个线程运行时,另一个线程可以调用对应的Thread对象的interrupt()方法来中断它,该方法只是在目标线程中设置一个标志,表示它已经被中断,并立即返回.这 ...

  3. 苹果APP发布

    1 发布方式 苹果发布上架有两种方式,一种是上传到苹果商店,一种是挂在web服务器上扫描下载,下面分别介绍这两种发布方式 1.1 上传AppStore 1. 用公司账号或者个人开发账号生成上架.p12 ...

  4. ES6函数扩展

    前面的话 函数是所有编程语言的重要组成部分,在ES6出现前,JS的函数语法一直没有太大的变化,从而遗留了很多问题和的做法,导致实现一些基本的功能经常要编写很多代码.ES6大力度地更新了函数特性,在ES ...

  5. (转)每天一个linux命令(50):crontab命令

    场景:在学习Linux环境下自动部署项目时候,可以通过crontab命令设定定时任务,实现服务端项目的自动部署! 前一天学习了 at 命令是针对仅运行一次的任务,循环运行的例行性计划任务,linux系 ...

  6. 【chrome】 chrome 开发者工具

    1. 常用控制台工具 console.log  console.info  console.error  console.warn console.assert console.count conso ...

  7. linux任务前后台执行

    Linux任务前后台的切换 Shell支持作用控制,有以下命令实现前后台切换: 1. command& 让进程在后台运行 2. jobs 查看后台运行的进程 3. fg %n 让后台运行的进程 ...

  8. [COGS 0014][网络流24题] 搭配飞行员

    先贴题面 14. [网络流24题] 搭配飞行员 ★★☆   输入文件:flyer.in   输出文件:flyer.out简单对比时间限制:1 s   内存限制:128 MB [问题描述]     飞行 ...

  9. 分享一个PHP文件上传类

    该类用于处理文件上传,可以上传一个文件,也可以上传多个文件. 包括的成员属性有: private $path = "./uploads"; //上传文件保存的路径 private ...

  10. Vivado完成综合_实现_生成比特流后发出提醒声音-原创☺

    之前做技术支持时,有过客户吐槽Vivado运行时间长,又不能在完成工作后发送提醒,这两天又有人提起,所以决定写篇帖子. 大家知道,Vivado的技术文档总提及tcl,不过似乎很不招人待见,很少有人研究 ...