编程军规 —— Java 篇
提高代码的可读性,规避容易出现的错误。
0. 共性
- 对象或引用的非空性判断:
- 强制类型转换时;
- 函数返回时;
- 函数的输入参数;
- 任务执行的成功或失败判断;
- 文件打开;网络连接;数据库连接;
- 内存申请;
- 尤其对于 java 语言,使用反射机制时的,类不存在;
- 连接要关闭,资源要释放;(通过编程语言的语法机制)
- Python:with as
- Java:try catch finally
0. 变量
- long 或者 Long 初始赋值时,使用大写的 L,不能用小写的 l;
1. 类
- 类名:
- 抽象类以 Abstract 或 Base 大头;接口以 I 开头;
- 异常类以 Exception 结尾;测试类以 Test 结尾;
- 静态成员:
- 避免通过一个类的对象引用访问此类的静态变量或静态方法,无谓增加编译器解析成本,直接使用类名来访问即可;
2. 集合
- ArrayList 的 subList(fromIndex, toIndex) 的返回值不可强转为 ArrayList,否则会抛出 ClassCastException 异常,
- subList 返回的是 ArrayList 的内部类 SubList,并不是 ArrayList ,而是
ArrayList 的一个视图,对于 SubList 子列表的所有操作最终会反映到原列表上。
- subList 返回的是 ArrayList 的内部类 SubList,并不是 ArrayList ,而是
同样,Arrays.asList()(数组转集合) 的返回对象也是 Arrays 的一个内部类;并没有实现集合的修改方法。Arrays.asList 体现的是适配器模式,只是转换接口,后台的数据仍是数组。
String[] strArr = new String[]{"zhang", "chunhui"};
List list = Arrays.asList(strArr);
list.add("wang"); // 运行时异常;
strArr[0] = "wang"; // list.get(0) ⇒ 也同样修改;
3. 细节
- 多行字符串表示 SQL 语句时,每行 SQL 语句的句前句后都加一个空格;
- 在 DAO 中编写 SQL 语句时,通常将 SQL 语句写在类的静态变量中(private static)中,以使代码变得更为可读;
- 在编写多行 SQL 语句时,上下行最终会组成一行完整的 SQL 语句,如果在上一行的末尾和下一行的开始处均不加空格,将很容易出现错误:
// 将会出现错误的代码
private static String MATCH_COUNYT_SQL = "SELECT count(*) FROM" +
"t_user where user_name = ? and password = ?";
// FROMt_user ⇒
// 良好的代码,前后均保留空格;
private static String MATCH_COUNYT_SQL = " SELECT count(*) FROM " +
" t_user where user_name = ? and password = ? ";
编程军规 —— Java 篇的更多相关文章
- [ 高并发]Java高并发编程系列第二篇--线程同步
高并发,听起来高大上的一个词汇,在身处于互联网潮的社会大趋势下,高并发赋予了更多的传奇色彩.首先,我们可以看到很多招聘中,会提到有高并发项目者优先.高并发,意味着,你的前雇主,有很大的业务层面的需求, ...
- 【Todo】【读书笔记】Java多线程编程指南-设计模式篇
下了这本书<Java多线程编程指南-设计模式篇>, 还有另一本<JAVA多线程设计模式>,据说内容有重复,结合着看.
- 零基础从实践出发学java编程【总结篇】
1.背景 很多人学习java的第一步就是系统的学习java基础语法,有的java基础语法还没学完就崩溃了,确实java基础语法太多太细,而且都是理论,学着让人很懵: 好不容易学完基础语法,又要学框架. ...
- JSON总结(java篇)
JSON总结(java篇一) JSON简介 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于ECMAScript的一个子集. JSON采用完全独立于 ...
- [转]有哪些值得关注的技术博客(Java篇)
有哪些值得关注的技术博客(Java篇) 大部分程序员在自学的道路上不知道走了多少坑,这个视频那个网站搞得自己晕头转向.对我个人来说我平常在学习的过程中喜欢看一些教程式的博客.这些博客的特点: 1. ...
- 【Socket编程】Java通信是这样炼成的
简介 网络无处不在,移动互联时代也早已到来,单机版程序慢慢的已没有生命力,所有的程序都要能够访问网络,比如 QQ 网络聊天程序.迅雷下载程序等,这些程序都要同网络打交道,本次将与各位小伙伴们分享的就是 ...
- 事件驱动模型实例详解(Java篇)
或许每个软件从业者都有从学习控制台应用程序到学习可视化编程的转变过程,控制台应用程序的优点在于可以方便的练习某个语言的语法和开发习惯(如.net和java),而可视化编程的学习又可以非常方便开发出各类 ...
- 《编程导论(Java)·2.1.3改写(override)》
<编程导论(Java)·2.1.3改写(override)>,收集override内容. 方法改写(method overriding)是指对于父类定义的一个实例方法,同意子类提供自己的实 ...
- 为什么函数式编程在Java中很危险?
摘要:函数式编程这个不温不火的语言由来已久.有人说,这一年它会很火,尽管它很难,这也正是你需要学习的理由.那么,为什么函数式编程在Java中很危险呢?也许这个疑问普遍存在于很多程序员的脑中,作者Ell ...
随机推荐
- 使用u盘量产工具修复写保护的u盘
自己的u盘突然提示写保护,而且也没有写保护开关,怎么都写不进文件,试了很多办法都无法去除写保护,最后找了一个u盘量产工具,搞定: 插上u盘后,会检测到u盘,点“开始"后静静等待它完成,u盘又 ...
- 《Java设计模式》之抽象工厂模式
场景问题 举个生活中常见的样例--组装电脑.我们在组装电脑的时候.通常须要选择一系列的配件,比方CPU.硬盘.内存.主板.电源.机箱等. 为讨论使用简单点.仅仅考虑选择CPU和主板的问题. 其实,在选 ...
- 初步安装git使用命令配置电脑中的git关联的账户
原文地址 https://www.jianshu.com/p/39684a3ad4fa 出现问题 当我们初步使用git的时候,会报一些出乎预料的错误,比如:报错:fatal: unable to au ...
- js课程 1-5 js如何测试变量的数据类型
js课程 1-5 js如何测试变量的数据类型 一.总结 一句话总结:用typeof()方法. 1.js如何判断变量的数据类型? 用typeof()方法. 13 v=10; 14 15 if(typeo ...
- 前端js实现打印(导出)excel表格
产品原型: 图片.png 功能需求:点击导出考勤表格按钮,会自动下载成Excel格式 图片.png 图片.png jsp页面代码: <div class="tools"> ...
- js进阶 11-14 jquery如何实现元素的替换和遍历
js进阶 11-14 jquery如何实现元素的替换和遍历 一.总结 一句话总结:替换:replaceAll() 与 replaceWith().遍历:each(). 1.replaceAll() ...
- php中的foreach如何使用?
php中的foreach如何使用? 一.总结 1.foreach (array_expression as $value) 2.foreach (array_expression as $key =& ...
- iOS9.0 生成证书流程一(非推送)
1.首先进入网址 http://developer.apple.com 2.第二登入,点击
- sqlserver中的存储过程 函数 事物 索引及视图
存储过程和函数具体的区别: 核心提示:本质上没区别.只是函数有限制只能返回一个标量,而存储过程可以返回多个.并且函数是可以 ...
- WIN内核线程池函数
线程池 (本章节中样例都是用 VS2010 编译调试的) 线程池编写必须在 Windows Vista 操作系统(以及以上版本号的操作系统)下,且 C++ 编译器版本号至少是 VS2008 线程池的功 ...