煙囪式開發模式:
創新互聯專業為企業提供桐廬網站建設、桐廬做網站、桐廬網站設計、桐廬網站制作等企業網站建設、網頁設計與制作、桐廬企業網站模板建站服務,十年桐廬做網站經驗,不只是建網站,更提供有價值的思路和整體網絡服務。
上述開發模式有幾個弊端:
這樣開發模式的優勢:
業務代碼集中在業務層 service,專注于業務對象 bo 的封裝以及業務對象給展示層 vo的轉換,封裝復用邏輯,可以減少大量重復的代碼,后期維護便捷的多。
數據庫改動只設計dao層,快速響應各個業務。
業務代碼如何拒絕 all in one
以上的controller代碼最突出的缺點就是代碼完全無法復用,完全沒有使用到面向對象封裝,集成,多態的特性。業務開發中,一般都是權限校驗,參數校驗,業務判斷,業務對象轉換數據庫操作。
我的做法是業務抽象,把公共代碼進行抽取,通過配置的形式的方式調用,使業務代碼可以以可插拔的方式選擇指定的權限校驗,參數校驗。簡單來說,就是善用AOP面向切面編程的思想,示例如下:
使用aop對權限校驗邏輯進行抽取,能夠通過注解的方式指定哪些controller需要進行權限校驗。對用戶進行數據過濾時,使用controller的攔截器獲取該用戶擁有的各類權限,并把用戶數據保存在上下文threadloal中,并且通過配置對指定url進行攔截。在業務層,從上下文拿到用戶權限數據做各類數據業務過濾,通過aop實現各類攔截業務的指定調用。
使用java validtion對通用的字段,例如電話號碼,身份證,進行擴展,詳細可以參考,如何使用validation校驗參數?,在項目中其他類似校驗進行復用。
業務判斷:使用設計模式對不同類型的業務開發進行封裝,集成,多態擴展;這樣在后期的擴展中可以基于開發封閉原則,針對新的業務擴展子類即可。
業務開發過程中,依照阿里巴巴研發規范的要求,存在DO(數據庫表結構一致的對象),BO(業務對象),DTO(數據傳輸對象),VO(顯示層對象),Query(查詢對象)。
使用MapStruct,可以靈活的控制的不同屬性值之間的轉換規格,比org.springframework.beans.BeanUtils.copyProperties()方法更加靈活。
例如,公共字段,生成日期,創建人,修改時間,修改人使用插件的形式進行封裝,在mybatis-plus中使用MetaObjectHandler,在執行sql之前完成統一字段值的填充。
項目如何做好代碼注釋?
在業務中特別是狀態的值,在對外發布api的vo對象中,加上狀態枚舉值的注釋,并且使用@link 注解,可以直接連接到枚舉類,讓開發者一目了然。
其實你已經很好了,我認為寫程序首先要有自己的思路,其次才是看你真正掌握的技能...比如一艘船如果有足夠大的馬力,但是缺少正確的方向..那樣子會裝上暗礁的,所以在編程方面業務邏輯是很重要的,接下來只要有一般的技能基礎就可以了;
就拿你說的修改密碼來說吧:第一步:我首先要知道要修改人的ID,然后才能按照一定的方法修改數據庫中的表:一個update user set user_password=“要修改的密碼” where user_id=“指定修改人的ID” 再加上一定的連接數據庫的方法..程序員修改密碼的目的就達到了...加油!
寫代碼的順序最好和實際操作的邏輯一樣,先做什么后做什么,這樣能最大程度的保證邏輯不會出什么問題。前提是你要熟悉業務邏輯。
還有開發的時候不要局限于一個方法的實現代碼邏輯,先從整體上把方法都寫出來,比如這個方法要做什么,只管寫一個方法就行,具體怎么做可以在框架都搭完了再寫,更好的就是全部用接口,接口全部寫好了之后再寫實現類,這樣更好。
還有一個方法里面的代碼最好不要太長,最好不要超過一個屏幕,不然看起來很累的,可以把一個方法分成好幾個方法來寫,那樣BUG也會減少很多,邏輯性強。還有就是最好不要循環嵌套,嵌套個兩三層后出問題就麻煩了,如果一定要嵌套就分出去一個方法就好。
還有就是要多集成,能通用的方法就通用寫掉,寫成工具類,如果有框架了,多多熟悉原本就有的工具類,都自己寫的話代碼多不說,還很容易出錯,要學會活用別人的代碼。
最后:多多交流,自己蒙頭寫只能一事無成。
最最后:手打真累...
分享題目:java寫業務代碼思路,如何寫業務代碼
本文路徑:http://m.kartarina.com/article14/hddjge.html
成都網站建設公司_創新互聯,為您提供企業網站制作、動態網站、外貿網站建設、、商城網站、域名注冊
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