<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Java學(xué)習(xí)

    java,spring,structs,hibernate,jsf,ireport,jfreechart,jasperreport,tomcat,jboss -----本博客已經(jīng)搬家了,新的地址是 http://www.javaly.cn 如果有對(duì)文章有任何疑問或者有任何不懂的地方,歡迎到www.javaly.cn (Java樂園)指出,我會(huì)盡力幫助解決。一起進(jìn)步

     

    Java開發(fā)者需堅(jiān)守的十大基本準(zhǔn)則(zhuan)

    有許多標(biāo)準(zhǔn)和實(shí)踐準(zhǔn)則可適用于Java開發(fā)者,但此處要說的,是每個(gè)Java開發(fā)者需堅(jiān)守的基本原則。
    &A7{Ck B8X0
    ;J'{aaGPi"f-P x0 一、為代碼加注釋。雖然每個(gè)人都知道這點(diǎn),但有時(shí)卻不自覺忘了履行,今天你“忘了”加注釋了嗎?雖然注釋對(duì)程序的功能沒什么“貢獻(xiàn)”,但過一段時(shí)間,比 如說兩星期之后或者更長,回過頭來看看自己的代碼,說不定已經(jīng)記不住它是干什么的了。如果這些代碼是你個(gè)人的,那還算是走運(yùn)了,不幸的是,當(dāng)然了,大多數(shù) 時(shí)候都是別人的不幸,很多時(shí)候大家都是在為公司寫代碼,寫代碼的人也許早已經(jīng)離開了公司,但別忘了一句古話,有來有往嘛,為他人,也為我們自己,請(qǐng)為你的 代碼加上注釋。中文JAVA技術(shù)網(wǎng)F7Kh9C#OyhS6g

    D,fX]m$K(KQ;[4Q0  二、不要讓事情復(fù)雜化。程序員有時(shí)候總是對(duì)簡單問題想出復(fù)雜的解決方案,比如說,在只有五個(gè)用戶的程序中引入EJB、對(duì)程序?qū)崿F(xiàn)了并不需要的框架(framework),之類的還有屬性文件、面向?qū)ο?/strong>解決方案、多線程等等。為什么要這樣做呢?也許我們并不知道是否這樣會(huì)更好,但這樣做也許可以學(xué)到一些新東西,或者讓自己更感興趣一些。如果是不知道為什么這樣做,建議多請(qǐng)教經(jīng)驗(yàn)豐富的程序員,如果是為了個(gè)人的目的,麻煩讓自己更專業(yè)一點(diǎn)。
    3Sp2q$ht0
    D4wb6LN Nn[)Ju9n0  三、始終牢記——“少即是好(Less is more)并不總是對(duì)的”。代碼效率雖然很重要,但在許多解決方案中,編寫更少的代碼并不能改善這些代碼的效率,請(qǐng)看下面這個(gè)簡單的例子:中文JAVA技術(shù)網(wǎng) C0R,B P!I4y
    中文JAVA技術(shù)網(wǎng);M6J9PBXjEvu
    if(newStatusCode.equals("SD") && (sellOffDate == null ||todayDate.compareTo(sellOffDate)<0 || (lastUsedDate != null &&todayDate.compareTo(lastUsedDate)>0)) ||(newStatusCode.equals("OBS") && (OBSDate == null ||todayDate.compareTo(OBSDate)<0))){
    L!p3E/_4R#w(r'@p0~{x7q/n0中文JAVA技術(shù)網(wǎng)C6^v3]"k"Es中文JAVA技術(shù)網(wǎng)"J SYDyu BC U H n]    newStatusCode = "NYP";
    *C&t GZ!p F3m0}中文JAVA技術(shù)網(wǎng)+pqZ$l ?~$TZ)b$o]

    M$p/gg0W*GI }K1z0  能看明白if條件語句是干什么的嗎?能想出來是誰寫的這段代碼嗎?如果把它分成兩段獨(dú)立的if語句,是不是更容易理解呢,下面是修改后的代碼:
    ? vT#p _ @6{4a0中文JAVA技術(shù)網(wǎng)+D*p%y2TrD | [t-|,]
    中文JAVA技術(shù)網(wǎng)O%uT,K7B }&{1o8svif(newStatusCode.equals("SD") && (sellOffDate == null ||todayDate.compareTo(sellOffDate)<0
    中文JAVA技術(shù)網(wǎng)CxAnLS[\h || (lastUsedDate != null &&todayDate.compareTo(lastUsedDate)>0))){
    (w VH)kb"cO0    newStatusCode = "NYP";中文JAVA技術(shù)網(wǎng) F TX-DVC#^
    }
    else{中文JAVA技術(shù)網(wǎng)a TN i#d;Ri
        if(newStatusCode.equals("OBS") && (OBSDate == null ||todayDate.compareTo(OBSDate)<0)){
    #~+g^KqB0中文JAVA技術(shù)網(wǎng)o:oN"{pmz.qH4t\_bl&I^yJ0        newStatusCode = "NYP";
    2o;B6\/{C#m` c.S/v0    }
    }
    2K:M'mvS!Z0^x4F}r0
    *P2m"E0|xy0  是不是讀起來容易多了呢,在此只是多加了一個(gè)if和兩個(gè)花括號(hào),但代碼的可讀性與可理解性就一下子提高了一大截。
    yp#m.R3nU ~fgX7Y0
    7@.Ca&\y1p)Oa!mF0  四、請(qǐng)不要硬編碼。開發(fā)者經(jīng)常有意“忘記”或忽略掉這點(diǎn),因?yàn)橛行r(shí)候開發(fā)日程逼得實(shí)在太緊。其實(shí),多寫一行定義靜態(tài)變量的代碼能花多少時(shí)間呢?中文JAVA技術(shù)網(wǎng)JL,s9e a+R%T8x

    *W0ic%Zgp b?0public class A {
    !|U5]t[,o[-[0    public static final String S_CONSTANT_ABC = "ABC";中文JAVA技術(shù)網(wǎng) g/~"s u"` @XKlZ
        public boolean methodA(String sParam1){中文JAVA技術(shù)網(wǎng)IZ.NO ~(Q$t
            if (A.S_CONSTANT_ABC.equalsIgnoreCase(sParam1)){
    H]/t7O/M um0            return true;中文JAVA技術(shù)網(wǎng)D t7\KX7Pv%[zI
            }中文JAVA技術(shù)網(wǎng)#G-\i!{BEk
            return false;
    c C?A-z(Q9h4b+| a[0    }
    -V%U B c:T0}中文JAVA技術(shù)網(wǎng)a f*ucX
    中文JAVA技術(shù)網(wǎng),M ?Ji#M.dz"b yQ6[L
    現(xiàn)在,每次需要將“ABC”與其他變量進(jìn)行比較時(shí),不必記住實(shí)際代碼,直接引用A.S_CONSTANT_ABC就行了,而且在今后需要進(jìn)行修改時(shí),也可在一處修改,不會(huì)翻遍整個(gè)源代碼逐個(gè)修改了。
    _;z#M;GI}|6m#h:n0
    .\uF}E$\0  五、不要“創(chuàng)造”自己的框架(framework)。確切來說,有數(shù)以千計(jì)的各種框架存在,而且大多數(shù)是開源的,這些框架都是優(yōu)秀的解決方案,可用于日常程序開發(fā)中,我們只需使用這些框架的最新版本就行了,至少表面上要跟上形勢(shì)吧。被大家廣為接受的最為明顯的一個(gè)例子就是Struts了,這個(gè)開源web框架非常適合用在基于web的應(yīng)用程序中。是不是想開發(fā)出自己的Struts呢,還是省點(diǎn)力氣吧,回頭看看第二條——不要讓事情復(fù)雜化。另外,如果正在開發(fā)的程序只有3個(gè)窗口,就不要使用Struts了,對(duì)這種程序來說,不需要那么多的“控制”。
    G$Ig.C+}0中文JAVA技術(shù)網(wǎng) O'CM.DXSy$V&]D
    六、不要使用println及字符串連接。通常為了調(diào)試方便,開發(fā)者喜歡在可能的所有地方都加上System.out.println,也許還會(huì)提醒自 己回過頭來再來刪除,但有些時(shí)候,經(jīng)常會(huì)忘了刪除或者不愿意刪除它們。既然使用System.out.println是為了測(cè)試,那么測(cè)試完之后,為什么 還要留著它們呢,因?yàn)樵趧h除時(shí),很可能會(huì)刪除掉真正有用的代碼,所以不能低估System.out.println危害啊,請(qǐng)看下面的代碼:
    F ]?cIy0中文JAVA技術(shù)網(wǎng)/[C8Md7K
    public class BadCode {中文JAVA技術(shù)網(wǎng)L k"VhV"A:P
        public static void calculationWithPrint(){
    Q Esk POc5\0        double someValue = 0D;
    k qjn!F.Hb+\0        for (int i = 0; i <10000; i++) {中文JAVA技術(shù)網(wǎng).J ZNg#V%I
                System.out.println(someValue = someValue + i);中文JAVA技術(shù)網(wǎng))? {`*Bl8^~"m
                }
    -C(O,gf.Q a:N3^[0       }
    4S.e;LF"@H6Mz0    public static void calculationWithOutPrint(){中文JAVA技術(shù)網(wǎng) c%Gq2hz jJ,E"XA
            double someValue = 0D;
    5^R$_ SYsi0        for (int i = 0; i < 10000; i++) {
    %_,cqV(M Y0            someValue = someValue + i;中文JAVA技術(shù)網(wǎng) H&xVus'B
            }中文JAVA技術(shù)網(wǎng)ur U/qS}]o ah
        }
    R3^ X0KU+]0    public static void main(String [] n) {
    G6WXQxa{0        BadCode.calculationWithPrint();
    $?_ Mk ]jC0        BadCode.calculationWithOutPrint();
    -T3gz!^6zK0      }
    x$x:q g @3I0}中文JAVA技術(shù)網(wǎng)Y-N|_R\p
    中文JAVA技術(shù)網(wǎng)8u9_l?!O q$H,M1C
    從測(cè)試中可以發(fā)現(xiàn),方法calculationWithOutPrint()執(zhí)行用了0.001204秒,作為對(duì)比,方法calculationWithPrint()執(zhí)行可是用了10.52秒。
    U7mcP],{;@r$U0中文JAVA技術(shù)網(wǎng):Z+}V,Ra
    要避免浪費(fèi)CPU時(shí)間,最好的方法是引入像如下的包裝方法:中文JAVA技術(shù)網(wǎng)`_8E7nT
    中文JAVA技術(shù)網(wǎng)6k)WAk }
    public class BadCode {
    yQ(HXs;t(F,qXD0     public static final int DEBUG_MODE = 1;
    N&ox.vAD y0        public static final int PRODUCTION_MODE = 2;
    (L4tph+K MB!A4Z0        public static void calculationWithPrint(int logMode){中文JAVA技術(shù)網(wǎng))b,`?,r&^/`8x,l)];e7rs
            double someValue = 0D;中文JAVA技術(shù)網(wǎng)}4IF#bZf,n
            for (int i = 0; i < 10000; i++) {中文JAVA技術(shù)網(wǎng)"x(}1S T/]$X%};g;FD
                someValue = someValue + i;中文JAVA技術(shù)網(wǎng) P)rS8GG?Jm
                myPrintMethod(logMode, someValue);中文JAVA技術(shù)網(wǎng)(AA_gN{bz#~&f
            }
    A5_x f&~{0    }
    n k!{9~6u%i&d:`0    public static void myPrintMethod(int logMode, double value) {
    \W;J3V b/X @{3h%P2\0        if (logMode > BadCode.DEBUG_MODE) { return; }
    +{t Av|~0        System.out.println(value);中文JAVA技術(shù)網(wǎng)B2D F]0U@8\
        }
    _#If \_~[0    public static void main(String [] n) {
    B*q W.Y"eNx1W(`.QO u0        BadCode.calculationWithPrint(BadCode.PRODUCTION_MODE);
    D&g x3h)e0    }中文JAVA技術(shù)網(wǎng),Qv V`a^&I*N$CVn
    }
    C mo4A`)|1zT,o0中文JAVA技術(shù)網(wǎng) ej!lr6}M,n%z
    另外,字符串連接也是浪費(fèi)CPU時(shí)間的一個(gè)大頭,請(qǐng)看下面的示例代碼:中文JAVA技術(shù)網(wǎng)4T}/D5n7SvI
    中文JAVA技術(shù)網(wǎng)4Qp/b&gyQC;Xb
    public static void concatenateStrings(String startingString) {中文JAVA技術(shù)網(wǎng)$W@0U@9g(eq6bUQ)u1P
        for (int i = 0; i < 20; i++) {中文JAVA技術(shù)網(wǎng)q/_&e x-rc
            startingString = startingString + startingString;中文JAVA技術(shù)網(wǎng)YRTS6pa
        }
    cUV S4c7Y2V }
    O~%ET#@ wC!?\0public static void concatenateStringsUsingStringBuffer(String startingString) {中文JAVA技術(shù)網(wǎng)3C%NZw]ZK y$U
        StringBuffer sb = new StringBuffer();
    UV#wS3B I#f,Z0    sb.append(startingString);
    |0\;?[}0    for (int i = 0; i < 20; i++) {
    4{%Z.e(L2P6_M4U1_(p0    sb.append(sb.toString());
    @#Y*mqE@L!c+X0    }中文JAVA技術(shù)網(wǎng)*aR4J[mhU!u9Vht
    }
    &we2r0u fb~'Nn4o?0
    "_ eu5g B0CI0  在測(cè)試中可發(fā)現(xiàn),使用StringBuffer的方法只用了0.01秒執(zhí)行完畢,而使用連接的方法則用了0.08秒,選擇顯而易見了。
    F(h r|%b2|1N0
    Wu TL;JSl0 七、多關(guān)注GUI(用戶界面)。再三強(qiáng)調(diào),GUI對(duì)商業(yè)客戶來說,與程序的功能及效率同等重要,GUI是一個(gè)成功程序的最基本部分,而很多IT經(jīng)理往往 都沒注意到GUI的重要性。在現(xiàn)實(shí)生活中,許多公司可能為了節(jié)省開支,沒有雇用那些有著設(shè)計(jì)“用戶友好”界面豐富經(jīng)驗(yàn)的網(wǎng)頁設(shè)計(jì)者,此時(shí)Java開發(fā)者只 能依賴他們自身的HTML基本功及在此領(lǐng)域有限的知識(shí),結(jié)果,很多開發(fā)出來的程序都是“計(jì)算機(jī)友好”甚于“用戶友好”。很少有開發(fā)者同時(shí)精通軟件開發(fā)及 GUI設(shè)計(jì),如果你在公司“不幸”被分配負(fù)責(zé)程序界面,就應(yīng)該遵守下面三條原則:
    4y-g#b#Fn N0
    t(x P"GK6EiH'{WY~0  1、 不要再發(fā)明一次輪子,即不做無用功。現(xiàn)有的程序可能會(huì)有類似的界面需求。
    +f7xeO%E)m+_0  2、 先創(chuàng)建一個(gè)原型。這是非常重要一步,用戶一般想看到他們將使用的東西,而且可以先利用這個(gè)原型征求用戶的意見,再慢慢修改成用戶想要的樣子。中文JAVA技術(shù)網(wǎng)!t Z-t@&]:s`
    3、 學(xué)會(huì)換位思考。換句話來說,就是從用戶的角度來審查程序的需求。舉例來講,一個(gè)匯總的窗口可以跨頁或者不跨頁,作為一個(gè)軟件開發(fā)者,可能會(huì)傾向于不跨頁,因?yàn)檫@樣簡單一些。但是,從用戶的角度來看,可能不希望看到上百行數(shù)據(jù)都擠在同一頁上。中文JAVA技術(shù)網(wǎng)3n&z#E;RjYT

    q(sR3U V?z-m0  八、文檔需求不放松。每個(gè)商業(yè)需求都必須記錄在案,這可能聽上去像童話,似乎在現(xiàn)實(shí)生活中很難實(shí)現(xiàn)。而我們要做的是,不管開發(fā)時(shí)間多緊迫,不管最終期限多臨近,對(duì)每個(gè)商業(yè)需求都必須記錄在案。
    +e P1?Tz'U&f6]0中文JAVA技術(shù)網(wǎng) a3E L|TWO2Y3@
    九、單元測(cè)試、單元測(cè)試、單元測(cè)試。關(guān)于什么是單元測(cè)試的最好方法,在此不便細(xì)說,只是強(qiáng)調(diào),單元測(cè)試一定要完成,這也是編程中最基本的原則。當(dāng)然了,如 果有人幫你做單元測(cè)試自然是最好,如果沒有,就自己來做吧,當(dāng)創(chuàng)建一個(gè)單元測(cè)試計(jì)劃時(shí),請(qǐng)遵守以下三條最基本的原則:中文JAVA技術(shù)網(wǎng) d Pc$}8UY0R8V7n

    Sq-P Y`a%J-O0  1、 先于編寫類代碼之前編寫單元測(cè)試。中文JAVA技術(shù)網(wǎng) ]a s ?/NXE4|h
    2、 記錄單元測(cè)試中的代碼注釋。中文JAVA技術(shù)網(wǎng)+A ME9Z%D4@^
    3、 測(cè)試所有執(zhí)行關(guān)鍵功能的公有方法,這里不是指set和get方法,除非它們是以自己獨(dú)特方式執(zhí)行set和get方法。中文JAVA技術(shù)網(wǎng):b7eT z i*P;H
    中文JAVA技術(shù)網(wǎng)hQd8p'e6u y2x
    十、質(zhì)量,而不是數(shù)量。有些時(shí)候因?yàn)楫a(chǎn)品問題、期限緊迫、或一些預(yù)料之外的事情,導(dǎo)致常常不能按時(shí)下班,但一般而言,公司不會(huì)因?yàn)楣蛦T經(jīng)常加班而對(duì)之表 揚(yáng)和獎(jiǎng)勵(lì),公司只看重高質(zhì)量的工作。如果遵守了前九條原則,你會(huì)發(fā)現(xiàn)自己寫出的代碼bug少且可維護(hù)性高,無形中質(zhì)量提高了一大步。 

    posted on 2008-07-18 13:24 找個(gè)美女做老婆 閱讀(168) 評(píng)論(0)  編輯  收藏


    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     

    導(dǎo)航

    統(tǒng)計(jì)

    • 隨筆 - 172
    • 文章 - 92
    • 評(píng)論 - 93
    • 引用 - 0

    公告

    本blog已經(jīng)搬到新家了, 新家:www.javaly.cn
     http://www.javaly.cn

    常用鏈接

    留言簿(6)

    隨筆檔案

    文章檔案

    搜索

    •  

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    主站蜘蛛池模板: 国产日韩精品无码区免费专区国产 | 国产免费黄色无码视频 | 4399好看日本在线电影免费| 亚洲av无码片在线播放| 成人A毛片免费观看网站| 在线观看亚洲av每日更新| 一级毛片在线完整免费观看| 亚洲 无码 在线 专区| 三级片免费观看久久| 亚洲日本中文字幕天堂网| 一级做a爰黑人又硬又粗免费看51社区国产精品视 | 日本免费一区二区三区最新vr| 亚洲日韩精品国产3区| 国产片免费福利片永久| 免费人成再在线观看网站| 国产亚洲精品AA片在线观看不加载 | 亚洲精品在线观看视频| 精品熟女少妇av免费久久| 亚洲人成综合网站7777香蕉| 爽爽日本在线视频免费| 香港经典a毛片免费观看看| 亚洲免费观看视频| 久久精品国产免费观看三人同眠 | 亚洲人成网站观看在线播放| 国产免费内射又粗又爽密桃视频 | 亚洲制服丝袜在线播放| 啦啦啦在线免费视频| 一道本在线免费视频| 久久夜色精品国产亚洲AV动态图| 222www免费视频| 亚洲av无码日韩av无码网站冲| 免费观看午夜在线欧差毛片| 香蕉免费一级视频在线观看| 亚洲成人网在线播放| 国产精品酒店视频免费看| 国产高潮久久免费观看| 亚洲欧洲精品视频在线观看| 日本免费网站观看| 两个人看www免费视频| 亚洲综合色区中文字幕| 亚洲中文字幕无码久久2017|