您好,登錄后才能下訂單哦!
本篇內(nèi)容主要講解“Java開發(fā)者需要知道的十條法則”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Java開發(fā)者需要知道的十條法則”吧!
1.給你的代碼加注解
每個人都知道這一點,但是總會有人忘記遵守。你有多少次“忘記”加注解了?的卻不加文字注解有助于程序的功能性。但是一次又一你返回兩星期前寫的代碼,結(jié)果你想不起來那是什么了!如果這個未注解的代碼確實是你寫的那你就是幸運的了。因為在那些代碼中可以喚起你的記憶。不幸的是,大多數(shù)的時候代碼是別人寫的,而且他已將離開了公司!有句諺語是這樣說的“自己的事情自己做”。所以為了別人或是我們自己考慮,在你的代碼上加上注解吧。
2.別把事情復(fù)雜化
開發(fā)者喜歡把簡單的問題用很復(fù)雜的方法來解決。我們介紹EJBs到有五個用戶的應(yīng)用程序中。我們完成一個框架結(jié)構(gòu)那是應(yīng)用程序所不需要的。我們添加屬性文件,目標源方案到本不需要這些東西的應(yīng)用程序中。為什么我們要這樣做呢?一些人是不知道如何去做,而一些人故意這么做是想去學習新的東西,想讓我們感興趣。對于那些不知道如何去做的人,我建議去向經(jīng)驗豐富的編程人員去詢問。而對于那些喜歡把應(yīng)用程序設(shè)計搞復(fù)雜的人,我的建議還是要更專業(yè)一些來處理問題。
3.記住—“少即是多”不見得是件好事。
—代碼效率是件非常好的事情,但是很多情況下少寫幾行代碼并不能提高代碼工作的效率。舉個簡單的例子:
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))){ newStatusCode = "NYP";}
查出“if”條件下在做什么是多么簡單的事情?現(xiàn)在想象一下寫這個代碼的人,沒有遵守***個規(guī)則-給代碼加注解 。如果我們把這個情況分成兩個獨立的if語句豈不是更簡單一些么?現(xiàn)在看一下修改后的代碼:
if(newStatusCode.equals("SD") && (sellOffDate == null || todayDate.compareTo(sellOffDate)<0 || (lastUsedDate != null && todayDate.compareTo(lastUsedDate)>0))){ newStatusCode = "NYP"; }else if(newStatusCode.equals("OBS") && (OBSDate == null || todayDate.compareTo(OBSDate)<0)) { newStatusCode = "NYP";}
是不是更清晰了?是的,我們在重復(fù)一下。我們有另一個“IF” 和兩個額外的括號,但是這個代碼更容易讀懂了!
4.不要有難懂的代碼
開發(fā)者經(jīng)常忘記這一點或是忽略故意忽略這條規(guī)則,因為通常我們都在趕時間。但是如果我們能遵守這個規(guī)則,我們就不會終止我們所處的形勢了。要花多長時間去寫入另外一行***定義的靜態(tài)變量代碼呢?
舉個例子:
public class A { public static final String S_CONSTANT_ABC = "ABC"; public boolean methodA(String sParam1){ if (A.S_CONSTANT_ABC.equalsIgnoreCase(sParam1)){ return true; } return false; }}
現(xiàn)在每當我們需要文字“ABC”和一些變量作比較,我們可以參考A.S_CONSTANT_ABC而不是回憶實際的代碼是什么。在一個地方不斷的修改要比在所有代碼中尋找要容易得多。
5.不要發(fā)明自己的框架結(jié)構(gòu)
有數(shù)以千計的框架結(jié)構(gòu)而其大多數(shù)都是開放源。許多框架結(jié)構(gòu)是被用在數(shù)以千計的應(yīng)用程序中的優(yōu)秀的解決方案。至少在表面我們需要用上新的框架結(jié)構(gòu)。其中***的也是廣發(fā)應(yīng)用的框架結(jié)構(gòu)的例子就是Struts.這個開放源web結(jié)果框架是一個非常好的候選者來用于web-based 應(yīng)用程序。請不要用自己版本的Strut,你將會在嘗試中死去。但是你必須記住規(guī)則2—別把事情復(fù)雜化。如果你的應(yīng)用程序要開發(fā)3個screen-請不要用Struts,目前還沒有像這樣的應(yīng)用程序的“控制”需求。
6.要對打印線和字符串串聯(lián)說“不”
我知道在以調(diào)試為目,開發(fā)者喜歡到處在我們覺得適合的地方添加System.out.println.又自言自語的說一會兒我們會刪除這些的。但是我們總是忘記刪除這些代碼行或者不想去刪除它們。我們用System.out.println來進行測試,為什么我們在測試完成后才觸及這些代碼呢?我們可能會刪除一行代碼當我們確實要這么做的時候!只要你不要低估System.out.println 的破壞,看以下的代碼:
public class BadCode { public static void calculationWithPrint(){ double someValue = 0D; for (int i = 0; i < 10000; i++) { System.out.println(someValue = someValue + i); }} public static void calculationWithOutPrint(){ double someValue = 0D; for (int i = 0; i < 10000; i++) { someValue = someValue + i;}} public static void main(String [] n) { BadCode.calculationWithPrint(); BadCode.calculationWithOutPrint(); }}
在上面所顯示的,你能觀察到calculationWithOutPrint()用了0.001204秒運行。相比之下,用了驚人的10.52秒去運行calculationWithPrint() method.
(如果你想要知道如何制作這個的表格,請閱讀我的文章題目是"Java Profiling with WSAD" Java Profiling with WSAD)
***的像避免CPU浪費的方法是去引用像這樣的包裝方法:
public class BadCode { public static final int DEBUG_MODE = 1; public static final int PRODUCTION_MODE = 2; public static void calculationWithPrint(int logMode){ double someValue = 0D; for (int i = 0; i < 10000; i++) { someValue = someValue + i; myPrintMethod(logMode, someValue); } } public static void myPrintMethod(int logMode, double value) { if (logMode > BadCode.DEBUG_MODE) { return; } System.out.println(value); } public static void main(String [] n) { BadCode.calculationWithPrint(BadCode.PRODUCTION_MODE); } } String concatenation is another CPU waster. Consider example below: public static void concatenateStrings(String startingString) { for (int i = 0; i < 20; i++) { startingString = startingString + startingString; } } public static void concatenateStringsUsingStringBuffer( String startingString) { StringBuffer sb = new StringBuffer(); sb.append(startingString); for (int i = 0; i < 20; i++) { sb.append(sb.toString());}}
在以下的數(shù)據(jù)中能看到該方法用StringBuffer花了。01秒去執(zhí)行而同時用字符串串聯(lián)的方法用了。08秒去執(zhí)行。選擇是很明顯的。
7.關(guān)注GUI
無論聽起來有多么荒謬,我要一再指出的是GUI的功能和運行情況和商業(yè)客戶是同等重要的。GUI是一個成功的應(yīng)用程序的重要組成部分。 IT管理總是忽略GUI的重要性。許多機構(gòu)省錢的方式是不雇用設(shè)計“user-friendly”應(yīng)用程序有經(jīng)驗的網(wǎng)絡(luò)設(shè)計師。Java開發(fā)者不得不依賴于他們自己的HTML技術(shù)和在此領(lǐng)域的那點局限性知識。我見過太多的應(yīng)用程序是 “computer friendly”而不是 “ user friendly”。很少看到有開發(fā)者在軟件開發(fā)和GUI開發(fā)兩者都同樣精通的。如果你是那個不幸的被指定去創(chuàng)建一個應(yīng)用程序界面的Java開發(fā)者,你可以遵循這三個規(guī)則:
1. 不要重新發(fā)明車輪。尋找現(xiàn)有的有類似接口需求的應(yīng)用程序。
2. 先創(chuàng)建個雛形。這是非常重要的步驟??蛻粝胍吹剿麄兡艿玫叫┦裁?。這樣對你來說是有意的,是因為在你全力以赴工作之前可以得到客戶的要求并且可以創(chuàng)建一個應(yīng)用程序界面,這樣可以讓客戶冷靜下來。
3. 帶上用戶的帽子。換句話說,就是需要從用戶的角度來檢查應(yīng)用程序的需求。例如,一個總結(jié)性的screen可以用標頁的方式來創(chuàng)建。作為一個軟件開發(fā)人員,允許從應(yīng)用程序中忽略標記很讓人惱火,因為它確實有一點復(fù)雜。但是,從客戶的角度來看,可能不是很好的解決方案,因為總結(jié)的結(jié)果可以容納數(shù)百個數(shù)據(jù)行。
8. 時刻準備文件需求
每一商業(yè)需求都要記錄在案。這個在一些童話故事里是正確的,但是遠離了現(xiàn)實世界。無論你的開發(fā)有多么的時間緊迫,無論你的***期限要求的多么嚴格,你必須確保每個商業(yè)需求都是被記錄在案的。
9.單元測試。
單元測試,單元測試—我就不詳細的說明什么是做你的代碼單元測試的***方法。我只是想說的是必須要這么做。這是編程中最基本的規(guī)則。這是一個首先就不能被忽視的規(guī)則。如果你的下一個開發(fā)人員可以創(chuàng)建并為你的代碼執(zhí)行測試計劃,那是在是太棒了。但是如果不可能,那你必須自己來做。建立一個單元測試計劃,遵循以下這些基本規(guī)則:
1. 在寫代碼之前為分類測試寫一個單元測試計劃。
2. 在單元測試中獲取代碼注解。
3. 執(zhí)行一個“有趣的”功能測試所有的公開的方法(也就是說,沒有獲得者和設(shè)置者,除非他們用一些獨特方法來進行他們的獲取和設(shè)置。)
10. 記住質(zhì)量,不是數(shù)量;不要呆得太晚(如果你不需要這么做)。
我理解有時候產(chǎn)品問題,緊迫的***期限和不希望發(fā)生的一些事情會阻止我們不能按時離開工作崗位。但是,經(jīng)理們是不會感謝和報答他們的員工因為他們總是呆得時間太長,他們感謝員工是因為他們做了高質(zhì)量的工作。如果你遵循以上所提到的這些規(guī)則,你將會發(fā)現(xiàn)你產(chǎn)生很少的bug,獲得更多的可維護的代碼。這是你工作中最重要的部分。
到此,相信大家對“Java開發(fā)者需要知道的十條法則”有了更深的了解,不妨來實際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進入相關(guān)頻道進行查詢,關(guān)注我們,繼續(xù)學習!
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。