明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

給JAVA設(shè)計(jì)開(kāi)發(fā)新手的一些建議與意見(jiàn)(1)

[摘要]為了給朋友同事一些設(shè)計(jì)問(wèn)題上的指導(dǎo),特撰寫(xiě)此文,很多觀點(diǎn)都是從別人的文章中獲取,有些觀點(diǎn)肯定也有偏頗,有些觀點(diǎn)也僅僅是提出并沒(méi)有做詳細(xì)論述,請(qǐng)多拍磚,以便改正。   【概述】   -------   在工作中,作為一個(gè)程序員或者一個(gè)設(shè)計(jì)師,總是要設(shè)計(jì)一些函數(shù)庫(kù)或者一個(gè)框架,當(dāng)然最經(jīng)常的還是做項(xiàng)目,...
為了給朋友同事一些設(shè)計(jì)問(wèn)題上的指導(dǎo),特撰寫(xiě)此文,很多觀點(diǎn)都是從別人的文章中獲取,有些觀點(diǎn)肯定也有偏頗,有些觀點(diǎn)也僅僅是提出并沒(méi)有做詳細(xì)論述,請(qǐng)多拍磚,以便改正。

  【概述】
  -------
  在工作中,作為一個(gè)程序員或者一個(gè)設(shè)計(jì)師,總是要設(shè)計(jì)一些函數(shù)庫(kù)或者一個(gè)框架,當(dāng)然最經(jīng)常的還是做項(xiàng)目,即使是一個(gè)項(xiàng)目,也會(huì)被經(jīng)常改動(dòng),甚至交給別人改動(dòng)。
  當(dāng)你做這些工作的時(shí)候,你的這些成果都是要給別人了解使用的,或者說(shuō)給以后的你使用的,為了別人的方便或者為了自己的方便,我們要盡可能做好設(shè)計(jì)。
  

  【放正心態(tài),任何東西都是不斷發(fā)展的】
  ----------------------------------

  技術(shù)是日新月異的,每一天都有新的技術(shù)出來(lái),正所謂"山外有山,人外有人",每一個(gè)新的輪子出來(lái),都可能比你要設(shè)計(jì)的輪子好,所以在設(shè)計(jì)的時(shí)候,應(yīng)該了解一下是否已經(jīng)有了類似的輪子,是否要設(shè)計(jì)一個(gè)新的輪子。

  即使你的輪子已經(jīng)設(shè)計(jì)好了,也不好認(rèn)為自己的輪子一定比別人的輪子好,雖然你的輪子可能更適合你的實(shí)際使用。

  技術(shù)在不斷的發(fā)展中,你以及你的朋友/同事都在不斷進(jìn)步,"士別三日,當(dāng)刮目相看",所以不要認(rèn)為你的水平一定比別人高,"尺有所短,寸有所長(zhǎng)",所以別人對(duì)你的函數(shù)庫(kù)/框架提出意見(jiàn),提出疑問(wèn)的時(shí)候,請(qǐng)不要驚奇,不要反感,不要認(rèn)為別人在"挑刺",也許你的函數(shù)庫(kù)/框架早就不適合當(dāng)前的發(fā)展了。
  
  
  態(tài)度決定一切。你的領(lǐng)導(dǎo)或許更重視這一點(diǎn)。
  
  
  【必要的組成部分:單元測(cè)試,文檔,實(shí)例,手冊(cè)etc】
  --------------------------------------------

  單元測(cè)試,文檔,API Doc,手冊(cè),演示程序,Change Log,Readme,build。xml等等

  有一天別人使用了你設(shè)計(jì)的函數(shù)庫(kù)/框架,當(dāng)你升級(jí)后,原來(lái)的項(xiàng)目卻不能工作了,經(jīng)過(guò)一天的調(diào)試,你終于找到了原因,原來(lái)是不小心寫(xiě)錯(cuò)了一個(gè)東西。

  你肯定不希望上述的事情發(fā)生,那么請(qǐng)你寫(xiě)單元測(cè)試吧,這樣既不浪費(fèi)自己的時(shí)間,也不耽誤別人的工作,何樂(lè)而不為。你花在寫(xiě)單元測(cè)試的時(shí)間/帶來(lái)的樂(lè)趣和你升級(jí)后改正莫名其妙的錯(cuò)誤的時(shí)間和苦惱相比,肯定更有價(jià)值。你看到單元測(cè)試的綠條,難道不感到高興嗎?!

  如果你不能保證你的程序修改沒(méi)有錯(cuò)誤,不要指望你的同事認(rèn)為你的錯(cuò)誤是可以容忍的,他們?cè)谛睦镌缇烷_(kāi)始罵你了,呵呵。寫(xiě)單元測(cè)試吧
  
  看看任何一個(gè)知名的框架,都包含完善的文檔,單元測(cè)試,示例程序,用戶手冊(cè),那么請(qǐng)你也包含這些吧。哦,對(duì)了,請(qǐng)?jiān)敿?xì)地寫(xiě)好JavaDoc,它很重要。
  
  使用你的框架/函數(shù)庫(kù)的人如果到處去找使用方法,去找某個(gè)類(但是他不知道是否有這個(gè)類),那么說(shuō)明你的文檔沒(méi)有到位。如果你希望別人使用你的這個(gè)類或者功能,那么請(qǐng)寫(xiě)好文檔,不要指望別人去讀你的源碼然后就能理解它是干什么用的。
  
  如果你做到這些,那么你的函數(shù)庫(kù)/框架也有了"知名"的前提,難道不是嗎?如果沒(méi)有,我想是沒(méi)法讓別人更好地使用的。
  
  對(duì)了,有了這些東西,還要有一個(gè)良好的目錄組織,這個(gè)也可以參考別的框架的組織方式。

  【借鑒成熟的設(shè)計(jì),參考已有的項(xiàng)目】
  --------------------------------

  1。要做一個(gè)新的東西,沒(méi)有想法。不要驚訝,我肯定先找一個(gè)現(xiàn)有的東西來(lái)借鑒。
  
  當(dāng)然前提是不要重新發(fā)明輪子,或者是你有充分條件要重新發(fā)明一個(gè)輪子。
  Struts,WebWork,Spring等等都是成熟的框架,不管你使用起來(lái)是否符合你的習(xí)慣。
  在你成為大師之前,你的設(shè)計(jì)思想估計(jì)前人都已經(jīng)提出并實(shí)踐過(guò)了,所以要勇敢地去借鑒。"站在巨人的肩膀上"我們能更近一步。
  
  例如我們厭倦了在訪問(wèn)數(shù)據(jù)庫(kù)時(shí)使用如下的代碼:

  try
  {
  //your code here
  }
  catch(Exception e)
  {
  //catch Exception
  }
  finally
  {
  //must do something
  }

  
  我們就可以借鑒Spring框架的JdbcTemplate類,看看它是如何利用回調(diào)函數(shù)來(lái)處理的。
  
  我們使用hibernate時(shí)是不是也會(huì)使用類似上面的代碼,那么可以參考Spring框架的HibernateTemplate。
  
  借鑒也是一種捷徑。
  
  警告:借鑒但不要抄襲,借鑒代碼要注明來(lái)源,尊重他人也是尊重自己。