亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Java > 正文

Java開發人員需知的十大戒律

2019-11-26 14:54:45
字體:
來源:轉載
供稿:網友

本文講述了Java開發人員需知的十大戒律。分享給大家供大家參考,具體如下:

作為一個Java開發人員提高自己代碼的質量,可維護性,是個恒久不變的話題,網上看到這篇文章,拿來自勉。

對Java開發者來說,有許多的標準和最佳實踐。本文列舉了每一個開發人員必須遵從的十大基本法則;如果有了可以遵從的規則而不遵從,那么將導致的是十分悲慘的結局。

1. 在你的代碼里加入注釋

每個人都知道這點,但不知何故忘記了遵守。算一算有多少次你“忘記”了添加注釋?這是事實:注釋對程序在功能上沒有實質的貢獻。但是,你需要一次又一次的回到你兩個禮拜之前寫的代碼上來,可能一輩子都是這樣,你一定記不住這些代碼為什么會這樣。如果這些代碼是你的,你還比較的幸運。因為它有可能讓你回憶起。但是不幸的是,很多時間,這些代碼是別人的,而且很有可能他已經離開了公司。

2. 不要讓事情復雜化

我以前就這么干過,而且我相信所有的人都這么干過。開發人員常常為一個簡單的問題而提出一個解決方案。我們為僅僅只有5個用戶的應用而引入EJBs。我們為一個應用使用框架而它根本不需要。我們加入屬性文件,面向對象的解決方案,和線程到應用中,但是它根本不需要這些。為什么我們這樣做?我們中的一些人是因為不知道怎么做更好,但是還有一些人這樣做的目的是為了學習新的知識,從而使得這個應用對于我們自己來說做得比較有趣。

3. 牢牢記住――“少即是多(less is more)”并不永遠是好的

代碼的效率是一偉大的事情,但是在很多情況下,寫更少的代碼行并不能提高該代碼的效率。請讓我向你展示一個簡單的例子。

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條件想干什么容易嗎?現在,我們再來假設無論是誰寫出這段代碼,而沒有遵從第一條規則――在你的代碼里加入注釋。
如果我們把這個條件分到兩個獨立的if陳述句中,難道不是更簡單一些嗎?現在,考慮下面的修正代碼:

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";}

難道它不是有了更好的可讀性?是的,我們重復了陳述條件。是的,我們多出了一個多余的“IF”和兩對多余的括弧。但是代碼有了更好的可讀性和可理解性。

4. 請不要有硬代碼

開發人員常常有意識的忘記或者忽視這條規則,原因是我們,和一般時候一樣,在趕時間。如果我們遵從這條規則,我們可能會趕不上進度。我們可能不能結束我們的當前狀態。但是寫一條額外的定義靜態常量的代碼行又能花費我們多少時間呢?
這里有一個例子。

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;  }}

現在,每一次我們需要和某一些變量比較字符串“ABC”的時候,我們只需要引用S_CONSTANT_ABC,而不是記住實際的代碼是什么。它還有一個好處是:更加容易在一個地方修改常量,而不是在所有的代碼中尋找這個代碼。

5. 不要發明你自己的frameworks

已經推出了幾千種frameworks,而且它們中的大多數是開源的。這些frameworks中間有很多是極好的解決方案,被應用到成千上萬的應用中。你們需要跟上這些新frameworks的步伐,最起碼是膚淺的。在這些極好的、應用廣泛的frameworks中間,一個最好的、最直接的例子是Struts。在你所能想象到的frameworks中,這個開源的web frameworks對于基于web的應用是一個完美的候選者。但是你必須記住第二條規則――不要讓事情復雜化。如果你開發的應用只有三個頁面―請,不要使用Struts,對于這樣一個應用,沒有什么“控制”請求的。

6. 不要打印行和字符串相加

我知道,為了調試的目的,開發人員喜歡在每一個我們認為適合的地方添加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秒。相比較而言,運行calculationWithPrint()方法花了令人驚訝的10.52秒。

(如果你不知道怎么得到一個像這樣的表格,請參閱我的文章“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); }}

在下面的圖中,你將看到,使用了StringBuffer的那個方法只花了0.01秒來執行,而那個使用了字符串相加的方法卻花了0.08秒來運行。選擇是顯而易見的。

7. 關注GUI

