寫在前面的話
多年以來,參與了很多項目,每個項目又分爲多個服務,每個服務可能就是一個工程(project),沒有太好的工程治理,很多通用的組件、代碼都是隨處copy。之後就是任其自由發展,很難做到回溯和統一維護。現將這部分組件、代碼整理,可以以jar的方式導入工程,亦可上傳到私服以maven、gradle的方式依賴。
工程代碼
代碼可參考https://github.com/xiaojianhx/common
開發環境和工具
- JDK:jdk-13.0.1(因eclipse尚未支持jdk14,故暫用jdk13)
- maven:apache-maven-3.6.3
- IDE:Eclipse IDE for Java Developers(Eclipse IDE 2020-03)
雖然工具及時做了更新,但因能力和精力有限,代碼的書寫並未完全與時俱進,如jdk13的使用,並未體現新特徵的精髓,待完善;
特殊說明:
- 本工程不集成大而全的功能,只是將日常工作中用的多、通用性強的功能片段抽取,形成模塊。
- 本工程中的方法均已在正式環境中使用,但在高併發環境下未做嚴格測試
工程結構
common
├── common-dbutils // 數據庫操作
├── common-email // 郵件服務
├── common-excel // excel讀入導出操作
├── common-globle // 定義所有的常量
├── common-json // JSON工具類
├── common-root // 父工程,統一管理所有依賴的jar
├── common-schedule // 定時任務控制開關
├── common-redis // redis操作
├── common-remote // 遠程操作系統操作
├── common-utils // 常用工具類
└── pom.xml
- common-root
該工程是一個pom工程,只有一個pom文件,定義全局的編譯、運行環境、倉庫地址、依賴jar包版本,所有工程應該 [直接 | 間接] [繼承 | 依賴] 該pom。
該工程暫時放在common工程下,是common的parent。 - common-schedule
定時任務控制開關,依賴spring。很多時候,本地調試代碼時,不希望執行定時任務,每次註釋代碼太煩,可以引入該模塊,用法如下:
# application.properties
# 開關:true-open;false-close;
scheduler.enabled=true
# 線程數
scheduler.pool.size=100
# 線程前綴
scheduler.thread.name.prefix=thread-
@Scheduled(cron = "0/1 * * * * ?")
public void execute() {
System.out.println("1");
}
- common-globle
定義全局的常量。 - common-json
json操作工具類。 - common-utils
常用工具類,校驗、字符串操作、時間格式化、隨機數等;
寫在後面的話
本人的編程思想:
- 少即是多,依賴越少越好,層級越淺越好;
- 追新,常用工具及時安裝最新版本;
- 潔癖,同一工程中,同一段代碼不能出現兩次(廣義理解);沒用的廢代碼及時清理;
本人的編程規範(本人先後就職於對日公司、華爲、互聯網行業):
- 對日公司:給日本人做項目,日本人對規範要求慎嚴,包括命名、註釋(javadoc)、格式等等;
- 華爲期間:增加了圈複雜度、重複代碼率、測試覆蓋率等一系列規範和檢測;
- 臨近幾家互聯網公司:因公司特點,要求進度而忽視質量,所以曾經一度嚴謹的規範也適當簡化;
基於上述幾段經歷,結合阿里的《Java開發手冊》形成了當前的一套風格。只是在eclipse默認規範上修改兩點,包括java和xml(因本人eclipse未裝web插件,html、css、js等代碼手動保證格式,寫得多了,撩一眼基本就能發現問題):
曾幾何時,公司幾度以本人規範爲標杆,也有公司讓本人推廣規範。這是個費力不討好的差事。基於大家的習慣,如果沒有嚴格指令,肯定推不動,最後就不了了之。只求度己,不度人了。
有興趣的同事來交流,肯定知無不言言無不盡,其他的就睜一隻眼閉一隻眼了。但是參與本人主導的項目,則必須嚴格遵守要求。
受周邊同事影響,本人現今書寫代碼也未完全準守規範。
變更日誌
- 2020-05-23 20:23 初次編輯