java代碼整潔之道(如何寫出優(yōu)雅的java代碼)

這篇文章給大家聊聊關(guān)于java代碼整潔之道,以及如何寫出優(yōu)雅的java代碼對應(yīng)的知識點,希望對各位有所幫助,不要忘了收藏本站哦。求推薦一些javaee書籍第一部分:Ja...
這篇文章給大家聊聊關(guān)于java代碼整潔之道,以及如何寫出優(yōu)雅的java代碼對應(yīng)的知識點,希望對各位有所幫助,不要忘了收藏本站哦。
求推薦一些javaee書籍
第一部分:Java語言篇
1《Java編程規(guī)范》
適合對象:初級,中級
介紹:作者JamesGosling(Java之父),所以這本書我覺得你怎么也得讀一下。對基礎(chǔ)講解的很不錯。
2《Java核心技術(shù):卷Ⅰ基礎(chǔ)知識》
介紹:官方機構(gòu)圖書,你怎么也得有一本,這本書比較全面而且易懂。放在案旁用到的時候查一查,看一看。是學(xué)習(xí)入門必備書。
注:新手必備3《Java編程思想》
適合對象:初級,中級
介紹:這本書的作者就是著名的C++編程思想,對OO的理解很好,Java作為一門面向?qū)ο蟮恼Z言,你學(xué)習(xí)Java最好也同時參考這本書進行入門學(xué)習(xí)。
注:新手必備
4《EffectiveJava》
適合對象:初級,中級,高級
介紹:作者是Java的第2號人物,目前是Google的Java老大,是JamesGosling強力推薦的一本書。
5《Java與模式》
星級:
適合對象:中級,高級
介紹:是國人寫的難得的值得購買的一本書,當然現(xiàn)在也有大話設(shè)計模式之類的出現(xiàn),這本書出現(xiàn)的比較早,是初級到中高級必讀的圖書之一。
注:沒有理解面向?qū)ο笄?,讀這本書沒有意義。最好是有過項目經(jīng)驗再讀比較好。
6《SCJP學(xué)習(xí)指南》
適合對象:初級,中級
介紹:官方考試必備圖書,對你檢驗自己學(xué)些Java知識情況很有幫助,這本書最適合學(xué)生閱讀,這本書理解透了,找工作面試Java題目不會有任何問題,工作多年的拿這里的題目不會做的都很多。
7《Java數(shù)據(jù)結(jié)構(gòu)和算法》
適合對象:初級,中級,高級
介紹:這本書使用Java語言描述了我們常用的數(shù)據(jù)結(jié)構(gòu),寫的非常不錯。值得一看,不過目前基本斷貨(這個就是最有利的說明)。
8《JunitRecipes中文版:程序員實用測試技巧》
適合對象:初級,中級,高級
介紹:目前敏捷盛行,這個你是不管怎樣也得看一看的。
第二部分:中級進階篇
1《Springinaction》
適合對象:初級,中級,高級
介紹:Spring框架,作為Java程序員是怎么都必須學(xué)習(xí)的。IOC、AOP是你以后見到的軟件的基礎(chǔ)。另外基本上很多東西都和Spring產(chǎn)生聯(lián)系。
2《精通Spring2.x:企業(yè)應(yīng)用開發(fā)詳解》
適合對象:初級,中級,高級
介紹:書中提供了Spring中的目前最流行用法的實例和實用情況。
3《iBatis實踐》
適合對象:初級,中級,高級
介紹:iBatis必看參考書,inaction從未讓人失望過。
4《精通Hibernate:Java對象持久化技術(shù)詳解》
適合對象:初級,中級,高級
介紹:Hibernate必備參考書,也是國人寫的,難得的一本好書,而且作者是個MM。
5《Struts2.1權(quán)威指南》
適合對象:初級,中級
介紹:學(xué)習(xí)Struts2的一本國人寫的不錯的書,不過名稱顯得大了點。權(quán)威指南應(yīng)該只有作者才可以這么叫。
6《Maven實踐》
適合對象:初級,中級
介紹:從Ant到Maven現(xiàn)在時大勢所趨了,您怎么也得學(xué)習(xí)一下。
7《expertone-on-oneJ2EEDevelopmentwithoutEJB中文版》
適合對象:初級,中級
介紹:這個其實是Spring的基礎(chǔ),作者巨牛。強力推薦,可惜是基本買不到這本書了。
8《Tomcat權(quán)威指南》
適合對象:初級,中級
介紹:做JavaWeb的一般都必須學(xué)習(xí)這個,為Apache的開源項目。
9《HeadFirstServlets&Jsp》
適合對象:初級,中級
介紹:Servlet和Jsp作為JavaEE程序員是必須要掌握好的,而且HeadFirst系列從未令人失望。
10《HeadFirstHTML與CSS.XHTML》
適合對象:初級
介紹:介紹Web前端的不錯的入門書。
11《HTML+CSS網(wǎng)頁設(shè)計與布局從入門到精通》
適合對象:初級
介紹:這本書最大的特點是帶光盤而且講解的不錯,應(yīng)用實例也不錯。
12《JavaScript寶典》
適合對象:初級,中級,高級
介紹:是學(xué)習(xí)js的必備參考工具書之一,我記得幾年前國內(nèi)都沒有中文版,我都把整本書打印出來看了一下。
13《JavaScript權(quán)威指南》
適合對象:初級,中級,高級
介紹:是學(xué)習(xí)js的必備參考工具書之一。我看我同事購買了,看起來還不錯。
14《征服AjaxWeb2.0開發(fā)技術(shù)詳解》
適合對象:初級,中級
介紹:這本書當年是CSDN送給我的,感覺還是不錯的。對學(xué)習(xí)AJAX有幫助。
15《jQuery基礎(chǔ)教程》
適合對象:初級,中級,高級
介紹:從這個開始學(xué)習(xí)jQuery才是根本。不然以后遇到的很多奇怪問題不知所以然。jQuery個人感覺已經(jīng)成為目前的javascript標準庫了,插件無數(shù),大大簡化了前端工作。
16《XML入門經(jīng)典》
適合對象:初級,中級,高級
介紹:很多人覺得沒必要買XML書籍,不過我還是覺得推薦一本給你作為工具書,而且看本書可以使得你對XML方方面面有個了解。里面不少東西還是用到的。
17《敏捷軟件開發(fā)(原則模式與實踐)》
適合對象:中級,高級
介紹:敏捷大師的著作,您怎么也得看看。這本書包含了UML的講解,所以我就不推薦UML的書了。
18《重構(gòu):改善既有代碼的設(shè)計》
適合對象:中級,高級
介紹:同樣是大師的杰作,不可不看。最重要的是讓你明白軟件也是一步步改進的,不是一蹴而就的。
19《代碼整潔之道》
適合對象:中級,高級
介紹:軟件工程的理想編碼是需要無數(shù)人編出來的代碼像一個人寫的。這本書當作規(guī)范就不錯。
注意:WebService的圖書我還真不知道給您推薦什么,都不怎么樣。您做個實例就明白,不過怎么做接口才是核心。
如何才能寫出“高質(zhì)量”的代碼
謝謝邀請,
作為一個已經(jīng)寫了十幾年代碼的程序員,做好軟件不是全部圍繞代碼而展開,換句話講一個程序員的程序員優(yōu)秀不僅僅體現(xiàn)在代碼上,更要有內(nèi)在的編程思想說的層次再高深點就是框架思想。很多初學(xué)者都會存在很多疑問,覺得能夠?qū)懘a就萬事大吉了,在能寫代碼之前會有很多疑問
數(shù)學(xué)不好能學(xué)好編程不?
英語不好能不能學(xué)好編程?
這些都是還沒入門的疑問,真正入門之后發(fā)現(xiàn)這些都不是什么問題,真正決定程序員水平也不是簡單的能寫多少代碼,真正項目實施過程寫代碼的時間占據(jù)不到百分三十,大部分時間是在設(shè)計和構(gòu)思上,當然占據(jù)時間最多的是調(diào)試以及客戶后續(xù)提出的需求上面,現(xiàn)在很多人還在糾結(jié)是不是要多學(xué)習(xí)幾種編程語言,編程語言本質(zhì)來講就是一種工具,主要指導(dǎo)思想還是編程思想。
現(xiàn)實中如何才能寫出高質(zhì)量的代碼?1.良好編程基本功。再高的大廈也得需要強大的編程基礎(chǔ),不一定要掌握多少種編程語言關(guān)鍵要非常熟悉一種編程語言,里里外外都給吃透了,達到這種程度至于掌握幾種編程語言就顯得不是那么重要了,到了這種程度就可以觸類旁通,切換一種新的編程語言也不會費多大事,有事沒事就回頭看看基礎(chǔ)書,越是編程高手越是注重基本功的學(xué)習(xí),很多做java的程序員,java編程思想這本書看了不下十幾遍,而且還在繼續(xù),基礎(chǔ)的學(xué)習(xí)什么時候值得回味。
2.專業(yè)知識的雄厚。編程語言只是工具,工具如何才能使用好,還是要看這工具是用來做什么的,比如安全領(lǐng)域可能使用C語言或者C++編程,如果安全專業(yè)知識掌握的非常扎實,工具使用起來再更加熟練,才能有高質(zhì)量的代碼出現(xiàn),要把一個事情做到極致,各個細節(jié)點就要落實到位,缺一不可。
3.好的軟件框架,軟件框架是寫出高質(zhì)量代碼的土壤,假如一個能力很強的人,進入一個亂糟糟的公司基本很難發(fā)揮出最大的潛能,所以生存土壤很重要,一個優(yōu)秀的產(chǎn)品一定是代碼各個模塊有機配合在一起共同做出來的,一個模塊的優(yōu)秀代碼優(yōu)秀,整個產(chǎn)品出問題了意義也不是很大。
4.高質(zhì)量的代碼從來都不是一次性搞定的,都是經(jīng)過多次的打磨修改出來的,玩過開源的人應(yīng)該都明白,代碼模塊不停的升級優(yōu)化折騰不停,不僅僅是功能的增加更重要的代碼質(zhì)量的提煉,所以想寫出高質(zhì)量代碼需要敢對自己下手,對自己要狠一點才能有高質(zhì)量的代碼出來,細心的人可以觀察下身邊優(yōu)秀的程序員,看看是不是都是這么做的。
做到以上四點,堅持下去寫出來的代碼質(zhì)量不會差,當然還要懂得去閱讀別人寫的優(yōu)秀代碼,開始看的時候不一定能看得懂,不能大塊的看懂就切塊去看去學(xué)習(xí),以前有個linux內(nèi)核愛好者,整體看linux內(nèi)核代碼,有一天看到他十分開心的樣子,問發(fā)生了什么事情,說看懂了linux內(nèi)核里面的內(nèi)存是如何管理的了,然后拉著我給我講了半天,雖然沒聽懂但也堅持聽到最后,畢竟代碼能寫的前提是能看懂,所以開源社區(qū)的代碼如果能看懂就是一個非常大的進步,然后一步步的掌握起來,格局放大一定做出更大的事情來。
java業(yè)務(wù)邏輯,寫在哪里比較好
現(xiàn)在很多公司開發(fā)人員應(yīng)該采用都是mvc架構(gòu)。
Mvc就是所謂的model模型,view視圖,controller控制器。
每個層都有明確分工。
簡單的項目拋開nignx,網(wǎng)關(guān),一般都是前端發(fā)一個請求到后端,首先到達contoller然后是service層再然后是dao層。
這里的service層就是所謂的業(yè)務(wù)層,專門負責(zé)業(yè)務(wù)處理操作,而dao層負責(zé)和數(shù)據(jù)庫打交道,從db拿數(shù)據(jù)返給service,sevice處理完返給controller層,controller通過視圖解析器,解析完通過瀏覽器渲染頁面。
說到這里基本上,我想答案已經(jīng)很明顯了。那就是Java業(yè)務(wù)邏輯寫在service層。
而sevice層其實又涉及到接口和接口實現(xiàn)。
就是我們一般寫代碼都會定義一個接口供controller去調(diào)用。
其實service接口的實現(xiàn)類最終才應(yīng)該是寫業(yè)務(wù)邏輯的地方。
當然很多公司可能不止一個sevice層,比如還有一個manager層繼續(xù)對數(shù)據(jù)做特殊業(yè)務(wù)處理,這里只是簡單的說下大致情況。
每個公司每個項目根據(jù)自身業(yè)務(wù),架構(gòu)可能不太一樣。但本質(zhì)是一樣的。
總結(jié)一下就是業(yè)務(wù)邏輯肯定需要單獨作為一層去處理,這樣既方便拓展,也方便維護。切記不要把所有的業(yè)務(wù)邏輯都寫在controller里面。
每個層都有自己的分工,都揉在一塊不僅僅代碼冗長看起來還很亂,不清晰。
好了,希望我的回答能幫到你!
感興趣可以關(guān)注,共同學(xué)習(xí)交流!
java程序員如何提升自己
深入學(xué)習(xí)Java方面的內(nèi)容,了解過“如鵬網(wǎng)”的Java提高課程,可以參考一下,內(nèi)容包括:分布式、設(shè)計模式、前端技術(shù)、網(wǎng)絡(luò)支付、全文搜索引擎、Docker、WebService等。Java提高詳細的知識點和學(xué)習(xí)路線,可以作為參考。
第一階段:第二階段:NoSQL第三階段:設(shè)計模式第四階段:分布式技術(shù)第五階段:綜合項目詳細的可以到“如鵬網(wǎng)”上去了解一下,有網(wǎng)絡(luò)的地方就可以學(xué)習(xí),口碑不錯,基本上都會慕名而去的。
Java 8中用法優(yōu)雅的Stream,性能也“優(yōu)雅”嗎
本人歷經(jīng)了Java6~java8的“改朝換代”,說說自己的看法。
首先,不可否認,stream絕對是優(yōu)雅的代名詞,無論是其串行調(diào)用方式,還是其api的強大能力,都給予了程序員一項特殊技能:高效、簡潔。
但事情并非絕對,但從性能上來說,stream真的比傳統(tǒng)迭代更優(yōu)嗎?其實不然,還是要依據(jù)實際情況來看待問題。
在極少數(shù)量的迭代次數(shù)下,其實看不出性能效果的差異,固后面所說的幾點都是依賴大量數(shù)據(jù)迭代的前提之下。
具體分為以下幾點談?wù)劊?/p>
1、無論什么程序,都要跑在載體上,而常見的載體就是服務(wù)器,那么,提到這就很容易聯(lián)想到,CPU的處理能力,直接影響到性能問題。
如果只是單核cpu,那么還是推薦傳統(tǒng)迭代,a)實際測試效果來看,stream性能要明顯差于for循環(huán)之類的傳統(tǒng)處理方式,尤其在單核cpu時,千萬不要使用stream的并線處理,原因是并行處理時還有另外一項開銷,就是上下文線程切換,而此時只有單核cpu,你說這是不是“沒事找事”;
b)當cpu是多核時,并且隨著核數(shù)的增加,這時,stream的優(yōu)勢才能逐漸顯示出來,畢竟并行處理還是由于串行的。
2、事情不是絕對,不是所有情況下,串行處理時stream都不如傳統(tǒng)迭代。比如在復(fù)雜對象的處理時(常見的有訂單對象,里面包含很多信息),經(jīng)測試結(jié)果發(fā)現(xiàn),stream性能還是由于普通迭代的,那更不用說,在多核cpu下的并行處理了,此處再次強調(diào),不要在單核下使用串行,你會發(fā)現(xiàn)性能及其查!
3、最后提一點個人經(jīng)歷,在使用并行stream時,要謹慎對待迭代處理中進行多外部接口調(diào)用,可能你會發(fā)現(xiàn)并行后因為上下文線程切換帶來的開銷反而不一定性能更優(yōu)于串行,還會給系統(tǒng)穩(wěn)定性帶來一定影響。
最后總結(jié)一下,處于代碼整潔上考慮,stream還是有明顯優(yōu)勢的,但是在性能上,大家還是要依據(jù)實際情況來做出合理選擇,這樣才能寫出最“優(yōu)雅”的代碼。
以上3點均為個人見解和日常工作所碰到實際場景的總結(jié),若有不對或者見解不一的地方,大家可以留言指出,一起探討,一起進步。
如何評價Java8的特性
大家好,我叫souvc,在互聯(lián)網(wǎng)公司做研發(fā)工作,剛好公司也是用Java8,下面我來介紹Java8的大部分新特性。Java8新增了非常多的特性,我們主要討論以下幾個:
一、Lambda表達式Lambda允許把函數(shù)作為一個方法的參數(shù)函數(shù)作為參數(shù)傳遞進方法中。
我們來簡單看下使用java8之前和之后,做一個簡單的對比。
我們來初始化一個列表
使用java8之前,我們做一個循環(huán)
使用java8之后的循環(huán),并且在循環(huán)中做一些操作。
Java8讓代碼變得更整潔,讓程序變得更健壯,讓程序員更專注于實現(xiàn)。
二、方法引用方法引用提供了非常有用的語法,可以直接引用已有Java類或?qū)ο螅▽嵗┑姆椒ɑ驑?gòu)造器。與lambda聯(lián)合使用,方法引用可以使語言的構(gòu)造更緊湊簡潔,減少冗余代碼。
三、默認方法默認方法就是一個在接口里面有了一個實現(xiàn)的方法。
簡單說,默認方法就是接口可以有實現(xiàn)方法,而且不需要實現(xiàn)類去實現(xiàn)其方法。我們只需在方法名前面加個default關(guān)鍵字即可實現(xiàn)默認方法。
輸出
四、新工具新的編譯工具,如:Nashorn引擎jjs、類依賴分析器jdeps。
五、StreamAPI新添加的StreamAPI(java.util.stream)把真正的函數(shù)式編程風(fēng)格引入到Java中。
六、DateTimeAPI加強對日期與時間的處理。
新的java.time包涵蓋了所有處理日期,時間,日期/時間,時區(qū),時刻(instants),過程(during)與時鐘(clock)的操作。
七、Optional類Optional類已經(jīng)成為Java8類庫的一部分,用來解決空指針異常。
八、NashornJavaScript引擎?Java8提供了一個新的Nashornjavascript引擎,它允許我們在JVM上運行特定的javascript應(yīng)用。
九、擴展注解的支持Java8擴展了注解的上下文,幾乎可以為任何東西添加注解,包括局部變量、泛型類、父類與接口的實現(xiàn),連方法的異常也能添加注解。
十、Base64在Java8中,Base64編碼成為了Java類庫的標準。Base64類同時還提供了對URL、MIME友好的編碼器與解碼器。
時間有限,還有很多新的特性沒有展開來講,如果大家有興趣,那么關(guān)注我,持續(xù)更新給大家普及java8的知識,一起學(xué)習(xí),一起進步!覺得有用,順手點個贊,謝謝!
java代碼整潔之道的介紹就聊到這里吧,感謝你花時間閱讀本站內(nèi)容,更多關(guān)于如何寫出優(yōu)雅的java代碼、java代碼整潔之道的信息別忘了在本站進行查找哦。
本文鏈接:http://m.tiantaijiaoyu.cn/kaifa/4113.html