由于移動互聯(lián)網(wǎng)的方興未艾,作為移動互聯(lián)網(wǎng)開發(fā)的重要組成部分,Java開發(fā)目前也是行業(yè)當(dāng)中的熱門。那么在Java開發(fā)過程中,開發(fā)者應(yīng)該注意哪些問題呢?中培偉業(yè)《JAVA高級開發(fā)技術(shù)實戰(zhàn)》課程培訓(xùn)專家程老師在這里為大家詳細(xì)進(jìn)行介紹。
1. 在你的代碼里加入注釋
每個人都知道這點,但不知何故忘記了遵守。算一算有多少次你“忘記”了添加注釋?這是事實:注釋對程序在功能上沒有實質(zhì)的貢獻(xiàn)。但是,你需要一次又一次的回到你兩個禮拜之前寫的代碼上來,可能一輩子都是這樣,你一定記不住這些代碼為什么會這樣。如果這些代碼是你的,你還比較的幸運(yùn)。因為它有可能讓你回憶起。但是不幸的是,很多時間,這些代碼是別人的,而且很有可能他已經(jīng)離開了公司。
2. 不要讓事情復(fù)雜化
我以前就這么干過,而且我相信所有的人都這么干過。開發(fā)人員常常為一個簡單的問題而提出一個解決方案。我們?yōu)閮H僅只有5個用戶的應(yīng)用而引入EJBs。我們?yōu)橐粋€應(yīng)用使用框架而它根本不需要。我們加入屬性文件,面向?qū)ο蟮慕鉀Q方案,和線程到應(yīng)用中,但是它根本不需要這些。為什么我們這樣做?我們中的一些人是因為不知道怎么做更好,但是還有一些人這樣做的目的是為了學(xué)習(xí)新的知識,從而使得這個應(yīng)用對于我們自己來說做得比較有趣。
3. 牢牢記住——“少即是多(less is more)”并不永遠(yuǎn)是好的
代碼的效率是一偉大的事情,但是在很多情況下,寫更少的代碼行并不能提高該代碼的效率。說出上面的那段代碼的if條件想干什么容易嗎?現(xiàn)在,我們再來假設(shè)無論是誰寫出這段代碼,而沒有遵從第一條規(guī)則——在你的代碼里加入注釋。
如果我們把這個條件分到兩個獨(dú)立的if陳述句中,難道不是更簡單一些嗎?
難道它不是有了更好的可讀性?是的,我們重復(fù)了陳述條件。是的,我們多出了一個多余的“IF”和兩對多余的括弧。但是代碼有了更好的可讀性和可理解性。
4. 請不要有硬代碼
開發(fā)人員常常有意識的忘記或者忽視這條規(guī)則,原因是我們,和一般時候一樣,在趕時間。如果我們遵從這條規(guī)則,我們可能會趕不上進(jìn)度。我們可能不能結(jié)束我們的當(dāng)前狀態(tài)。但是寫一條額外的定義靜態(tài)常量的代碼行又能花費(fèi)我們多少時間呢?
現(xiàn)在,每一次我們需要和某一些變量比較字符串“ABC”的時候,我們只需要引用S_CONSTANT_ABC,而不是記住實際的代碼是什么。它還有一個好處是:更加容易在一個地方修改常量,而不是在所有的代碼中尋找這個代碼。
5. 不要發(fā)明你自己的frameworks
已經(jīng)推出了幾千種frameworks,而且它們中的大多數(shù)是開源的。這frameworks中間有很多是極好的解決方案,被應(yīng)用到成千上萬的應(yīng)用中。你們需要跟上這些新frameworks的步伐,最起碼是膚淺的。在這些極好的、應(yīng)用廣泛的frameworks中間,一個最好的、最直接的例子是Struts。在你所能想象到的frameworks中,這個開源的web frameworks對于基于web的應(yīng)用是一個完美的候選者。但是你必須記住第二條規(guī)則——不要讓事情復(fù)雜化。如果你開發(fā)的應(yīng)用只有三個頁面—請,不要使用Struts,對于這樣一個應(yīng)用,沒有什么“控制”請求的。
6. 不要打印行和字符串相加
為了調(diào)試的目的,開發(fā)人員喜歡在每一個我們認(rèn)為適合的地方添加System.out.println,而且我們會對我們自己說,會在以后刪掉這些代碼的。但是我們常常忘掉刪去這些代碼行,或者我們根本就不想刪掉它們。我們使System.out.println來測試,當(dāng)我們測試完成以后,為什么我們還能接觸到它們呢?我們可能刪掉一行我們實際需要的代碼,僅僅是因為你低估了System.out.println所帶來的傷害。
7. 關(guān)注GUI
不管這聽起來有多么可笑,我都要再三地說明:GUI對于商業(yè)客戶來說和功能和性能一樣重要。GUI是一個成功的系統(tǒng)的必要的一部分。(但是),IT雜志常常傾向于忽視GUI的重要性。很多機(jī)構(gòu)為了省錢而不雇用那些在設(shè)計“用戶友好”GUI方面有豐富經(jīng)驗的設(shè)計人員。Java開發(fā)人員不得不依賴他們自己的HTML知識,但是他們在這方面的知識十分有限。我看到過很多這樣的應(yīng)用:它們是“計算機(jī)友好”,而不是“用戶友好”我很少很少能看到有開發(fā)人員既精通軟件開發(fā),又精通GUI開發(fā)。如果你是那個不幸的開發(fā)人員,被分配去開發(fā)用戶接口,你應(yīng)該遵從以下的三條原則:
(一)、不要重復(fù)發(fā)明輪子。尋找有相似用戶接口需求的已經(jīng)存在的系統(tǒng)。
(二)、首先創(chuàng)建一個原型。這是非常重要的步驟。客戶喜歡看看他們將要得到什么。這對你來說也是很好的,因為在你全力以赴而做出一個將要使用戶生氣的用戶接口之前,你就得到了它們的反饋。
(三)、戴用戶的帽子。換一句話說,站在用戶的視角檢查應(yīng)用的需求。例如,一個總結(jié)頁面到底要不要分頁。作為一個軟件開發(fā)者,你傾向于在一個系統(tǒng)中忽視分頁,因為這樣使得你有比較少的開發(fā)復(fù)雜性。但是,這對于從一個用戶的視角來說卻不是最好的解決方案,因為小結(jié)的數(shù)據(jù)將會有成百上千個數(shù)據(jù)行。
8. 永遠(yuǎn)準(zhǔn)備文檔化的需求
每一個業(yè)務(wù)需求都必須文檔化。這可能在一些童話故事里才能成真,但是在現(xiàn)實世界卻不可能。不管時間對于你的開發(fā)來說是多么緊迫,也不管交付日期馬上就要到來,你永遠(yuǎn)都必須清楚,每一個業(yè)務(wù)需求是文檔化的。
9. 單元測試、單元測試、單元測試
我將不會深入地討論哪些什么是把你的代碼進(jìn)行單元測試的最佳方法的細(xì)節(jié)問題。我將要說的是單元測試必須要做。這是編程的最基本的法則。這是上面所有法則中最不能被忽略的一個。如果你的同事能為你的代碼創(chuàng)建和測試單元測試,這是最好不過的事。但是如果沒有人為你做這些事,那么你就必須自己做。在創(chuàng)建你的單元測試計劃的時候,遵從下面的這些規(guī)則:
(一)、在寫代碼之前就寫單元測試用例。
(二)、在單元測試?yán)飳懽⑨尅?/p>
(三)、測試一切執(zhí)行“interesting”功能的公有方法(“interesting”的意思是非setters或getters方法,除非它們通過一種特殊的方式執(zhí)行set和get方法)。
10. 記住—質(zhì)量,而不是數(shù)量。
不要在辦公室里呆得太晚(當(dāng)你不必呆的太晚的時候)。我理解有時,產(chǎn)品的問題、緊迫的最終期限、意想不到的事件都會阻止我們按時下班。但是,在正常情況下,經(jīng)理是不會賞識和獎賞那些下班太晚的員工的,他賞識他們是因為他們所做產(chǎn)品的質(zhì)量。如果你遵從了我上面給出的那些規(guī)則,你將會發(fā)現(xiàn)你的代碼更加少的bug,更加多的可維護(hù)性。而這才是你的工作的最重要的部分。