[转]想要成为一名优秀的Java程序员,这份文档必读

 

A、规则(1–2 级)

 

1、在switch 中每个 case 语句都应该包含 break 或者 return 。
2、不要使用空的for 、if 、while 语句。
3、在运算中不要减小数据的精度。
4、switch 语句中的 case 关键字要和后面的常量保持一个空格,switch 语句中不要定义case 之外的无用标签。
5、不要在if 语句中使用等号= 进行赋值操作。
6、静态成员或者方法使用类名访问,不使用句柄访问。
7、方法重载的时候,一定要注意方法名相同,避免类中使用两个非常相似的方法名。
8、不要在ComponentListener.componentResized() 方法中调用 serResize() 方法。
9、不要覆盖父类的静态方法和私有方法。
10、不要覆盖父类的属性。
11、不要使用两级以上的内部类。
12、把内部类定义成私有类。
13、去掉接口中多余的定义(不使用 public, abstract, static, final 等,这是接口中默认的)。
14、不要定义不会被用到的局部变量、类私有属性、类私有方法和方法参数。
15、显式初始化所有的静态属性。
16、不要使用 System.getenv() 方法。
17、不要硬编码 ‘\n’和‘\r’作为换行符号。
18、不要直接使用 java.awt.peer.* 里面的接口。
19、使用 System.arraycopy() ,不使用循环来复制数组。
20、避免不必要的 instanceof 比较运算和类造型运算。
21、不要在 finalize() 方法中删除监听器(Listeners)。
22、在 finalize() 方法中一定要调用 super.finalize() 方法。
23、在 finalize() 方法中的 finally 中调用 super.finalize() 方法。
24、进行字符转换的时候应该尽可能的较少临时变量。
25、使用ObjectStream 的方法后,调用reset() ,释放对象。
26、线程同步中,在循环里面使用条件测试(使用 while(isWait) wait() 代替 if(isWait) wait())。
27、不掉用 Thread 类的 resume(), suspend(), stop() 方法。
28、减小单个方法的复杂度,使用的 if, while, for, switch 语句要在10个以内。
29、在Servlets中,重用JDBC连接的数据源。
30、减少在Sevlets中使用的同步方法。
31、不定义在包中没有被用到的友好属性、方法和类。
32、没有子类的友好类应该定义成 final 。
33、没有被覆盖的友好方法应该定义成 final 。

 

B、建议(3级或以上)

 