不管這聽起來有多么可笑,我都要再三地說明:GUI對于商業客戶來說和功能和性能一樣重要。GUI是一個成功的系統的必要的一部分。(但是),IT雜志常常傾向于忽視GUI的重要性。很多機構為了省錢而不雇用那些在設計“用戶友好”GUI方面有豐富經驗的設計人員。Java開發人員不得不依賴他們自己的HTML知識,但是他們在這方面的知識十分有限。我看到過很多這樣的應用:它們是“計算機友好”,而不是“用戶友好”我很少很少能看到有開發人員既精通軟件開發,又精通GUI開發。如果你是那個不幸的開發人員,被分配去開發用戶接口,你應該遵從以下的三條原則:

一、不要重復發明輪子。尋找有相似用戶接口需求的已經存在的系統。
二、首先創建一個原型。這是非常重要的步驟??蛻粝矚g看看他們將要得到什么。這對你來說也是很好的,因為在你全力以赴而做出一個將要使用戶生氣的用戶接口之前,你就得到了它們的反饋。
三、戴用戶的帽子。換一句話說,站在用戶的視角檢查應用的需求。例如,一個總結頁面到底要不要分頁。作為一個軟件開發者,你傾向于在一個系統中忽視分頁,因為這樣使得你有比較少的開發復雜性。但是,這對于從一個用戶的視角來說卻不是最好的解決方案,因為小結的數據將會有成百上千個數據行。

8. 永遠準備文檔化的需求

每一個業務需求都必須文檔化。這可能在一些童話故事里才能成真,但是在現實世界卻不可能。不管時間對于你的開發來說是多么緊迫,也不管交付日期馬上就要到來,你永遠都必須清楚,每一個業務需求是文檔化的。

9. 單元測試、單元測試、單元測試

我將不會深入地討論哪些什么是把你的代碼進行單元測試的最佳方法的細節問題。我將要說的是單元測試必須要做。這是編程的最基本的法則。這是上面所有法則中最不能被忽略的一個。如果你的同事能為你的代碼創建和測試單元測試,這是最好不過的事。但是如果沒有人為你做這些事,那么你就必須自己做。在創建你的單元測試計劃的時候,遵從下面的這些規則:

一、在寫代碼之前就寫單元測試用例。
二、在單元測試里寫注釋。
三、測試一切執行“interesting”功能的公有方法(“interesting”的意思是非setters或getters方法,除非它們通過一種特殊的方式執行set和get方法)。

10. 記住―質量,而不是數量。

不要在辦公室里呆得太晚(當你不必呆的太晚的時候)。我理解有時,產品的問題、緊迫的最終期限、意想不到的事件都會阻止我們按時下班。但是,在正常情況下,經理是不會賞識和獎賞那些下班太晚的員工的,他賞識他們是因為他們所做產品的質量。如果你遵從了我上面給出的那些規則,你將會發現你的代碼更加少的bug,更加多的可維護性。而這才是你的工作的最重要的部分。

總結

在這篇文章里,我給出了針對Java開發人員的十個重要的規則。重要的不僅僅是知道這些規則,在編碼的過程中遵從這些規則更為重要。希望這些規則能夠幫助我們成為更好的編程人員和專業人員。

