1. gzyueqian
      13352868059

      Java工程師應(yīng)該注意的二、三事

      更新時(shí)間: 2012-11-15 11:00:54來(lái)源: 粵嵌教育瀏覽量:2404


        作者結(jié)合實(shí)際,總結(jié)了10條Java開(kāi)發(fā)人員應(yīng)該注意和避免的開(kāi)發(fā)習(xí)慣,希望這里提供的信息能幫助到你!

        當(dāng)我看到成群的Java程序員在做下面這10件事情時(shí),我真想大聲喊“停”。

        1.遍歷結(jié)果集并且構(gòu)建對(duì)象

        while(result.next())

        {Stringname=result.getString(“name”);

        Stringaddress=result.getString(“address”);

        Stringemail=result.getString(“email”);

        Stringphone=result.getString(“phone”);

        stuff.add(newAddressEntry(name,address,email,phone));  }

        從這段代碼可以看出,如果你是個(gè)非專(zhuān)業(yè)或者頹廢派的開(kāi)發(fā)者,那么肯定沒(méi)有深入理解ORM(對(duì)象關(guān)系映射),這可能是因?yàn)槟憧催^(guò)Hibernate性能問(wèn)題方面的博客,并且受了這方面的影響。但可以肯定,你會(huì)使用JDBC模板或者其他后臺(tái)數(shù)據(jù)庫(kù)操作。

        2.在事務(wù)系統(tǒng)中寫(xiě)PL/SQL

        隨著時(shí)間的推移,業(yè)務(wù)邏輯將會(huì)在RDBMS中表現(xiàn)出來(lái)。設(shè)備事務(wù)也會(huì)移進(jìn)數(shù)據(jù)庫(kù)里面,有些人會(huì)把這些轉(zhuǎn)換成類(lèi)似COBOL的語(yǔ)言,并且綁定觸發(fā)器來(lái)調(diào)用其他通用版程序。換句話(huà)說(shuō),這樣做將會(huì)讓你在短期內(nèi)遇到一些非常棘手的系統(tǒng)遺留問(wèn)題。對(duì)于Oracle投資人來(lái)說(shuō),這或許是件好事,但對(duì)于我們來(lái)說(shuō),就是災(zāi)難。

        3.編寫(xiě)Swing應(yīng)用程序或者調(diào)試

        多年來(lái),我一直認(rèn)為編寫(xiě)GUI代碼是件非常可怕的事情,以至于我從不接觸前端代碼。這或許是因?yàn)镴ava被證明不適合做前端。Swing很慢。當(dāng)然,你也能編寫(xiě)出非常快的Swing代碼,如果你在NetBeans環(huán)境下去編寫(xiě)并且無(wú)需擔(dān)心瀏覽器兼容問(wèn)題、或者砸一堆錢(qián)進(jìn)去……但是,Swing還是很慢。默認(rèn)情況下,GUI的界面也是令人不滿(mǎn)意的。于是,出現(xiàn)了Javasandbox模型……

        4.Cast

        JavaGenerics并非完美,但在處理問(wèn)題時(shí),它卻成了優(yōu)先選擇對(duì)象。這里有一些非常極端的例子,說(shuō)明JavaGenerics并非能夠高效的執(zhí)行。說(shuō)實(shí)話(huà),我也不想這樣說(shuō):

        Foobar=(Foo)FooFactory.get(“bar”);

        不幸地是,有些庫(kù)無(wú)法獲得消息并且還會(huì)代碼泄漏,但可以利用泛型來(lái)編寫(xiě)單元測(cè)試

        5.使用Calendar或Date進(jìn)行日期計(jì)算

        使用JDKDate和Calendar類(lèi)來(lái)處理復(fù)雜的時(shí)間/日期計(jì)算,除了直觀(guān)上的操作外,內(nèi)置類(lèi)僅提供了原始的操作。大家可以使用像JODATime這樣的現(xiàn)代庫(kù)。除非你在x86匯編器上編寫(xiě)應(yīng)用程序。在這種的情況下,你可能很享受使用JDKDate和日歷進(jìn)行計(jì)算。

        6.配置SessionReplication

        所有的分布式緩存產(chǎn)品和項(xiàng)目已改為NoSQL的鍵值存儲(chǔ)。如果我們需要有狀態(tài)的客戶(hù)端并且不使用HttpSession,可以使用AJAX/Javascript,用于高度可靠的可伸縮應(yīng)用程序。

        7.寫(xiě)排序算法

        可怕的是,我很少注意算法類(lèi),甚至編寫(xiě)代碼的人也不會(huì)注意到這些,Java里面已經(jīng)提供了滿(mǎn)足各種需求的排序算法(或者是使用你名字命名的第三方庫(kù))或者他們只是不太關(guān)心Comparable和Comparator是如何實(shí)現(xiàn)的。現(xiàn)在,你可以深入地探討一下,是有益無(wú)害的。

        8.寫(xiě)自己的鏈接列表、棧、堆等

        誠(chéng)然,寫(xiě)一個(gè)基礎(chǔ)的鏈接列表相當(dāng)容易,Wikipedia上就提供了這樣的一個(gè)非常漂亮的頁(yè)面,上面匯集了所有的鏈表代碼。所以,我可以選擇復(fù)制——粘貼。但還是比較喜歡(建議)使用數(shù)據(jù)結(jié)構(gòu),并且一直堅(jiān)持。

        9.編寫(xiě)自己的池、集合或者一般的并發(fā)代碼

        凡是知道DougLea的開(kāi)發(fā)者肯定都很喜歡他。DougLea的java.utl.concurrent集合可以幫你解決很多并發(fā)性問(wèn)題,另外,他還能提供非常好的解決方案。

        10.處理日志框架

        如何拼寫(xiě)單詞,意味著所有的共享日志:SLF4J,例如S-U-CK。這個(gè)問(wèn)題不僅僅是因?yàn)槎嗄昵癝un把Log4J’s接口接入到JDK中,Oracle也編寫(xiě)java.util.logging包進(jìn)行修復(fù)。話(huà)雖如此,但我還是希望大家在suck上面標(biāo)準(zhǔn)化java.util.logging而不是由某個(gè)人提出“明智的解決方案”供大家采用。

      免費(fèi)預(yù)約試聽(tīng)課

      亚洲另类欧美综合久久图片区_亚洲中文字幕日产无码2020_欧美日本一区二区三区桃色视频_亚洲AⅤ天堂一区二区三区

      
      

      1. 亚洲国产中文精品视频 | 亚洲乱码国产乱码精品精 | 中文字幕无线观看中文字幕 | 我不卡Av片在线观看 | 亚洲欧美日韩国产 | 夜色福利院在线看 |