34、为 switch 语句提供一个 default 选项。
35、不要在 for 循环体中对计数器的赋值。
36、不要给非公有类定义 public 构建器。
37、不要对浮点数进行比较运算,尤其是不要进行 ==, !=运算,减少 >, < 运算。
38、实现 equals() 方法时,先用 getClass() 或者 instanceof 进行类型比较,通过后才能继续比较。
39、不要重载 main() 方法用作除入口以外的其他用途。
40、方法的参数名不要和类中的方法名相同。
41、除了构建器外,不要使用和类名相同的方法名。
42、不要定义 Error 和 RuntimeException 的子类,可以定义 Exception 的子类。
43、线程中需要实现 run() 方法。
44、使用 equals() 比较两个类的值是否相同。
45、字符串和数字运算结果相连接的时候,应该把数字运算部分用小括号括起来。
46、类中不要使用非私有(公有、保护和友好)的非静态属性。
47、在类中对于没有实现的接口,应该定义成抽象方法,类应该定义成抽象类。(5级)
48、不要显式导入 java.lang.* 包;
49、初始化时不要使用类的非静态属性。
50、显式初始化所有的局部变量。
51、按照方法名把方法排序放置,同名合同类型的方法应该放在一起。
52、不要使用嵌套赋值,即在一个表达式中使用多个 = 。
53、不要在抽象类的构建器中调用抽象方法。
54、重载 equals() 方法的同时,也应该重载 hashCode() 方法。
55、工具类(Utility)不要定义构建器,包括私有构建器。
56、不要在 switch 中使用10个以上的 case 语句。
57、把 main() 方法放在类的最后。
58、声明方法违例的时候不要使用 Exception ,应该使用它的子类。
59、不要直接扔出一个Error ,应该扔出它的子类。
60、在进行比较的时候,总是把常量放在同一边(都放在左边或者都放在右边)。
61、在可能的情况下,总是为类定义一个缺省的构建器。
62、在捕获违例的时候,不使用 Exception, RuntimeException, Throwable,尽可能使用它们的子类。
63、在接口或者工具类中中定义常量。(5级)
64、使用大写‘L’表示 long 常量。(5级)
65、main() 方法必须是 public static void main(String[])。(5级)
66、对返回类型为 boolean 的方法使用 is 开头,其它类型的不能使用。
67、对非boolean类型取值方法(getter)使用 get 开头,其它类型的不能使用。
68、对于设置值的方法(setter)使用 set 开头,其它类型的不能使用。
69、方法需要有同样数量参数的注释 @param。
70、不要在注释中使用不支持的标记,如:@unsupported 。
71、不要使用 Runtime.exec() 方法。
72、不要自定义本地方法(native method)。
73、使用尽量简洁的的运算符号。
74、使用集合时设置初始容量。
75、单个首字符的比较使用 charAt() 而不用 startsWith() 。
76、对于被除数或者被乘数为2的n次方的乘除运算使用移位运算符 >>, << 。
77、一个字符的连接使用‘ ’而不使用 “ ”,如:String a = b + ‘c’。
78、不要在循环体内调用同步方法和使用 try—catch 块。
79、不要使用不必要的布尔值比较,如:if (a.equals(b)), 而不是 if (a.equals(b)==true)。
80、常量字符串使用 String, 非常量字符串使用 StringBuffer 。
81、在循环条件判断的时候不要使用复杂的表达式。
82、对于“if (condition) do1; else do2;”语句使用条件操作符“if (condition)?do1:do2;”。
83、不要在循环体内定义变量。
84、使用StringBuffer的时候设置初始容量。
85、尽可能的使用局部变量进行运算。
86、尽可能少的使用 ‘!’操作符。(5级)
87、尽可能的对接口进行 instanceof 运算。(5级)
88、不要使用 Date[] 而要使用 long[] 替代。
89、不要显式调用 finalize() 。
90、不要使用静态集合,其内存占用增长没有边界。
91、不要重复调用一个方法获取对象,使用局部变量重用对象。
92、线程同步中,使用 notifyAll() 代替 notify()。
93、避免在同步方法中调用另一个同步方法造成的死锁。
94、非同步方法中不能调用 wait() , notify() 方法。
95、使用 wait(), notify() 代替 while(), sleep() 。
96、不要使用同步方法,使用同步块。(5级)
97、把所有的公有方法定义为同步方法。 (5级)
98、实现的 Runnable.run() 方法必须是同步方法。 (5级)
99、一个只有abstract方法、final static 属性的类应该定义成接口。
100、在 clone() 方法中应该而且必须使用 super.clone() 而不是 new 。
101、常量必须定义为 final 。
102、在 for 循环中提供终止条件。
103、在 for, while 循环中使用增量计数。
104、使用 StringTokenizer 代替 indexOf() 和 substring() 。
105、不要在构建器中使用非 final 方法。
106、不要对参数进行赋值操作。(5级)
107、不要通过名字比较两个对象的类,应该使用 getClass() 。
108、安全:尽量不要使用内部类。
109、安全:尽量不要使类可以克隆。
110、安全:尽量不要使接口可以序列化。
111、安全:尽量不要使用友好方法、属性和类。
112、Servlet:不要使用 java.beans.Beans.instantiate() 方法。
113、Servlet:不再使用HttpSession时,应该尽早使用 invalidate() 方法释放 。
114、Servlet:不再使用JDBC资源时,应该尽早使用 close() 方法释放 。
115、Servlet:不要使用Servlet的 SingleThreadModel,会消耗大量资源。
116、国际化:不要使用一个字符进行逻辑操作,使用 Characater。
117、国际化:不要进行字符串连接操作,使用MessageFormat 。
118、国际化:不要使用 Date.toString() ,Time.toString() 方法。
119、国际化:字符和字符串常量应该放在资源文件中。
120、国际化:不要使用数字的 toString() 方法。
121、国际化:不要使用 StringBuffer , StringTokenizer类。
122、国际化:不要使用 String 类的 compareTo(), equals() 方法。
123、复杂度:建议的最大规模:
    继承层次 5层
    类的行数 1000行(包含{})
    类的属性 10个
    类的方法 20个
    类友好方法 10个
    类私有方法 15个
    类保护方法 10个
    类公有方法 10个
    类调用方法 20个
    方法参数 5个
    return语句 1个
    方法行数 30行
    方法代码 20行
    注释比率 30%~50%

 

 


