好程序员分享Java开发常用规范技巧二
1、使用一些日期類的時候,推薦使用LocalDateTime來替代Calendar類,或者說使用Instant來替代掉Date類。
2、盡量避免在for循環(huán)里面執(zhí)行try-catch操作,可以選擇將try-catch操作放在循環(huán)體外部使用。
?正確做法:
try {
?????????for (int i = 0; i < 100; i++) {
?????????????doSomeThing();
??????????}
???????}catch (Exception e){
????????????e.printStackTrace();
???????}
?
不推薦做法:
for (int i = 0; i < 100; i++) {
?
??????try {
????????????????doSomeThing();
????????????} catch (Exception e) {
????????????????e.printStackTrace();
????????????}
????????}
?
3、對于大段的代碼進(jìn)行try-catch操作,這是一種不負(fù)責(zé)任的行為,將穩(wěn)定的代碼也都包圍在了try-catch語句塊里面沒能很好的分清代碼的穩(wěn)定性范圍。
通常我們稱在運(yùn)行中不會出錯的代碼塊為穩(wěn)定性代碼,可能會有異常出錯的部分為非穩(wěn)定性代碼塊,后者才是try-catch重點(diǎn)需要關(guān)注的對象。
4、在jdk7之后,對于流這類需要關(guān)閉連接釋放資源的對象,可以使用try-with-resource處理機(jī)制來應(yīng)對。
例如下方代碼:
File file = new File("*****");
????????try (FileInputStream fin = new FileInputStream(file)) {
????????????//執(zhí)行相關(guān)操作
????????} catch (Exception e) {
????????????//異常捕獲操作
????????}
5.使用ArrayList的時候,如果清楚它的指定大小的話,可以盡量在初始化的時候進(jìn)行大小指定,因?yàn)殡S著arraylist不斷添加新的元素之后,鏈表的體積會不斷增大擴(kuò)容。
?
private void grow(int minCapacity) {
????????// overflow-conscious code
????????int oldCapacity = elementData.length;
????????int newCapacity = oldCapacity + (oldCapacity >> 1);
????????if (newCapacity - minCapacity < 0)
????????????newCapacity = minCapacity;
????????if (newCapacity - MAX_ARRAY_SIZE > 0)
????????????newCapacity = hugeCapacity(minCapacity);
????????// minCapacity is usually close to size, so this is a win:
????????elementData = Arrays.copyOf(elementData, newCapacity);
}
6、對于一些短信,郵件,電話,下單,支付等應(yīng)用場景而言,開發(fā)的時候需要設(shè)置相關(guān)的防重復(fù)功能限制,防止出現(xiàn)某些惡意刷單,濫刷這類型情況。
7、對于敏感詞匯發(fā)表的時候,需要考慮一些文本過濾的策略。
這一塊的功能可以考慮直接接入市面上已有的成熟的UGC監(jiān)控服務(wù),或者使用公司內(nèi)部自研的ugc過濾工具,防止用戶發(fā)表惡意評論等情況出現(xiàn)。
8、在建立索引的時候,對于索引的命名需要遵循一定的規(guī)范:
?
| 索引類型 | 命名規(guī)則 | 案例 |
| 主鍵索引 | pk_字段名,pk是指primary key | pk_order_id |
| 唯一索引 | uk_字段名,uk是指 unique key | uk_order_id |
| 普通索引 | idx_字段名,idx是指 index | idx_order_id |
9、當(dāng)我們需要存儲一段文本信息的時候,需要先考慮存儲文本的長度。
如果文本的長度超過了5000,則不建議再選擇使用varchar類型來進(jìn)行存儲,可以考慮使用text類型進(jìn)行數(shù)據(jù)存儲,這個時候可以考慮單獨(dú)用一張表來進(jìn)行存儲數(shù)據(jù),并且通過一個額外的主鍵id來對應(yīng),從而避免影響其他字段的查詢。
10、在進(jìn)行數(shù)據(jù)庫命名的時候盡量保證數(shù)據(jù)庫的名稱和項(xiàng)目工程的名稱一致。
11、在進(jìn)行表結(jié)構(gòu)設(shè)計的時候,只要具有唯一性質(zhì)的字段都需要建立唯一索引。
這樣有助于后期進(jìn)行查詢的時候提高查詢的效率,沒有唯一索引這一層的保障,即使在業(yè)務(wù)層加入了攔截,但是依然容易造成線上臟數(shù)據(jù)的產(chǎn)生。
12、在進(jìn)行order by這類型sql查詢的時候,需要注意查詢索引的有序性。
關(guān)于索引的建立,可以去了解一下索引的星級評定,例如三星索引。但是個人認(rèn)為索引沒有所謂的最優(yōu)性,需要結(jié)合實(shí)際的業(yè)務(wù)場景來設(shè)計。
13、在MySQL中,使用count(*)會統(tǒng)計值為 NULL 的行,而 count(列名)不會統(tǒng)計此列為 NULL 值的行。
28、在進(jìn)行數(shù)據(jù)庫存儲引擎選擇的時候,需要結(jié)合相關(guān)的應(yīng)用場景來選擇,如果是需要應(yīng)用在select操作較多的情況下,可以選擇使用MyIsAM存儲引擎,如果是對于數(shù)據(jù)的insert,update,這類修改操作較多的業(yè)務(wù)場景,則優(yōu)先推薦使用innodb存儲引擎。目前普遍互聯(lián)網(wǎng)公司都推薦使用innodb較多。
免責(zé)聲明:內(nèi)容源自網(wǎng)絡(luò),版權(quán)歸原作者所有,如有侵犯您的原創(chuàng)版權(quán)請告知,我們將盡快刪除相關(guān)內(nèi)容
轉(zhuǎn)載于:https://www.cnblogs.com/gcghcxy/p/11133961.html
總結(jié)
以上是生活随笔為你收集整理的好程序员分享Java开发常用规范技巧二的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Web.sitemap网站导航
- 下一篇: postman接口参数化