AV大片,日韩伦理一区,国产在线a,开心播播网婷婷在线

廣西南寧達(dá)內(nèi)軟件科技有限公司

[其他技能培訓(xùn)]
獵學(xué)網(wǎng)訂閱號
獵學(xué)網(wǎng)官方企業(yè)微信
位置: 獵學(xué)網(wǎng) > 學(xué)校機(jī)構(gòu) > 廣西南寧達(dá)內(nèi)軟件科技有限公司 > 學(xué)習(xí)資訊> 如何編寫出優(yōu)美的JavaScript代碼

如何編寫出優(yōu)美的JavaScript代碼

38 2017-04-14

南寧達(dá)內(nèi):如何編寫出優(yōu)美的代碼?

在多年以前,人們注重功能是如何實(shí)現(xiàn)的?,F(xiàn)如今,隨著Web及互聯(lián)網(wǎng)技術(shù)的不斷發(fā)展,功能僅成了最基本的要求,如何寫出漂亮,整潔的代碼已成為一個大牛級程序員不可或缺的條件。

一位前端開發(fā)工程師便在知乎上提問:“我是一名前端開發(fā)工程師,主要編寫,有兩年經(jīng)驗(yàn)。最近在寫一些頁面上的模塊,發(fā)現(xiàn)自己在構(gòu)思的時候總是很清晰,但是寫著寫著感覺代碼越來越亂,看起來就像一坨屎,而我又有點(diǎn)兒代碼潔癖,看著越來越亂的代碼就不想進(jìn)行下去。請問怎么辦呢?”并且他還曬了一下自己編寫的代碼:

面對如此樂知好學(xué)、積極進(jìn)取的程序員,我們的網(wǎng)友們也很給力,不僅對他的代碼進(jìn)行了全方位的點(diǎn)評,還提出了一些非常合理的建議,下面就是知呼網(wǎng)上一些網(wǎng)友的精彩回答,讓我們一起來看下:

長天之云:

我覺得寫好代碼和作文章差不多,無外乎:工整、優(yōu)雅、拒絕重復(fù)、惜字如金。下面提供幾個小建議:

態(tài)度

對代碼要有感情,每一行都應(yīng)該盡心盡力,并且還要有把那些扔垃圾簍的代碼再重寫兩遍的沖動——一旦有了這種沖動之后,什么都擋不住你,連吃喝拉撒時,問題都會浮現(xiàn)到你腦子里,你就會不由自主地解決它們……能對自己的代碼提出懷疑本身就是一件了不起的事!加油!

少寫代碼

提前設(shè)計(jì)能有助于少寫代碼,增強(qiáng)全局感。而代碼寫得少還能防止失控——感覺不對時就應(yīng)該停下來,騰出時間來思考,為什么會偏離最先的想法。所有符號各就各位。第一眼就是空格太少,下面推薦三個工具給大家:

BeautifyorHTML可以給你的代碼格式化,記得用diff工具對照一下,格式化前后的區(qū)別;

SublimeLinter可以動態(tài)地在編寫時給出JSHint提示(出錯行高亮);

Grunt可以在文件變更時給出SHint檢驗(yàn)(聲音以及桌面通知);

一旦把lint校驗(yàn)做為提交代碼的必要過程,排版就會有本質(zhì)的提高。

遵行慣用法

注釋符號‘//’后應(yīng)該空一格;

防止變量提升,應(yīng)先聲明后使用(JSHint會提醒出‘_height’存在變量提升以及定義后未使用的錯誤);

不應(yīng)該使用硬編碼,并且重復(fù)幾次(ID后綴名可以定義到常量里,用大寫字母);

不應(yīng)該有兩個配置屬性,含義不明(this.opts和this._options);

若兩次以上引用同一對象的屬性,應(yīng)該定義到局部變量再引用(varoptions=this._options);

不應(yīng)該同時使用兩種屬性命名風(fēng)格(colModel和table_body);

局部變量名應(yīng)該盡可能短,而方法名應(yīng)該盡可能完整(不應(yīng)該同時即有fromatTpl又有parseTemplate);

局部變量名不需要用下劃線開頭,僅對象私有屬性和私有方法有此必要;

變量名不需要帶類型屬性(_thdoms叫ths就好);

使用時,for循環(huán)基本可以避免(比如jQuery有$.each,$.map,$.filter,$.grep等等高階函數(shù)可用);

jQuery對象名習(xí)慣以$開頭,以便區(qū)分DOM對象;

jQuery查詢應(yīng)盡量使用ontext(如this.$table=$('table',this.$element));

jQueryDOM操作和原生DOM操作不應(yīng)該混用(已經(jīng)使用jQuery的情況,就應(yīng)該堅(jiān)持使用jQuery來操作DOM,避免丑陋的原生操作);

DOM元素構(gòu)造出來,也不應(yīng)該再到文檔中查詢一遍了(圖上的構(gòu)造太復(fù)雜,一眼真看不懂);

代碼復(fù)查

把程序?qū)懻_還只是跨出了第一步。把代碼交給你的同事和朋友復(fù)查,這是學(xué)習(xí)經(jīng)驗(yàn)、共同提高最快的辦法。

大石頭Dion:

代碼風(fēng)格及排版

雖然任何一種語言都沒有任何約定的風(fēng)格,但也總有一些不成文且喜聞樂見的習(xí)俗。以你的代碼為例,給以下幾個風(fēng)格上的建議:

每個function之間多一空行,是的,除去注釋外再多一空行;

