国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

給JAVA設(shè)計(jì)開發(fā)新手一些建議和意見(1)

2019-11-18 11:49:24
字體:
供稿:網(wǎng)友

  為了給朋友同事一些設(shè)計(jì)問題上的指導(dǎo),特撰寫此文,很多觀點(diǎn)都是從別人的文章中獲取,有些觀點(diǎn)肯定也有偏頗,有些觀點(diǎn)也僅僅是提出并沒有做具體論述,請(qǐng)多拍磚,以便改正。
  
  【概述】
  在工作中,作為一個(gè)程序員或者一個(gè)設(shè)計(jì)師,總是要設(shè)計(jì)一些函數(shù)庫或者一個(gè)框架,當(dāng)然最經(jīng)常的還是做項(xiàng)目,即使是一個(gè)項(xiàng)目,也會(huì)被經(jīng)常改動(dòng),甚至交給別人改動(dòng)。
  
  當(dāng)你做這些工作的時(shí)候,你的這些成果都是要給別人了解使用的,或者說給以后的你使用的,為了別人的方便或者為了自己的方便,我們要盡可能做好設(shè)計(jì)。
  
  【放正心態(tài),任何東西都是不斷發(fā)展的】
  
  技術(shù)是日新月異的,每一天都有新的技術(shù)出來,正所謂"山外有山,人外有人",每一個(gè)新的輪子出來,都可能比你要設(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ù)庫/框架提出意見,提出疑問的時(shí)候,請(qǐng)不要驚異,不要反感,不要認(rèn)為別人在"挑刺",也許你的函數(shù)庫/框架早就不適合當(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ù)庫/框架,當(dāng)你升級(jí)后,原來的項(xiàng)目卻不能工作了,經(jīng)過一天的調(diào)試,你終于找到了原因,原來是不小心寫錯(cuò)了一個(gè)東西。
  
  你肯定不希望上述的事情發(fā)生,那么請(qǐng)你寫單元測(cè)試吧,這樣既不浪費(fèi)自己的時(shí)間,也不耽誤別人的工作,何樂而不為。你花在寫單元測(cè)試的時(shí)間/帶來的樂趣和你升級(jí)后改正莫名其妙的錯(cuò)誤的時(shí)間和苦惱相比,肯定更有價(jià)值。你看到單元測(cè)試的綠條,難道不感到興奮嗎?!
  
  假如你不能保證你的程序修改沒有錯(cuò)誤,不要指望你的同事認(rèn)為你的錯(cuò)誤是可以容忍的,他們?cè)谛睦镌缇烷_始罵你了,呵呵。寫單元測(cè)試吧
  
  看看任何一個(gè)知名的框架,都包含完善的文檔,單元測(cè)試,示例程序,用戶手冊(cè),那么請(qǐng)你也包含這些吧。哦,對(duì)了,請(qǐng)具體地寫好javaDoc,它很重要。
  
  使用你的框架/函數(shù)庫的人假如到處去找使用方法,去找某個(gè)類(但是他不知道是否有這個(gè)類),那么說明你的文檔沒有到位。假如你希望別人使用你的這個(gè)類或者功能,那么請(qǐng)寫好文檔,不要指望別人去讀你的源碼然后就能理解它是干什么用的。
  
  假如你做到這些,那么你的函數(shù)庫/框架也有了"知名"的前提,難道不是嗎?假如沒有,我想是沒法讓別人更好地使用的。
  
  對(duì)了,有了這些東西,還要有一個(gè)良好的目錄組織,這個(gè)也可以參考別的框架的組織方式。
  
  【借鑒成熟的設(shè)計(jì),參考已有的項(xiàng)目】
  
  1.要做一個(gè)新的東西,沒有想法。不要驚奇,我肯定先找一個(gè)現(xiàn)有的東西來借鑒。
  
  當(dāng)然前提是不要重新發(fā)明輪子,或者是你有充分條件要重新發(fā)明一個(gè)輪子。
  
  Struts,WebWork,SPRing等等都是成熟的框架,不管你使用起來是否符合你的習(xí)慣。
  
  在你成為大師之前,你的設(shè)計(jì)思想估計(jì)前人都已經(jīng)提出并實(shí)踐過了,所以要勇敢地去借鑒。"站在巨人的肩膀上"我們能更近一步。
  
  例如我們厭倦了在訪問數(shù)據(jù)庫時(shí)使用如下的代碼:
  
  try
  
  {
  
  //your code here
  
  }
  
  catch(Exception e)
  
  {
  
  //catch Exception
  
  }
  
  finally
  
  {
  
  //must do something
  
  }
  
  我們就可以借鑒Spring框架的JdbcTemplate類,看看它是如何利用回調(diào)函數(shù)來處理的。
  
  我們使用hibernate時(shí)是不是也會(huì)使用類似上面的代碼,那么可以參考Spring框架的HibernateTemplate。
  
  借鑒也是一種捷徑。
  
  警告:借鑒但不要抄襲,借鑒代碼要注明來源,尊重他人也是尊重自己。
  
  2.在實(shí)際的項(xiàng)目中,往往可以參考已經(jīng)有的項(xiàng)目來做自己的設(shè)計(jì)。
  
  例如做一個(gè)網(wǎng)站,我不知道如何訪問數(shù)據(jù)庫,如何布局,如何分層,那么我們可以參考已經(jīng)有的網(wǎng)站程序,看看別人是如何利用SiteMesh或者tiles布局,如何使用Hibernate來訪問數(shù)據(jù)庫或者使用已經(jīng)封裝好的JDBC類來訪問數(shù)據(jù)庫,如何利用Struts,WebWork或者其他訪問來分層。
  
  【遵守約定俗成的一些做法】
  
  為了使別人更方便地使用你的東西,那么在設(shè)計(jì)一些通用的函數(shù)或者類的時(shí)候,請(qǐng)遵守通用的做法,不要與眾不同,除非你的內(nèi)部實(shí)現(xiàn)確實(shí)與眾不同。
  
  例如實(shí)現(xiàn)一個(gè)類似ArrayList的類,那么請(qǐng)不要這樣寫:
  
  public int count()
  
  {
  
  return list。size();
  
  }
  
  public Item getItem(int i)
  
  {
  
  return list。get(i);
  
  }
  
  而應(yīng)該這樣:
  
  public int size()
  
  {
  
  return list。size();
  
  }
  
  public Item get(int i)
  
  {
  
  return list。get(i);
  
  }
  
  當(dāng)然每個(gè)人都有自己的想法,假如你非常認(rèn)為你原來的方式比普通的好,那么請(qǐng)?zhí)峁?套方式供別人選擇。它不會(huì)給你帶來麻煩,只是一個(gè)一看就懂的做法,不用懷疑,這樣做有好處。
  
  很多類的設(shè)計(jì)都有一些約定俗成的做法,那么在你設(shè)計(jì)一個(gè)新類的時(shí)候,先借鑒一下吧,多看看JDK的源碼/文檔,看看別人是怎么實(shí)現(xiàn)的。這更有助于推廣你的成果。
  
  【不要迷信權(quán)威】
  
  在使用已有的框架或者函數(shù)庫時(shí),不要認(rèn)為所有的東西都是正確的或者是最好的最好,肯定不是。沒有完美的東西,已經(jīng)存在的東西在設(shè)計(jì)的時(shí)候因?yàn)榉N種局限或者因?yàn)樽髡叩乃剑瑢?duì)現(xiàn)在來說肯定存在不合理的設(shè)計(jì),或者過于理想化的設(shè)計(jì),而不能滿足實(shí)際情況。
  
  不迷信權(quán)威,才能到達(dá)新的境界。
  
  【不要輕易排斥,不了解就不要草率發(fā)表意見,要嚴(yán)謹(jǐn)】
  
  在網(wǎng)上經(jīng)常看到。Net和Java的比較/火拼,或者是Struts VS Webwork或者是其他等等,非常之多。經(jīng)常看到的是一方對(duì)對(duì)方的東西不甚了解,就開始批評(píng),結(jié)果說不到點(diǎn)子上,反而被嘲笑一番。
  
  幾種技術(shù)的比較有時(shí)候是必要的,例如技術(shù)選型的時(shí)候。但是假如一些對(duì)這些技術(shù)根本不了解的人來選型,來評(píng)判,你能對(duì)結(jié)果信服嗎?
  
  存在就是合理,任何技術(shù)都有其存在的理由,雖然有些東西早就過時(shí)了,但是在當(dāng)時(shí)它也是應(yīng)運(yùn)而生的。
  
  幾種技術(shù),都是來解決同樣的問題,但是問題也有很多方面,解決方式也有很多種,每個(gè)人的想法也都不一樣,思路也不一樣,所以沒有絕對(duì)符合要求的技術(shù),但是應(yīng)該有符合你的技術(shù),不符合你的技術(shù)不等于也不滿足別人的要求。所以不要輕易排斥別的東西。
  
  在做技術(shù)比較的時(shí)候,假如你不了解,那么請(qǐng)不要輕易發(fā)表意見,至少你可以親自去了解,去實(shí)踐之后在發(fā)表你的意見豈不是更好。
  
  在發(fā)表意見的時(shí)候,也要嚴(yán)謹(jǐn),不要輕易下結(jié)論,要經(jīng)過求證,否則一旦錯(cuò)誤只會(huì)讓對(duì)手笑話,讓你的同事看不起你。例如你說Hibernate3不支持jdk1。3,那么最好去好好找到你的證據(jù),否則就會(huì)成為錯(cuò)誤。(Hibernate3支持jdk1。3)
  
  作為一個(gè)技術(shù)人員,嚴(yán)謹(jǐn)應(yīng)該是我們的習(xí)慣之一,無論做開發(fā)還是做設(shè)計(jì)。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 随州市| 介休市| 铜梁县| 泊头市| 凭祥市| 郑州市| 肇源县| 尼木县| 金坛市| 皋兰县| 栾城县| 陈巴尔虎旗| 准格尔旗| 梁平县| 新蔡县| 团风县| 上犹县| 清水河县| 大港区| 盐城市| 嘉禾县| 甘德县| 南康市| 贵州省| 博野县| 凤台县| 德庆县| 西昌市| 惠州市| 南雄市| 新蔡县| 根河市| 舒城县| 甘南县| 永宁县| 上犹县| 晋江市| 文山县| 庆城县| 青神县| 武威市|