清楚的記得,2013年6月就開始出來實習,而後2014年3月來到深圳一家企業,6月大學畢業,10月轉正直到如今。在工做中一直從事研發,包括 JavaScript、java、Android ,可是因爲我的經驗不足,老是在本身的代碼中會出現些許bug,固然兩年下來也積累了很多經驗。下面就說說2014年我遇到的一些疑難,但願熱心人可以幫助解答,同時也但願可以幫助別人。java
問題一:程序員
關於if語句的使用,有嵌套if,有單分支if...
編程
然而,在項目中看到許多if-else真的使人做嘔,尤爲是if嵌套,若是僅僅嵌套兩層,代碼結構還能夠弄懂,若是是嵌套太深,代碼確定晦澀難懂,後期維護成本必然上升。那麼,項目中咱們應如何減小if的使用呢?或者說如何纔可以讓咱們的代碼容易讀懂,不受if的干擾。
json
if(){ }else if(){ if(){ }else{ } }else{ }
問題二:安全
關於Exception的捕獲與拋出
網絡
異常在代碼中到處可見,那麼對於異常咱們具體應該如何處理。問題是這樣的,我在某個方法中出現了檢查時異常,那麼要麼我就拋出,要麼就捕獲。若是是拋出的話,這個方法就成爲了一個異常方法,是一個不安全的方法,任何調用這個方法的地方都要重複相同的異常捕獲與拋出;若是是捕獲的話,這個方法雖然成爲了安全的方法,殊不知道如何通知調用方我在內部發生了異常。我看過有些代碼是捕獲後又拋出了自定義異常類的實例給調用方,不知道這樣好很差,反正我是以爲這個異常類的代碼至少須要維護吧。項目中具體應該如何處理這些異常呢?this
public Striing process(){ try{ // some codes }catch(Exception e){ }finally{ } }
問題三:spa
參數的校驗
code
爲保證程序的健壯性,參數的合法性校驗那是必不可少的一個步驟。但是,在程序中參數的校驗具體交給誰呢?好比一個操做是新增一條記錄,Controller裏面的方法會判斷參數是否合法,不合法就直接返回,合法執行下一步Service,那麼Service方法中還須要對這些參數判斷嗎?接着執行Dao,那麼Dao還須要對參數校驗嗎?看似Controller已經校驗過了,就很安全,因此後續不須要校驗,但是你不敢保證你的Service暴露的方法沒人調用,同理Dao也是,只要有人調用了你的方法就會出現參數不合法而出現的各類運行時異常。那麼,咱們應該如何規範參數的合法性校驗?
對象
Controller public String updateMsg(HttpServletRequest request){ String username = request.getParameter("username"); if(StringUtils.isBlank(username)){ return null; } service.updateMsg(username); } Service public String updateMsg(String username){ if(StringUitls.isBlank(username)){ return null; } // some codes return ""; } Dao public String updateMsg(String username){ if(StringUitls.isBlank(username)){ return null; } // some codes return ""; }
問題四:
JSONObject的使用
JSON是網絡數據傳輸的一種數據格式,同時JSON官網還提供了java相關的jar,json-lib讓咱們更容易的操做java與json,可是JSONObject有一個操做叫作toBean卻差強人意,我相信不少人都碰見了這個問題,只是網上只有提問沒有解答和我同樣。但願高手能夠解答。
JSONObject.toBean(JSONObject.fromObject("{name:dd}",User.class));
問題五:
JavaBean的使用
對程序員來講JavaBean並不陌生,Java中編寫代碼習慣使用JavaBean,以爲這樣更加貼切面向對象編程,實質上限定了對象的擴展,尤爲是一些業務邏輯常常發生變化的狀況,一開始的時候只須要這些屬性,後期結果又添加了屬性同時又刪除了屬性,那麼JavaBean天然也須要及時更新,這時問題來了,JavaBean更新後,調用JavaBean的set、get方法也會隨着更新,從而代碼到處須要更新啊!!JavaBean真的有那麼好用???
public UserBean{ private String username; public void setUsername(String username){ this.username = username; } public String getUsername(){ return this.username; } }
問題六:
JavaScript中方法參數定義問題
自定義方法不但須要方法名稱得當,讓人一眼便明白方法的做用,同時方法的參數也要合理定義。項目過程當中每每出現這樣的狀況,一個方法是改了又改。有的人以爲方法須要再添加一個形參,有的人則不須要這麼多形參。幸虧,JavaScript沒有對實參的傳遞個數有嚴格要求,可是他對順序是又要求的。個人問題是:把全部的形參當作一個對象config做爲惟一形參會不會更好,這樣另外有人想要添加形參,徹底不須要改接口,不知道這樣好很差?
function fun(config){ var username = config.username || ''; var age = config.age || ''; } function fun(username , age){ }
以上就是我在2014年當中遇到問題的一小部分(基礎不紮實擾的禍),
固然對於高手來講這些問題不值一提,
可是我要提出來,
就是但願大家能熱心的解決,
本人感激涕零!!!!