[轉]想要成為一名優秀的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.pswp.cn/news/285213.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/285213.shtml
英文地址,請注明出處:http://en.pswp.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…