https://github.com/Snailclimb/jsoncat :仿 Spring Boot 但不同于 Spring Boot 的一個輕量級的 HTTP 框架
距離上一次給小伙伴們匯報簡易版的“Spring Boot”的完成情況已經有半個月了,時間過得是真特么快啊!
01
這半個月里,我的 HTTP 框架已經支持 AOP、攔截器(也是 AOP 的一種)、屬性檔案讀取等功能了, ??
目前的話,整個 HTTP 框架基本已經具備我最初想要實作的全部功能了,也算是兌現了諾言,善始善終了,
功能具體的實作情況如下:
很多讀者小伙伴可能感覺我寫的比較容易,不過, 說實話,我中間寫的程序中也遇到了很多問題,為了解決寫這個框架遇到的一些問題,我熬了很多夜,也早起了很多次,
我不算是奮青,一般情況下,我平時都是晚上 9 點半之后玩幾把王者榮耀,到了 12 點左右就睡覺了,早晨的話,我一般都是 8 點左右起床,幾乎日日如此,
但是,寫這個 HTTP 框架的時候,我記得有 3 次我熬夜到凌晨 2 點左右,有 2 個早晨,因為有“靈感”,我 5 點多久爬起來寫代碼了,
說這些,不是為了博同情讓大家覺得我寫的多辛苦,也不是表現我有多努力,
這些都是很平常的經歷罷了!我覺得大部分程式員都經歷過:
- 夜深人靜的時候,突然自己寫的代碼出了點問題,不解決就不想睡覺,
- 某個早晨,突然驚醒,靈感爆棚,打開電腦開始寫代碼,
不過,我是真的不推薦大家熬夜!那我自己來說,每次熬夜就會導致我第二天甚至是第三天精神不振,嚴重影響效率,這還只是熬夜的短期影響,長期作息不健康的話,肯定對身體的摧殘特別大,
道理都懂,不過,大部分都像我一樣,還是會偶爾熬夜,
02
整個框架的目錄結構如下:
- 框架實作部分按照不同的功能模塊進行組織,比較直觀,
- 提供了完整的框架使用示例,并且還為其撰寫了測驗,
03
開源的魅力在于別人可以對你的專案進行反饋,并且,遇到對你的專案感興趣的朋友,他們還會幫你一起完善和開發專案,
拿 jsoncat 來說,jsoncat 開源之后,一位叫做“hellohello-tom”的老哥便參與了進來幫忙開發,

tom 哥代碼寫的很不錯,幫助 jsoncat 實作了很多功能!真的非常非常非常感謝!愛你哦!老哥!
我倆因為這個專案經常在微信上交流,或許這就是編程的魅力吧!哈哈哈!
我平時少在微信聊天的,但是因為這個開源專案和老哥聊了挺多的,
隨便截了兩張圖:

我覺得一個專案開發是比較忌諱只有自己一個人的,每個人都會有思維局限,你很難發現你的代碼需要某些改進的地方以及存在的問題,
這也解釋了為什么 Code Review(代碼審查)在軟體開發程序中這么重要了,
通過 Code Review 可以非常有效提高代碼的整體質量,因為它會幫助我們發現代碼中的壞味道以及可能存在問題的地方,
04
其實,單純實作功能的話費不了太多時間,大部分時間,我都花在了對現有代碼的重構上,
畢竟我這個 HTTP 框架開源出來的主要目的之一是為了給需要的小伙伴學學習,我必須要保證我寫的代碼可讀性,?
為此,我在寫代碼的程序中給自己定了以下原則:
- 一切從簡 :能用最少的代碼寫清楚的功能就一定不多用一行代碼,
- 不濫用設計模式 :我最初寫代碼的時候,特別喜歡濫用設計模式,自己學到了什么設計模式,就像立馬用到自己的專案上去,即使這個設計模式在當前業務場景并不適合,這真的是一個不好的習慣,不過,在寫這個 HTTP 框架的時候我刻意避免了這個問題, 目前的話,整個框架只用到了單例模式、工廠模式、策略模式以及責任鏈模式,
- 保持代碼結構清晰 : 開源出來的代碼是寫給人看的,代碼結構清晰可以大大減少其他人理解代碼的難度,
- 謹慎抽取工具類 :最開始寫這個框架的時候,我抽了很多工具類,到最后發現很多工具類中的方法,實際只在某一個地方用到,并且以后也只可能會在這一個地方用到,這個時候,我覺得最好的做法就是,將這些工具類方法放到唯一一個用到這個方法的類中,這樣整體代碼結構會更加清晰,
- 不秀技 :最開始寫代碼的時候,特別喜歡秀技,比如說 Java8 那會還沒流行的時候,我寫代碼總想著用 Java 8 的 Lambda 運算式、函式式介面等新特性,那時候,和老師一起做專案的時候,其他同學還會覺得我寫的特別牛逼,因為他們覺得自己很久才能看懂,但是,我現在覺得當時的做法其實有別軟體開發/編程的本質,編程的本質不是說減少代碼量,而是說寫出他人易于理解的代碼,寫出更容易維護的系統,你寫的代碼不單純是給你自己看的,你還要讓別人看懂,減少別人的閱讀學習成本,這個和我第一點說的一切從簡是不矛盾的,
今天就簡單聊聊這些吧!時間也不早了!
我的開源專案推薦
- JavaGuide :「Java學習+面試指南」一份涵蓋大部分Java程式員所需要掌握的核心知識,準備 Java 面試,首選 JavaGuide!
- guide-rpc-framework :A custom RPC framework implemented by Netty+Kyro+Zookeeper.(一款基于 Netty+Kyro+Zookeeper 實作的自定義 RPC 框架-附詳細實作程序和相關教程)
- jsoncat :仿 Spring Boot 但不同于 Spring Boot 的一個輕量級的 HTTP 框架
- programmer-advancement :程式員應該有的一些好習慣+面試必知事項!
- springboot-guide :Not only Spring Boot but also important knowledge of Spring(不只是SpringBoot還有Spring重要知識點)
- awesome-java :Collection of awesome Java project on Github(Github 上非常棒的 Java 開源專案集合).
我是 Guide 哥,一 Java 后端開發,會一點前端,自由的少年,我們下期再見!微信搜“JavaGuide”回復“面試突擊”領取我整理的 4 本原創PDF
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/187010.html
標籤:Java
