JAVA--养成好的编程习惯
原文地址:http://user.qzone.qq.com/1159340782/2
略微牺牲一些性能,换来更好的可读性和可维护性是好的选择。以下不提倡和提倡的写法仅供参考。
代码中不提倡的写法
|
序号 |
不提倡的写法 |
原因 |
|
1 |
尽量避免随意使用静态变量 |
静态变量和类同步,类不卸载,对象将常驻内存,直到程序终止 |
|
2 |
尽量避免过多过常的创建java对象 |
花费时间去创建对象,回收对象也是一种开销,尽量复用对象,用基本数据类型或数组代替对象。 |
|
3 |
尽量避免使用finalize方法 |
导致GC负担更大,程序效率更差 |
|
4 |
尽量避免变量的重复计算 |
如遍历数组的长度,一次计算即可 |
|
5 |
尽量避免不必要的创建 |
程序逻辑控制对象的创建 |
|
6 |
尽量避免使用二维数组 |
二维数组占用空间比一维数组多得多,大概10倍 |
|
7 |
尽量避免使用split |
Split由于支持正则表达式,效率低,消耗大量资源,建议使用apache下的StringUtils.split频繁split缓存结果 |
|
8 |
尽量避免非常大的内存分配 |
内存连续,浪费资源 |
|
9 |
慎用异常 |
创建异常开销大,好在try-catch开销不大 |
|
10 |
尽量减少IO操作 |
IO消耗系统资源,尽量使用缓存 |
|
11 |
尽量避免不需要的instanceof操作 |
always true |
|
12 |
尽量避免不需要的造型操作 |
-- |
|
13 |
对于boolean避免不必要的等式 |
Flag == true |
代码中提倡的写法
|
序号 |
提倡的写法 |
原因 |
|
1 |
尽量在合适的场合使用单例 |
减轻加载的负担,缩短加载的时间,提高加载的效率 |
|
2 |
尽量使用final修饰符 |
寻找内联所有final方法,性能提高50% |
|
3 |
尽量使用局部变量 |
实例变量和静态变量等都在堆中建立,速度慢,局部变量放在栈中,速度快 |
|
4 |
处理好包装类型和基本类型使用场景 |
包装类型属于对象在堆中创建,基本类型在栈中创建,有对象方面需要处理适用包装类型,其他提倡基本类型 |
|
5 |
慎用synchronized尽量减小synchronized方法 |
实现同步系统开销大,容易死锁。尽量适用方法同步代替代码块同步 |
|
6 |
尽量使用StringBuffer和StringBuilder进行字符串的拼接 |
尽量初始化StringBuffer和StringBuilder的长度,字符数组动态添加字符串 |
|
7 |
尽量用基本数据类型代替对象 |
如String str = “hello” String str = new String(“hello”); 后者还创建了一个字符数组 |
|
8 |
单线程尽量使用HashMap ArrayList |
HashTable Vector等使用了同步机制,降低了性能 |
|
9 |
尽量合理的使用HashMap |
多使用HashMap的构造方法,初始化它的大小,扩容是一件很耗费性能的事情 |
|
10 |
尽量在finally块中释放资源 |
避免资源泄漏 |
|
11 |
尽量使用位运算取代a/b,a*b操作 |
/是一个代价很高的操作 |
|
12 |
尽量早释放无用的对象 |
Obj =null |
|
13 |
合理使用arrayList和linkedList |
一个是线性表(查询),一个是链表(添加和删除), |
|
14 |
尽量使用System.arraycope复制数组 |
比循环复制数组要快得多 |
|
15 |
尽量缓存经常使用的对象 |
HashMap,WeekHashMap或者第三方的工具EhCache OsCache Memcached |
|
16 |
大对象尽量用clone()不用new |
new创建对象成本大 |
|
17 |
尽可能地使用java自身提供的api |
不解释 |
|
18 |
使用快速度的jdbc驱动 |
数据库连接池 |
|
19 |
缓存DataSorce |
为了再次的JNDI调用,可以系统中缓存要使用的DataSorce |
|
20 |
让访问实例内变量的setget方法变成final |
可变成inlined |
|
21 |
charat代替startswith |
-- |
|
22 |
如果只有一个字符的’’代替”” |
-- |
|
23 |
常量字符串,用String代替StringBuffer |
减小运行开销提高性能 |
|
24 |
Stringtokenizer代替indexof substring |
Stringtokenizer分析字符串更容易,效率也会高一些 |
|
25 |
使用三目运算代替if-return else |
-- |
JAVA--养成好的编程习惯的更多相关文章
- 04 学习java养成良好的写作习惯
1, 驼峰命名法 首字母大写 2, 写的时候大小中括号都补全,不忘记分号 不要都放在一行上 3, 缩进对其,tab键 4, 严格要求自己,养成良好的写作风格 5, javadoc可以将文档注释,直接生 ...
- java的编程习惯影响程序性能
在Java程序中,性能问题的大部分原因并不在于Java语言,而是在于程序本身. 养成良好的编程习惯非常重要,能够显著地提升程序性能. 尽量在合适的场合使用单例 使用单例可以减轻加载的负担,缩短加载的时 ...
- 已看1.熟练的使用Java语言进行面向对象程序设计,有良好的编程习惯,熟悉常用的Java API,包括集合框架、多线程(并发编程)、I/O(NIO)、Socket、JDBC、XML、反射等。[泛型]\
1.熟练的使用Java语言进行面向对象程序设计,有良好的编程习惯,熟悉常用的Java API,包括集合框架.多线程(并发编程).I/O(NIO).Socket.JDBC.XML.反射等.[泛型]\1* ...
- python 编程,应该养成哪些好的习惯
python 编程,应该养成哪些好的习惯? https://www.zhihu.com/question/28966220 无缓冲输出 python -u sys.stdout.flush() 性能 ...
- 养成这8个编程习惯,你的Python性能将蹭蹭蹭地往上涨
Python不以性能见长,但掌握一些技巧,也可尽量提高程序性能,避免不必要的资源浪费. 1. 使用局部变量 尽量使用局部变量代替全局变量:便于维护,提高性能并节省内存. 使用局部变量替换模块名字空间中 ...
- 养成良好的C++编程习惯(持续更新)
c++语言的灵活是建立在对编程者个人的编程素质的严格要求基础上的,好的C++编程习惯能避免很多问题. 没有好的编程习惯,极有可能编写一行代码,编译器能报十几个错误,而且 ...
- J2EE开发时的包命名规则,养成良好的开发习惯
代码编写规范目的:能够在编码过程中实现规范化,为以后的程序开发中养成良好的行为习惯.代码编写规范使用范围:J2EE项目开发.包命名规范:目的:包的命名规范应当体现出项目资源良好的划分 servlet类 ...
- 提高万恶的KPI,切忌要避开这六个低效的编程习惯
作者:程序员小跃 Slogan:当你的才华还无法撑起你的野心时,那应该静下心来好好学习 上次的翻译,引起了很大的反响,大家都想知道自己和高级工程师的差距,看了我的文章,是不是都在默默地做着比较呢?如果 ...
- 养成一个SQL好习惯带来一笔大财富
我们做软件开发的,大部分人都离不开跟数据库打交道,特别是erp开发的,跟数据库打交道更是频繁,存储过程动不动就是上千行,如果数据量大,人员 流动大,那么我么还能保证下一段时间系统还能流畅的运行吗?那么 ...
- 增加 Java 有几个好习惯表现
以下是一些参考网络资源中的摘要Java编程在一些地方尽可能做. 1. 尝试使用单个例如在合适的场合 使用单例可以减轻负荷的负担,缩短加载时间.提高装载效率,但并不是所有的地方都适合一个案例.简单的说, ...
随机推荐
- 解决element 分页组件,搜索过后current-page 绑定的数据变了,但是页面当前页码并没有变的问题
前言上一篇写前台解决分页问题的时候没有这个问题,但是在实际项目后台中有遇到过,所以在这里专门说一下,如果参考前台分页出现这种问题了,也可以使用这种方法!bug:vue和element实现的后台分页,当 ...
- python用reduce和map把字符串转为数字的方法
python用reduce和map把字符串转为数字的方法 最近在复习高阶函数的时候,有一道题想了半天解不出来.于是上午搜索资料,看了下别人的解法,发现学习编程,思维真的很重要.下面这篇文章就来给大家介 ...
- SPSS科普 | 统计描述
SPSS科普 | 统计描述 统计描述的目的就是了解数据的基本特征和分布规律,为进一步合理地选择统计方法提供依据.常用的有Frequencies.Descriptives 和Explore过程. 一.F ...
- 06_Spring JDBCTemplate
Spring对不同持久化技术的支持 ORM持久化技术 模板类 JDBC org.springframework.jdbc.core.JdbcTemplate Hibernate3.0 org.spri ...
- java扫描某个包下的所有java类并加载
最近在学习java的反射和注解,实际情景中需要扫描某个包下的所有java类,然后使用类加载器加载类. 基本思路,获得程序的路径扫描src下某个包内的子包和java类,实现也比较简单. 运行环境:win ...
- PKU--2184 Cow Exhibition (01背包)
题目http://poj.org/problem?id=2184 分析:给定N头牛,每头牛都有各自的Si和Fi 从这N头牛选出一定的数目,使得这些牛的 Si和Fi之和TS和TF都有TS>=0 F ...
- sql 递归查询,查出所有子节点
with t as ( select b.* from Base_Department b where ParentId = 'cce4152c-3483-4334-b68d-155da627bca0 ...
- xlwt/xlwt/Style.py excel样式源文件
from __future__ import print_function # -*- coding: windows-1252 -*- from . import Formatting from . ...
- Django项目:CRM(客户关系管理系统)--59--49PerfectCRM实现CRM客户报名流程学生合同表单验证
# sales_views.py # ————————47PerfectCRM实现CRM客户报名流程———————— from django.db import IntegrityError #主动捕 ...
- 深入了解组件- -- Prop
gitHub地址:https://github.com/huangpna/vue_learn/example里面的lesson08 一 Prop的大小写(camelCase vs kebab-case ...