代碼最簡化

在重構的過程當中,站在我我的的角度,針對代碼開發的細節,說一說關於代碼最簡化的小經驗。css

一、    同一個頁面上js/css可能被你引入屢次?

Ajax已被你們普遍應用,經常用來加載一些html的片斷。Html片斷可能有js的處理,這個時候可能在html片斷中寫一些js操做或者引入一些js文件,你可有檢查,當前頁面是否已經加載了該js。若是同一個頁面沒有被從新加載,無論之前在頁面中有的,仍是後來html片斷中加載的,都會在當前頁面生效。而不是片斷中的js做用域只是這個片斷。因此js不要重複引入,重複引入頗有可能充掉你的全局變量,覆蓋原來的同名js方法,也可能形成死循環等等問題。例如jquery文件,若是被屢次引用就可能形成js死循環,不少原生的jquery方法很差用。html

針對這些問題,咱們並非要徹底避免在ajax加載的html片斷中不寫js。而是根據實際狀況作合理的安排。第一,千萬不要重複加當前頁面的js;第二,若是ajax加載的片斷只會被當前頁面加載一次,而且你寫的js只是爲當前片斷服務,那你能夠只在片斷中引入;第三,當頁面中的js超過20行或者會被多個頁面使用的js,建議提取到單獨的js文件中;第四,若是js方法是全局的,命名又很大衆化像search(), find(),你可要當心了,極可能被別人的js覆蓋,你也可能覆蓋別人的,怎麼辦?那就瞭解一下js面向對象編程吧。建議改爲Student.search(),Student.find()等等java

二、    爲何a元素也要寫一個onclick,然而它只是一個簡單的跳轉?

這樣寫累嗎?一個簡單的跳轉操做,標籤自己的功能不能遺忘。用什麼標籤就應該讓它作什麼樣的事。每當我翻閱這樣的代碼的時候,都是從連接處着手,而後順着onclick事件,找到onclick對應的方法,而後再看作了什麼操做。你會發現最後一行是「location.href=’xxxx/xxx.do?a=」 + a + ....」。不以爲有點坑爹嗎?我真不知道這種寫法的好處。首先這樣拼接url若是沒有對參數作encodeURIComponent極可能形成參數丟失;再者讓人找的好費神。若是直接寫在a標籤上href上是否是很清晰呢。若是要在新窗口打開加上「target=」_blank」」就夠了。jquery

三、    url上爲何是一堆參數?去掉無用的參數吧

可能你會說,我爲了下個頁面少作查詢,我就多傳了一些參數。可是這樣真的帶了好處嗎?ajax

暫不說傳中文可能亂碼的問題,其實這樣嚴重增長了之後維護的難度。明知道下個頁面只須要某個參數就夠了,然而仍是要考察每一個參數都是要幹嗎用的。思前想後,明明只須要考慮一個參數的問題,一會兒變成了考慮四五個參數,工做量翻了幾翻。可曾有感觸呢?若是下個頁面只是一個經過id的查詢就不要再附加的各類冗餘的信息了。除非咱們要的內容在當前頁面已經有了,而下個頁面本身獲取真的很影響性能,咱們才真的有必要這麼作。算法

四、    爲何要加那麼多id在html的元素上?爲何還有重複的?

我想你們都清楚在js裏查詢某個dom元素使用id是最快的,可是id真的不要用氾濫了。滿頁都是id,甚至有重複的。這個真的不是好習慣。當維護的人員想添加一個真正有必要用的id時,發現你已經使用了,換用別的名字又感受不合適,那些無用的還不敢刪除,得費死維護人員多少腦細胞。不要慶幸之後修改的人不是咱們本身。作爲一個有責任的開發人員,咱們就要對本身寫的代碼負責。sql

五、    無用的sql查詢,無用的java方法,無用的http請求,這是要鬧哪樣?服務器會消化不良的。

通常出現這樣的問題是由於修改代碼的人添加了新的代碼,而沒有檢查之前的代碼是否有用形成。曾記得之前浙師項目就有一個無用的ajax請求,頁面一加載就請求一個公告全表的json數據,有幾M那麼大,並且沒有一點用處。可想而知,得有多麼影響性能。要想減小這樣的問題發生,就要咱們更認真更細心,修改代碼的時候,務必思前想後,去除乾淨無用的代碼。時常檢查http請求是否都是你意料之中的請求。編程

六、    不要繼承不應繼承的類,也不要實現沒有必要實現的接口,而是當須要的時候才這麼作,或者你預知到了什麼。除非真的有必要這麼作。

七、    不得不說的方法命名。

在java的代碼中不要輕易使用get和set開頭的方法。除非以爲這個方法是當前類的一個屬性。一個好的命名方法賽過那堆臭長的註釋。別誤解,我可不喜歡開發者不寫註釋,註釋該寫仍是要寫的。寫註釋給人一種安全感,你不以爲嗎?json

八、    避免長代碼文件。

Jsp,js,java都要避免代碼太長。對於jsp文件可使用include進行拆分,若是是tab頁每一個tab的內容還不少,建議作成兩個jsp頁,切換時直接是兩個請求。處理問題也就變簡單了。對於js的拆分,直接在合適的位置分紅多個文件便可,若是是面向對象的js代碼,能夠考慮使用繼承,直接追加屬性等方法解決。Java能夠添加輔助的工具類,或者輔助的子類等方法解決。安全

九、    通用模塊設計的時候,應該注意的小問題。

有些通用模塊,讓調用者用的好辛苦,。通用模塊的代碼,要合理的設計入口參數。根據調用方的需求合理設計入口參數,不傳多餘無用的參數。要儘量的讓調用者作的更少,除了少傳參數,你還可讓用戶不寫html片斷,js初始化操做等等。還有就是考慮代碼是否會和別人的代碼衝突,像html中的id,js代碼(命名要特別注意,最好使用面向對象的方法開法這樣的模塊),樣式表等等。

 

 

總結:

這些都是小問題,或許你不以爲什麼,可是放在一塊兒就真的不是小問題了。多一個id,多一個參數,多一個無用查詢,多一個無用的請求都會嚴重的增長之後維護人員的工做。咱們不能徹底避免這些小問題,可是隻要咱們每寫一個方法,每寫一個sql,每寫一個ajax請求,每寫一句代碼,都想想它的必要性,不寫無用的變量定義、無用的判斷、無用的循環,這樣我能夠在很大程序的減小這些小問題的發生。我不是在說最短的代碼就是好代碼可是臭長的代碼絕對不是好代碼。寫代碼前務必保證本身的思路是清晰的。不要使用怪異的方法,沒有絕對的提升性能,甚至連本身都不清楚其中的奧妙,真的就沒有必要這樣作了。在易懂的前提下保證代碼最優。當性能真的出現問題時再作深度的算法等一系列的優化。

 

本文爲做者原創,轉載請註明出處,與你分享個人快樂
http://www.cnblogs.com/weirhp

相關文章
相關標籤/搜索