入職第一天,看了公司程式碼,牛馬沉默了。。

Java技术栈發表於2024-08-15

作者:小紅帽的大灰狼
來源:juejin.cn/post/7371986999164928010

入職第一天就幹活的,就問還有誰,搬來一臺N手電腦,第一分鐘開機,第二分鐘派活,第三分鐘幹活,巴適。。。

開啟程式碼發現問題不斷

1.讀取配置檔案居然讀取兩個配置檔案,一個讀一點,不清楚為什麼不能一個配置檔案進行配置

一邊獲取WEB-INF下的配置檔案,一邊用外部配置檔案進行覆蓋,有人可能會問既然覆蓋,那可以全在外部配置啊,問的好,如果全用外部配置,咱們程式碼獲取屬性有的加上了專案字首(上面的兩個put),有的沒加,這樣配置檔案就顯得很亂不可取,所以形成了分開配置的局面,如果接受混亂,就寫在外部配置,不能全寫在內部配置,因為

prop_c.setProperty(key, value);

value獲取外部配置為空的時候會丟擲異常,properties底層集合用的是hashTable

public synchronized V put(K key, V value) {
    // Make sure the value is not null
    if (value == null) {
        throw new NullPointerException();
    }
}

2.很多引數寫死在程式碼裡,如果有改動,工作量會變得異常龐大,舉例許可權方面虛擬碼

role.haveRole("ADMIN_USE")

3.日誌列印居然sout和log混合雙打

先不說雙打的事,對於上圖這個,應該輸出包括堆疊資訊,不然定位問題很麻煩,有人可能會說e.getMessage()最好,可是生產問題看多了發現還是打堆疊好;

還有如果不是定向返回資訊,僅僅是記錄日誌,完全沒必要catch多個異常,一個Exception足夠了,不知道原作者這麼寫的意思是啥;還是就是列印日誌要用logger,用sout列印在控制檯,那我日誌檔案幹啥;

4.提交的程式碼沒有技術經理把關,下發生產包是個人就可以發導致生產環境程式碼和原生代碼或者資料庫資料出現不一致的現象,資料庫資料的同步是生產最容易忘記執行的一個事情;比如我的這家公司上傳檔案模板變化了,但是沒同步,導致出問題時開發環境復現問題真是麻煩;

5.隨意更改生產資料庫,出不出問題全靠開發的職業素養;

6.Maven依賴的問題,Maven引pom,而pom裡面卻是另一個pom檔案,沒有生成的jar供引入,是的,我們可以在dependency里加上

<type>pom</type>

來解決這個問題,但是公司內的,而且實際也是引入這個pom裡面的jar的,我實在不知道這麼做的用意是什麼,有誰知道;求教

Spring Boot 基礎就不介紹了,推薦看這個實戰專案:

https://github.com/javastacks/spring-boot-best-practice

以上這些都是我最近一家公司出現的問題,除了默默接受還能怎麼辦;

那有什麼優點呢:

  • 不用太怎麼寫文件
  • 束縛很小
  • 學到了js的全域性呼叫怎麼寫的

解決之道

怎麼解決這些問題呢,首先對於現有的新專案或升級的專案來說,spring的application.xml/yml 完全可以寫我們的配置,開發環境沒必要整外部檔案,如果是生產環境我們可以在指令碼或啟動命令新增

nohup java -Dfile.encoding=UTF-8 -Dspring.config.location=server/src/main/config/application.properties -jar xxx.jar &

來告訴jar包引哪裡的配置檔案;也可以加上動態配置,都很棒的,其次就是規範程式碼,養成良好的規範,跟著節奏,不要另闢蹊徑;老老實實的,如果原專案上迭代,不要動原始碼,追加即可,沒有時間去重構的

更多文章推薦:

1.Spring Boot 3.x 教程,太全了!

2.2,000+ 道 Java面試題及答案整理(2024最新版)

3.免費獲取 IDEA 啟用碼的 7 種方式(2024最新版)

覺得不錯,別忘了隨手點贊+轉發哦!

相關文章