java程式碼編碼規範
規範需要平時編碼過程中註意,是一個慢慢養成的好習慣
1.基本原則
強制性原則:
1.字串的拼裝操作,必須使用StringBuilder;
2.的用法
try{ }catch{Exception e e.printStackTrace(); }finally{ }//在最外层的Action中可以使用,其它地方一律禁止使用;
try{ //程序代码 }catch(Exception e){ //为空,什么都不写 }//在任何场景中都禁止使用
try{ }catch{Exception e throw new runtimeException(e);//最优先采用的写法 }finally{ }
1.對於捕獲後,不知道幹什麼事情或也不知道怎樣處理的情況,就不要捕獲異常,留給外出層去捕獲處理;
2.返回類型為集合的,在方法聲明中必須使用泛型,必須在javadoc中註明什麼情況下傳回null,在什麼情況下傳回空集合。
3.對於方法、變數宣告範圍要採用以下優先權:private、protected、public,對於變數要採用以下的優先權:局部變數、實例變數、類別變數,如果必須採用實例變數或類別變數的情況下,要確保線程安全性,如有可能盡量採用ThreadLocal保存實例變數或類別變數;
4.如果不是必須,不要在循環中去定義變數或new 物件;盡量在需要的最後一刻才去new 物件;
5.如果不是必須,不要在循環中去用try…catch;
6.類別中對於比較複雜的邏輯要採用行註釋的方式進行註釋,java程式碼中絕對不允許採用塊註釋(/**/ )進行註釋;
7.Java類別的名稱第一個子母必須大寫,有多個單字組成的,每個單字的首字母大寫
8.jsp的檔案名稱必須全部小寫;
9.Spring的bean設定檔名稱必須小寫,格式為xxx.bean.xml,xxx.bean.xml設定檔中的
11.日誌的處理;
if (log.isDebugEnabled()) ex.printStackTrace(); else log.error("从数据库删除: [" + entity.getClass().getName() + "] 实例失败", daex); throw new PersistenceException("从数据库删除: [" + entity.getClass().getName()+ "] 实例失败", daex);
12.代码中严禁使用System.out.println()进行调试输出,如果要使用调试信息,必须使用log.debug()。对于必要的信息使用log.info()进行输出;
13.类中不要出现无用import,可以采用IDE工具进行优化,类提交前进行代码的格式化;
14.有业务逻辑处理的类必须写junit单元测试类;
15.国际化的支持:ftl模板中不允许出现中文字符,要全部放到相应的properties文件中,properties文件要放到和Action类同样的目录中;ftl的编码要全部采用UTF-8的格式;properties文件的命名:中文:Action名称+“_zh”+“_CN”.properties,英文:Action名称+“_en”+“_US”.properties
16.一个程序文件最好不要超过2000行
17.尽可能缩小对象的作用域,这样对象的可见范围和生存期也都会尽可能地小,尽所有可能优先采用局部变量,实在没有办法用全局变量的,优先采用ThreadLocal来处理。
18.一个方法所完成的功能要单一,不同的功能封装为不同的方法.
19.尽可能的处理异常或转换异常,不要一味的包装异常
20.如果对象在某个特定范围内必须被清理(而不是作为垃圾被回收),请使用带有finally子句的try块,在finally子句中进行清理。
21.对于把一些逻辑相关的类组织在一起,可以考虑把一个类的定义放在另一个类的定义中,这种情况推荐使用内部类(比如界面层中的事件响应等)。内部类拥有所有外围类所有成员的访问权。
22.对成员变量的访问最好通过getter/setter方法,这样能够保证访问的合法性,以及代码调整
23.优先选择接口而不是抽象类或具体类。如果你知道某些东西将成为基类,你应当优先把它们设计成接口;只有在必须放进方法定义或成员变量时,才把它修改为具体或抽象类。接口只和客户希望的动作有关(协议),而类则倾向于关注实现细节。
24.使用java标准库提供的容器。精通他们的用法,将极大地提高工作效率。优先选择ArrayList来处理顺序结构,选择HashSet来处理集合,选择HashMap来处理关联数组,选择linkedList来处理堆栈和队列,它对顺序访问进行了优化,向List中间插入与删除的开销小,但随机访问则较慢。当使用前三个的时候,应该把他们向上转型为List、Set和Map,这样就可以在必要的时候以其它方式实现
25.数组是一种效率最高的存储和随机访问对象引用序列的方式,但是当创建了一个数组对象,数组的大小就被固定了,如果在空间不足时再创建新的数组进行复制,这样效率就比ArrayList开销大了。所以必须明确使用场景。
26.尽量使用”private”、”protected”关键字。一旦你把库的特征(包括类、方法、字段)标记为public,你就再也不可能去掉他们。在这种方式下,实现的变动对派生类造成的影响最小,在处理多线程问题的时候,保持私有性尤其重要,因为只有Private的字段才会受到保护,而不用担心被未受同步控制的使用所破坏。
27.禁止后台业务代码使用如下代码
try{ something() }catch(Exception ex) {} new Exception()
2.类编写规范
类的结构组织,一般按照如下的顺序:
1.常量声明
2.静态变量声明
3.成员变量声明
4.构造函数部分
5.Finalize部分
6.成员方法部分
7.静态方法部分
8.这种顺序是推荐的,在实际开发中可以按照一定的尺度修改,原则是程序更易读。如对方法的排序按照重要性,或按照字母顺序排列或按照方法之间的关系排列。
9.每个方法(包括构造与finalize)都是一个段。多个变量声明按照逻辑共同组成一个段,段与段之间以空行分隔。
10.类声明时,要指出其访问控制,一般为没有修饰符,public,和private。
11.方法与方法之间,大的部分之间都需要以空行隔离。
12.编写通用性的类时,请遵守标准形式。包括定义equals()、hasCode()、toString()、Clone(实现Cloneable接口),并实现Comparable和Serialiable接口
13.对于设计期间不需要继承的类,尽量使用final
3.变量编写规范
1.对成员变量, 尽量采用private
2.每一个变量声明/定义占一行(参数变量除外),如
int a; int b;
比int a,b; 更容易读, 更容易查找bug
3.局部变量在使用前必须初始化,一般在声明时初始化
4.变量的声明要放在程序块的开始位置
如
public void myMethod() { int int1 = 0; // beginning of method block if (condition) { int int2 = 0; // beginning of "if" block ... } }
一种例外情况是在for语句中,定义声明不仅不占一行,还在表达式内部,完全采用Eclips生成,如:
for(int i = 0; i<100; i++)
5.数组的申明采用 <数据类型[] + 变量名>方式如
char[] buffer;
而不是
char buffer[];
4.方法编写规范
1.对成员方法,不要轻易的采用public的成员变量。主要的修饰符有public, private, protected, 无
2.空方法中方法声明和函数体可都在一行。如: void func(){}
3.方法和方法之间空一行
4.方法的文档注释放在方法的紧前面,不能空一行。
5.避免过多的参数列表,尽量控制在5个以内,若需要传递多个参数时,当使用一个容纳这些参数的对象进行传递,以提高程序的可读性和可扩展性
6.方法中的循环潜套不能超过2层
7.对于设计期间不需要子类来重载的类,尽量使用final
8.每个方法尽量代码行数尽量不要超过100行(有效代码行,不包括注释),但必须保证逻辑的完整性
9.接口中的方法默认级别为protected,只有很确认其它子系统的包会调用自己子系统的接口中的方法时,才将方法暴露为public.
5.语言使用及书写规范
1.避免变量的定义与上一层作用域的变量同名。
2.方法与方法之间用需要用一空行隔开
3.局部变量在使用时刻声明,局部变量/静态变量在声明时同时初始化
4.在与常数作比较时常数放在比较表达式的前面如:
if(“simpleCase”.equals(obj))… if(null == obj)….
5.return语句中,不要有复杂的运算。
6.switch语句,需要一个缺省的分支

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

Java 8引入了Stream API,提供了一種強大且表達力豐富的處理數據集合的方式。然而,使用Stream時,一個常見問題是:如何從forEach操作中中斷或返回? 傳統循環允許提前中斷或返回,但Stream的forEach方法並不直接支持這種方式。本文將解釋原因,並探討在Stream處理系統中實現提前終止的替代方法。 延伸閱讀: Java Stream API改進 理解Stream forEach forEach方法是一個終端操作,它對Stream中的每個元素執行一個操作。它的設計意圖是處

PHP是一種廣泛應用於服務器端的腳本語言,特別適合web開發。 1.PHP可以嵌入HTML,處理HTTP請求和響應,支持多種數據庫。 2.PHP用於生成動態網頁內容,處理表單數據,訪問數據庫等,具有強大的社區支持和開源資源。 3.PHP是解釋型語言,執行過程包括詞法分析、語法分析、編譯和執行。 4.PHP可以與MySQL結合用於用戶註冊系統等高級應用。 5.調試PHP時,可使用error_reporting()和var_dump()等函數。 6.優化PHP代碼可通過緩存機制、優化數據庫查詢和使用內置函數。 7

PHP和Python各有優勢,選擇應基於項目需求。 1.PHP適合web開發,語法簡單,執行效率高。 2.Python適用於數據科學和機器學習,語法簡潔,庫豐富。

PHP適合web開發,特別是在快速開發和處理動態內容方面表現出色,但不擅長數據科學和企業級應用。與Python相比,PHP在web開發中更具優勢,但在數據科學領域不如Python;與Java相比,PHP在企業級應用中表現較差,但在web開發中更靈活;與JavaScript相比,PHP在後端開發中更簡潔,但在前端開發中不如JavaScript。

PHP和Python各有優勢,適合不同場景。 1.PHP適用於web開發,提供內置web服務器和豐富函數庫。 2.Python適合數據科學和機器學習,語法簡潔且有強大標準庫。選擇時應根據項目需求決定。

PHPhassignificantlyimpactedwebdevelopmentandextendsbeyondit.1)ItpowersmajorplatformslikeWordPressandexcelsindatabaseinteractions.2)PHP'sadaptabilityallowsittoscaleforlargeapplicationsusingframeworkslikeLaravel.3)Beyondweb,PHPisusedincommand-linescrip

PHP成為許多網站首選技術棧的原因包括其易用性、強大社區支持和廣泛應用。 1)易於學習和使用,適合初學者。 2)擁有龐大的開發者社區,資源豐富。 3)廣泛應用於WordPress、Drupal等平台。 4)與Web服務器緊密集成,簡化開發部署。

PHP適用於Web開發和內容管理系統,Python適合數據科學、機器學習和自動化腳本。 1.PHP在構建快速、可擴展的網站和應用程序方面表現出色,常用於WordPress等CMS。 2.Python在數據科學和機器學習領域表現卓越,擁有豐富的庫如NumPy和TensorFlow。
