Java 开发通用方法和准则

不要在变量和常量出现易混淆字母:int i=1l;

不要让常量变成变量;

三元操作符的值类型务必保持一致;

避免带有变长参数的方法重载:Java 5 引入了变长参数,varags, 用…表示,变长参数必须是最后一个参数,一个方法不能有多个变长参数;

别让null和空值影响到变长方法,主要出现在在变长方法的重载;

少用静态导入:如import static X.X.X.过多的使用可维护性下降

不要再本类中覆盖静态导入的变量和方法,小心编译器的最短路径原则:能在本类中查找到的变量、常量、方法就不会从其他包或父类中查找,确保本类的属性和方法优先。

避免在序列化的类在构造函数中为final常量赋值

易变业务使用脚本语言编写:可以随时发布不用重新部署

基本类型

用偶数判断,不用奇数判断:用i%2==0 不用i%2==1,因为i=-1时会判断成偶数

用整数类型处理货币:先扩大N倍处理运算,展示时除N倍

注意边界:如int n=1000, int input+n<2000,当输入input超过Int最大值后,input+n为负数依然满足条件

不要让四舍五入亏了一方,用RoundingMode类可避免,它可提供Round模式

Java中==是判断2个操作数是不是相等,如果是对象,则判断引用是不是一样

类、对象、方法

在接口中不要存在实现代码;

静态变量一定要先声明在赋值

不要复写静态方法

构造函数尽量简化,尽可能不抛异常,不做复杂算法

避免在构造函数中初始化其他类

使用构造代码块精炼程序:没有任何前缀,直接用{}抱起,编译器会把构造代码块直接插入构造函数的最前端;但遇到this关键字则不插入构造函数。

使用静态内部类提高封装性

让多重继承成为现实:用内部类实现

让工具类不可实例化:除了设置构造函数为private,还抛异常

使用序列化实现对象拷贝

覆写equals必须实现HashCOde方法

推荐覆写tostring方法

字符串

String对象直接赋值,不用new

Java为了避免在一个系统中产生大量String对象,设计了string池。创建机制:创建一个字符串时,先检查池中是否有字面值相等的字符串,有的话则指向该引用;无的话才创建。

Intern方法会检查当前对象在字符串对象池中是否有字面值相等的字符串,有的话则指向该引用;无的话才放在池中。

准确适用String、StringBuffer、StringBuilder

String是不可改变的量,创建后不再修改;

StringBuffer是一个可变字符串,StringBuffer的append与String的“+”的区别的,+之后对应的引用变了,StringBuffer的引用不变值在变。

StringBuilder是线程不安全的, StringBuffer是线程安全的

建议使用UTF8编码

中文字符串排序最好指定Collector排序

Comparator c = Collector.getInstance(Local.CHINA);

Arrays.sort(sre,c)

异常

提倡异常封装:尽量try catch 不抛出

采用异常链传递异常

不要再finally中处理返回值

多线程合并发

不推荐覆写start方法

不用过时的stop方法停止线程

性能和效率

不在循环条件中计算

除非必要,不要克隆对象

调整JVM参数