---------------------
作者:程序yang
来源:CSDN
原文:https://blog.csdn.net/weixin_44563573/article/details/102966198
版权声明:本文为作者原创文章,转载请附上博文链接!
内容解析By:CSDN,CNBLOG博客文章一键转载插件

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/285213.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

QC 环境安装条件

1、HP-QC设置 HP Quality Center环境设置是一个复杂的过程&#xff0c;它不是一般的安装&#xff0c;我们一个windows操作系统上开展。 Enterprise安装将会分发&#xff0c;但是&#xff0c;对于学习/评估目的之一&#xff0c;可以在独立的服务器上安装HP-ALM11.5的试用版。还应…

.Net之时间轮算法(终极版)定时任务

TimeWheelDemo一个基于时间轮原理的定时任务对时间轮的理解其实我是有一篇文章(.Net 之时间轮算法(终极版)[1])针对时间轮的理论理解的&#xff0c;但是&#xff0c;我想&#xff0c;为啥我看完时间轮原理后&#xff0c;会采用这样的方式去实现。可能只是一些小技巧不上大雅之堂…

phpstorm config include paths for swoole

配置phpstorm 当你写swoole 类或者函数时会自动补全 https://github.com/swoole/ide-helper.git 克隆下这个工具包 点加&#xff0c;然后指定你下载好的工具包路径&#xff0c;点ok 本文转自 skinglzw 51CTO博客&#xff0c;原文链接&#xff1a;http://blog.51cto.com/sking…

C语言试题150之八进制转换为十进制

📃个人主页:个人主页 🔥系列专栏:C语言试题200例 💬推荐一款模拟面试、刷题神器👉 点击跳转进入网站 ✅作者简介:大家好,我是码莎拉蒂,CSDN博客专家(全站排名Top 50),阿里云博客专家、51CTO博客专家、华为云享专家 1、题目 题目:八进制转换为十进制 2 、温馨…

JavaScript全面学习(中阶)

1.typeof操作符总是返回一个字符串&#xff1a; typeof 123; // number typeof NaN; // number typeof str; // string typeof true; // boolean typeof undefined; // undefined typeof Math.abs; // function typeof null; // object typeof []; // object typeof {}; // obj…

【ArcGIS风暴】ArcGIS创建栅格数据集色彩映射表案例--以GlobeLand30土地覆盖数据为例

矢量数据快速符号化&#xff0c;可以将常用的样式保存到样式符号库&#xff0c;栅格数据快速符号化&#xff0c;需要创建色彩映射表。本文以GlobeLand30土地覆盖数据为例&#xff0c;详解ArcGIS中创建与使用色彩映射表。 文章目录一、 ArcGIS色彩映射表介绍二、土地覆盖数据色彩…

Visual Studio 2019 16.3.10 初体验

Visual Studio 2019 版本 16.3.10 发布时间&#xff1a;2019 年 11 月 20 日 官网地址&#xff1a;https://visualstudio.microsoft.com/zh-hans/vs/ 介绍&#xff1a; https://devblogs.microsoft.com/visualstudio/dot-net-core-support-in-visual-studio-2019-version-16…

【ArcGIS风暴】GlobeLand30全球数据处理教程(批量投影转换、无效值处理、拼接)

本文讲述GlobeLand30全球数据批处理流程&#xff0c;主要步骤包括&#xff1a;批量分幅投影转换、批量分幅无效值处理、批量图幅拼接和成品展示。由于图幅数目和数据量较大&#xff0c;本文是采用Python代码批量实现的&#xff0c;有关Python的基本操作及处理案例&#xff0c;可…

Docker 私有仓库的搭建

Docker在2015年推出了distribution项目&#xff0c;即Docker Registry 2。相比于old registry&#xff0c;Registry 2使用Go实现&#xff0c;在安全性、性能方面均有大幅改进。Registry设计了全新的Rest API&#xff0c;并且在image存储格式等方面不再兼容于old Registry。去年…

请查收.NET MAUI 的最新学习资源