希望本文所述對大家Java程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲一区二区三区视频播放| 97在线观看视频| 欧美性色视频在线| 高跟丝袜欧美一区| 国内精品久久久久久影视8| 国产精品亚洲激情| 性欧美xxxx| 欧美野外wwwxxx| 日韩午夜在线视频| 色偷偷av一区二区三区乱| 51精品国产黑色丝袜高跟鞋| 亚洲精品理论电影| 亚洲图片制服诱惑| 亚洲免费视频在线观看| 九九精品在线播放| 欧美日韩免费区域视频在线观看| 国产成人精品免费久久久久| 热99在线视频| 成人久久一区二区| 色视频www在线播放国产成人| 欧美日韩国产影院| 亚洲成人精品视频| 亚洲第一网站免费视频| 美女福利视频一区| 欧美另类暴力丝袜| 国产一区二区美女视频| 青草青草久热精品视频在线网站| 精品女厕一区二区三区| 4444欧美成人kkkk| 欧美性xxxxxxxxx| 久久久av一区| 欧美另类99xxxxx| 欧美电影免费观看高清完整| 3344国产精品免费看| 97婷婷大伊香蕉精品视频| www.亚洲一二| 久久久久久久一区二区| 国产精品福利在线观看网址| 美日韩精品视频免费看| 高跟丝袜一区二区三区| 国产精品高清网站| 久久99久久久久久久噜噜| 欧美专区在线观看| 亚洲第一精品久久忘忧草社区| 亚洲加勒比久久88色综合| 狠狠色狠色综合曰曰| 久久精品国产久精国产一老狼| 国产精品网站大全| 中文字幕日韩有码| 欧美日韩激情美女| 国产精品视频地址| 日韩网站免费观看| 欧美日韩国产成人在线| 视频在线一区二区| 久久久久久久久久国产精品| 91在线观看欧美日韩| 日韩精品视频免费专区在线播放| 国产日韩欧美影视| 亚洲欧美三级在线| 久久这里只有精品99| 日本一欧美一欧美一亚洲视频| 亚洲国产欧美久久| 91在线精品播放| 欧美不卡视频一区发布| 亚洲一区二区福利| 黄色精品一区二区| 国产成人精品在线| 亚洲aⅴ男人的天堂在线观看| 91沈先生作品| 国产97在线亚洲| 亚洲综合自拍一区| 欧美自拍视频在线观看| 色一情一乱一区二区| 国内免费精品永久在线视频| 欧美激情亚洲综合一区| 国产一区二区视频在线观看| 欧美日韩国产精品| 成人福利视频在线观看| 亚洲最大福利视频网站| 欧美性猛交99久久久久99按摩| 国产成人精品一区二区三区| www.日韩.com| 亚洲第一国产精品| 日韩精品极品视频免费观看| 国产精品激情av电影在线观看| 久久五月情影视| 3344国产精品免费看| 亚洲精品91美女久久久久久久| 97视频在线观看播放| 91国内精品久久| 久久久精品久久| 国产精品尤物福利片在线观看| 欧美人与性动交a欧美精品| 日本不卡高字幕在线2019| 中文字幕亚洲天堂| 国产69精品久久久久9999| 亚洲欧美日韩精品久久奇米色影视| 午夜精品一区二区三区在线视| 国产在线高清精品| 日韩av手机在线看| 久久91精品国产| 国外色69视频在线观看| 欧美怡春院一区二区三区| 精品一区二区三区三区| 欧美成人午夜激情| 国产精品一久久香蕉国产线看观看| 久久免费福利视频| 日本不卡高字幕在线2019| 久久男人av资源网站| 国产午夜精品一区理论片飘花| 国产亚洲精品久久| 性色av一区二区咪爱| 这里只有精品视频| 亚洲色无码播放| 欧美第一淫aaasss性| 色噜噜狠狠狠综合曰曰曰| 国产精品老女人视频| 91国产中文字幕| 精品调教chinesegay| 日韩av在线天堂网| 国产丝袜一区视频在线观看| 国内免费精品永久在线视频| 亚洲丁香婷深爱综合| 久久成人国产精品| 亚洲精品日韩丝袜精品| 国产九九精品视频| 色噜噜狠狠狠综合曰曰曰| 国内精品视频久久| 美女视频黄免费的亚洲男人天堂| 亚洲石原莉奈一区二区在线观看| 欧美激情精品久久久| 精品一区二区电影| 欧美激情视频网址| 久久久久久久久久久久久久久久久久av| 国产专区欧美专区| 亚洲小视频在线观看| 久久精品美女视频网站| 国产亚洲精品高潮| 欧美日韩国产在线| 欧美猛男性生活免费| 色婷婷**av毛片一区| 中文字幕一区电影| 亚洲欧洲国产一区| 亚洲欧美日本伦理| 亚洲欧美另类人妖| 久久久999国产精品| 国自产精品手机在线观看视频| 在线播放日韩精品| 狠狠久久亚洲欧美专区| 91成人在线观看国产| 国产精品色午夜在线观看| 日韩亚洲第一页| 亚洲精品www久久久久久广东| 国产精品极品尤物在线观看| 久久久亚洲欧洲日产国码aⅴ| 亚洲男人的天堂在线播放| 欧美日韩国产成人在线| xxx一区二区| 欧美日韩另类字幕中文| 色婷婷久久一区二区| 国产欧美一区二区三区久久| www国产亚洲精品久久网站| 日本一本a高清免费不卡| 日韩av网站导航|