编写高质量java代码_编写高质量的Java代码相关推荐

  1. 用java写穿越火线代码_编写可测试的 JavaSript 代码

    无论我们使用和Node配合在一起的测试框架,例如Mocha或者Jasmine,还是在像PhantomJS这样的无头浏览器中运行依赖于DOM的测试,和以前相比,我们有更好的方式来对JavaScript进 ...

  2. java插件开发_编写一个IDEA插件之:自动生成Java代码

    我很喜欢IDEA的一键自动生成代码功能,例如自动生成构造方法.字段的Get/Set方法.ToString方法等等,除此之外,也有一些插件提供自动生成代码的功能,例如我们所熟悉的GsonFormat插件 ...

  3. vb.net编写函数应该在哪里_编写代码时清晰至上

    好的代码是清晰的代码,而不是聪明的代码 Photo by David Travis on Unsplash 许多程序员尝试编写干净,智能的代码. 但是,有时候,痴迷于智能可能会使代码库更难以理解,并且 ...

  4. 如何编写无法维护的代码_编写可维护的前端代码

    点击这里获得更好的阅读体验​github.com 以下是本人在团队内部分享的整理和补充,水平有限,如有错误,请不吝赐教. 大家好,我叫王力国,目前是 RPA 前端团队负责人,过去一年我们从零构建了 R ...

  5. 微信开发者平台如何编写代码_编写超级清晰易读的代码的初级开发者指南

    微信开发者平台如何编写代码 Writing code is one thing, but writing clean, readable code is another thing. But what ...

  6. 灰色模型 java代码_灰色模型的简单Java实现

    前几天在以前的遗留代码中发现一个问题,就是我生成的一个数据的走势曲线的预测值(用于灰色时间序列预测)总是和老代码里的不一致,具体来说就是:遗留代码里面的预测值的斜率总是为零,相比之下我生成的就比较合理 ...

  7. 怎样编写测试类测试分支_编写干净的测试–天堂中的麻烦

    怎样编写测试类测试分支 如果我们的代码有明显的错误,我们很有动力对其进行改进. 但是,在某些时候,我们认为我们的代码"足够好"并继续前进. 通常,当我们认为改进现有代码的好处小于所 ...

  8. 怎样编写测试类测试分支_编写干净的测试–从配置开始

    怎样编写测试类测试分支 很难为干净的代码找到一个好的定义,因为我们每个人都有自己的单词clean的定义. 但是,有一个似乎是通用的定义: 简洁的代码易于阅读. 这可能会让您感到有些惊讶,但我认为该定义 ...

  9. 双表查询java代码_什么是JDBC?Java数据库连接性简介

    JDBC(Java数据库连接性)是Java API,用于管理与数据库的连接,发出查询和命令以及处理从数据库获得的结果集.JDBC在1997年作为JDK 1.1的一部分发布,是为Java持久层开发的首批 ...

  10. java象棋人机代码_中国象棋人机对弈Java版源码

    [实例简介] 中国象棋人机对弈Java版源码,包含人工智能实现(含多个难度级别,采用α-β迭代搜索算法) [实例截图] [核心代码] 中国象棋人机对弈Java版源码 ├── boards │   ├─ ...

最新文章

  1. leetcode--笔记——120. 三角形最小路径和
  2. Shell脚本编写与应用
  3. 计算机攻防网站在线对攻,对攻
  4. LPC1768外部中断与GPIO中断
  5. ginkgo php,【行业资讯】PHP 开发框架 ginkgo v0.1.2 发布
  6. Spark性能优化 -- Spark SQL、DataFrame、Dataset
  7. VTK:可视化之CaptionActor2D
  8. android设置时间widget,【Android】时间与日期Widget(DatePicker 与 TimePicker)
  9. android 冰箱 活动,Android活动的使用
  10. js实现一键复制到剪切板上_js实现各种复制到剪贴板的方法
  11. 关于windows窗体应用程序 1117
  12. memcache未授权访问漏洞
  13. Docker下载太慢
  14. 缓冲大小 设置_【设计】小知识点:各种水箱的选型设计(二)缓冲水箱
  15. 笔记本什么都没开,风扇为什么一直转?——CDPUserSvc服务
  16. 【读点论文】ViTGAN: Training GANs with Vision Transformers 将视觉transformer和gan结合起来
  17. MacM1下使用opencv
  18. TabLayout的属性介绍
  19. 大数据分析案例-基于决策树算法构建金融反欺诈分类模型
  20. 基于STM32F030驱动MQ7一氧化碳传感器

热门文章

  1. log4j.xml的实用例子
  2. ScriptManager EnablePageMethods 与 JSON 序列化
  3. Linux FTP文件服务器共享/匿名访问。别名访问。用户访问
  4. docker 基本指令
  5. WebLogic(12C)——windows下安装教程
  6. 嗅探辅助利器-幻影网盾原理
  7. cocos2d-x学习笔记10:动作3:补间动作
  8. linux c 库依赖
  9. mysql控制结构_Mysql 控制结构初识
  10. 宏基电脑安装系统提示acpi错误_电脑常见问题怎么排除 电脑常见问题排除技巧【详解】...