点击上方蓝字关注我们&#xff08;本文阅读时间&#xff1a;3分钟)2022 年 5 月 23 日&#xff0c;.NET MAUI 正式发布。.NET MAUI 为您提供了一流的跨平台 UI 堆栈&#xff0c;面向 Android、iOS、macOS 和 Windows。我们很高兴地宣布&#xff0c;有几种不同的学习 .NET MAUI …

C语言试题151之求 0到7 所能组成的奇数个数。

📃个人主页:个人主页 🔥系列专栏:C语言试题200例 💬推荐一款模拟面试、刷题神器👉 点击跳转进入网站 ✅作者简介:大家好,我是码莎拉蒂,CSDN博客专家(全站排名Top 50),阿里云博客专家、51CTO博客专家、华为云享专家 1、题目 题目:求 0—7 所能组成的奇数个数…

腾讯2016春招之算法编程解析

第一道题&#xff1a;求有删除情况的最长回文子串 题目&#xff1a; 解题思路&#xff1a; 这个题严格意义上来说&#xff0c;删除了字符就谈不上回文串了&#xff0c;既然有删除&#xff0c;那估计考察的不是回文串&#xff0c;而是其他的&#xff0c;但是这个东西又有回文串的…

Windows下Visual studio 2013 编译 Audacity

编译的Audacity版本为2.1.2&#xff0c;由于实在windows下编译&#xff0c;其源代码可以从Github上取得 git clone https://github.com/audacity/audacity。 1. 编译WxWidgets Audacity使用wxWidgets作为GUI的框架&#xff0c;Audacity2.1.2需要wxWidgets 3.0.2&#xff0c;所以…

[转]解决Android studio升级到3.5的一些问题

最近Android studio升级到最新的3.5以后&#xff0c;出现了很多问题&#xff0c;记录一下&#xff1a; 1.NDK Resolution Outcome: Project settings: Gradle model version5.4.1, NDK version is UNKNOWN 这个是因为升级到3.5以后&#xff0c;原来的ndk被删除了&#xff0c;在…

【EPS精品教程】EPS2016三维测图版安装教程(附EPS2016安装包下载地址)

文章目录 一、安装过程二、软件安装包下载EPS地理信息工作站是北京清华山维新技术开发有限公司历经十五年精心研发和打造,为满足“以地理信息服务为中心”的信息化测绘生产需求而推出的测绘生产活动多种业务模块集成化软件系统。主要功能有: (1)测绘与地理信息多业务模块集…

据廖雪峰python3教程----python学习第十三天

在OOP程序设计中&#xff0c;当我们定义一个class的时候&#xff0c;可以从某个现有的class继承&#xff0c;新的class称为子类&#xff08;Subclass&#xff09;&#xff0c;而被继承的class称为基类、父类或超类&#xff08;Base class、Super class&#xff09;。 编写一个名…

《增广贤文》

&#xff08;《增广贤文》&#xff09;&#xff0c;并非吾原创。其中人生之道理&#xff0c;今之看来&#xff0c;虽有偏激之处&#xff0c;未尝不有警醒之用。吾辈取精去糟&#xff0c;察纳雅言即可。———————————————————————————————————…

禁锢自己的因素,原来有这么多

2022年的7月&#xff0c;朋友圈都能看到喜庆的时刻&#xff0c;庆祝香港回归25周年&#xff0c;这确实是一个具有伟大里程碑的意义。同时也是建党101周年&#xff0c;满满的荣誉感&#xff0c;隔着朋友圈都能感受到喜庆。家事国事天下事&#xff0c;事事关心&#xff0c;关心但…

C语言试题152之一个偶数总能表示为两个素数之和

📃个人主页:个人主页 🔥系列专栏:C语言试题200例 💬推荐一款模拟面试、刷题神器👉 点击跳转进入网站 ✅作者简介:大家好,我是码莎拉蒂,CSDN博客专家(全站排名Top 50),阿里云博客专家、51CTO博客专家、华为云享专家 1、题目 题目:一个偶数总能表示为两个素数…

[转]Xshell连接win10 Linux子系统

配置SSH服务&#xff1a; sudo apt-get remove --purge openssh-server ## 先删ssh sudo apt-get install openssh-server ## 在安装ssh sudo rm /etc/ssh/ssh_config ## 删配置文件&#xff0c;让ssh服务自己想办法链接 sudo service ssh --full…