適當(dāng)加空格,比如if和后面的括號之間的空格、小括號和花括號之間的空格、冒號和function之間的空格等等;

風(fēng)格上保持一致,你的代碼里面有的地方+號和運(yùn)算數(shù)之間有空格,有的則沒有;

少用下劃線開頭的變量命名;

一段代碼里,var語句可以合并在一起;

暫時不會再修改的function或object,先用編輯器折疊起來,看上去也會整潔很多;

黑色背景的Editor風(fēng)格不錯,不過關(guān)鍵字、注釋、運(yùn)算符等顏色上可以再調(diào)整,主要是為了防止審美疲勞,換個色調(diào)換個心情;

使用成熟的庫

如果沒看錯的話,你可能是使用了jQuery吧(至少也有一個類似Sizzle或更簡單的解析器,證據(jù)在倒數(shù)第十行左右)。所以,就盡可能避免使用原生的DOM操作。

jQuery的$符號,以CSSSelector風(fēng)格統(tǒng)一取代了各種getElement(s)ByXxx的接口,并且擴(kuò)展性非常強(qiáng),是很多設(shè)計(jì)模式思想的綜合運(yùn)用。

當(dāng)然原生DOM也有自己的優(yōu)勢(主要是執(zhí)行效率),但是大部分時候,在開發(fā)效率、代碼質(zhì)量、執(zhí)行效率的tradeoff中,jQuery還是最佳選擇。此外也推薦下MVC庫、jQueryUI庫等等。

代碼整理

構(gòu)思清楚,再寫代碼,你已經(jīng)做到了。

但是,誰能保證代碼是一成不變、一勞永逸的呢?

所以,「重構(gòu)」的時候,除非是時間緊迫,永遠(yuǎn)不要松懈代碼質(zhì)量。

Web前端愛好者TooBug對樓主的代碼也進(jìn)行了詳細(xì)的點(diǎn)評,并且也給出了一些非常有意義的指導(dǎo):

代碼中邏輯沒有分塊、沒有空行、沒有注釋、看起來很累,建議對代碼進(jìn)行分塊,比如將變量集中在頭部定義,然后處理一些賦值,最后執(zhí)行一些其它的函數(shù)。具體到這個例子,有很多不恰當(dāng)?shù)牡胤?,比如可以先var_height;然后在條件分支中進(jìn)行賦值,比如在一堆賦值語句中間夾雜了一個parseTemplate。

“_”用得太多,this._var這個可以理解,因?yàn)橐獏^(qū)分是否私有變量,但是var_height這個完全沒有必要加,加得太多反而看著很累,而且也沒有任何區(qū)分的意義。

沒有將常用的變量緩存,這里最應(yīng)該緩存的是this._options,要不然看起來很亂,而且緩存起來對性能也是有好處的。

對象的規(guī)劃(命名)不清晰,比如this._options和this.opts什么關(guān)系?我反正是看不明白。

代碼風(fēng)格不統(tǒng)一,比如訪問對象,之前都是this._options.height,為什么后面出來一個this._options.data['head']?用this._options.data.head不是更清晰么?

函數(shù)內(nèi)變量名混亂(和第四點(diǎn)很像),比如第二個函數(shù)中id和_id什么關(guān)系?為什么不用aaaId和bbbId?cre又是什么,難道是createElement縮寫?變量盡量起有意義的,可區(qū)分的名字。

函數(shù)名稱表義不明,命名不符合大部分規(guī)范約定。第一眼看到_isHaveTable,我第一反應(yīng)是,這應(yīng)該是類似returntrue或者returnfalse之類的吧。結(jié)果一看,這么長,難道返回在后面?又往后看了一眼,這根本就沒有返回?。∧菫槭裁匆胈isHaveTable???_is開頭的函數(shù)明明白白就應(yīng)該返回一個true或者false埃

以上是比較精彩的回答。保持適當(dāng)?shù)目崭?、風(fēng)格統(tǒng)一、使用一些約定成俗的命名規(guī)則,比如局部變量名應(yīng)該盡可能短,而方法名應(yīng)該盡可能完整。

各位網(wǎng)友們,你們又有哪些妙招呢?不妨發(fā)來和我們一起探討探討吧!

溫馨提示: 專業(yè)老師1對1為您解答    馬上填寫,¥1000 元豪禮免費(fèi)領(lǐng)!

掃一掃
獲取更多福利

×
獵學(xué)網(wǎng)
国产精品TV| 久久思九九热| 固原少妇| 日本wwv.色| 国产综合精品| 日韩一级欧美| 中文精品人妻| 嘿嘿嘿网站在线观看| 欧美激情,五月| 亚洲自拍色色色色色色| 91精品无码| 亚洲国产日韩视频观看| 大屁股喷水视频| 操女人喷水的视频| 一级毛片,午夜直播。| 91无码视频麻豆| 免费欧美| 91久久精品一区二区三区大全| 欧美日韩人妻精品| 激情网站久久综合| 精品欧莫| 欧美黑丝喷液在线| 白嫩少妇21p| 网站无码高清| 亚洲自拍偷拍视频| 狠狠精品久久久无码中文字幕| 伊人中文在线| 国产AV日韩精品| 夜夜被公侵犯人妻电影| 中文字幕高清二区| 一本本久道| 南岸区| 在线观看欧美一区二区三区| 无码视频三区| 日本12av在线观看| 久久蜜桃香蕉| 青草热在线观看视频| 国产日产av大片| 99热视频| 无码AⅤ精品一区二区三区| 国产精品无码永久免费888|