規範需要平時編碼過程中註意,是一個慢慢養成的好習慣
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语句,需要一个缺省的分支

本文討論了使用Maven和Gradle進行Java項目管理,構建自動化和依賴性解決方案,以比較其方法和優化策略。

本文使用Maven和Gradle之類的工具討論了具有適當的版本控制和依賴關係管理的自定義Java庫(JAR文件)的創建和使用。

本文討論了使用咖啡因和Guava緩存在Java中實施多層緩存以提高應用程序性能。它涵蓋設置,集成和績效優勢,以及配置和驅逐政策管理最佳PRA

本文討論了使用JPA進行對象相關映射,並具有高級功能,例如緩存和懶惰加載。它涵蓋了設置,實體映射和優化性能的最佳實踐,同時突出潛在的陷阱。[159個字符]

Java的類上載涉及使用帶有引導,擴展程序和應用程序類負載器的分層系統加載,鏈接和初始化類。父代授權模型確保首先加載核心類別,從而影響自定義類LOA


熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

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

Dreamweaver Mac版
視覺化網頁開發工具

WebStorm Mac版
好用的JavaScript開發工具

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

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),