自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

JavaScript代碼中的壞味道

開(kāi)發(fā) 前端
編寫(xiě)軟件很難。 只有少數(shù)方法可以做到正確,有很多方法可以做到錯(cuò)誤,使我們的生活更加艱難。在本文中,我們將通過(guò)一些代碼氣味來(lái)探討編寫(xiě)不良代碼的一些方法。

編寫(xiě)軟件很難。 只有少數(shù)方法可以做到正確,有很多方法可以做到錯(cuò)誤,使我們的生活更加艱難。

在本文中,我們將通過(guò)一些代碼氣味來(lái)探討編寫(xiě)不良代碼的一些方法。

[[329878]]

具有不同接口的替代類(lèi)

由于重復(fù),兩個(gè)功能相同但接口不同的類(lèi)并不好。

我們不想那樣。 因此,我們可能要使用共享代碼創(chuàng)建一個(gè)超類(lèi),然后使子類(lèi)具有不同的方法。

庫(kù)類(lèi)不完整

重用并沒(méi)有被高估。

圖書(shū)館建設(shè)者的工作艱巨。 他們可能會(huì)開(kāi)設(shè)不完整的課程,但不允許我們修改它們以完成我們希望他們做的事情。

因此,這使庫(kù)類(lèi)對(duì)我們毫無(wú)用處,除非我們可以添加所需的功能。

我們可能必須直接向這些類(lèi)添加新方法來(lái)解決此問(wèn)題。

例如,如果我們導(dǎo)入了一個(gè)類(lèi),則可以通過(guò)編寫(xiě)以下代碼來(lái)添加自己的方法:

  1. const mixin = { 
  2.   foo() { 
  3.     //... 
  4.   }, 
  5.   bar() { 
  6.     //... 
  7.   } 
  8. Object.assign(Foo.prototype, mixin); 

在上面的代碼中,我們將Foo類(lèi)的原型中的代碼與mixin對(duì)象中的方法合并,以使用Object.assign方法將更多方法合并到該類(lèi)中。

數(shù)據(jù)類(lèi)型

數(shù)據(jù)類(lèi)是僅具有字段的類(lèi)。

這些類(lèi)可能被其他類(lèi)過(guò)多地操作。

因此,如果所有公開(kāi)領(lǐng)域都公開(kāi)了,我們應(yīng)該封裝它們。

如果需要,我們還可以封裝收集字段。

為了封裝它們,我們可以將字段設(shè)為私有,并添加訪(fǎng)問(wèn)和設(shè)置它們的方法。

拒絕繼承

子類(lèi)繼承父類(lèi)可以訪(fǎng)問(wèn)它們的方法。

如果我們不需要父類(lèi)中的這些類(lèi),則可以將它們下推到子類(lèi)中。

然后,并不是所有的子類(lèi)都將從父類(lèi)繼承方法,而它們?nèi)匀豢梢粤粼谛枰鼈兊淖宇?lèi)中。

注釋

評(píng)論對(duì)某些事情很有用。 我們可以評(píng)論為什么要執(zhí)行某項(xiàng)操作,但是由于我們已經(jīng)在代碼中進(jìn)行了操作,因此無(wú)需在評(píng)論中說(shuō)明我們?nèi)绾螆?zhí)行操作。

還注釋代碼是不好的。 首先,我們應(yīng)該把它們帶走,因?yàn)樗鼈儧](méi)有運(yùn)行。

不屬于自己的條件

我們應(yīng)該將條件語(yǔ)句分成自己的一行,以便我們可以更輕松地閱讀它們。

所以不用寫(xiě):

  1. if (foo) { 
  2.   //... 
  3. } if (bar) { 
  4.   //... 

我們寫(xiě):

  1. if (foo) { 
  2.   //... 
  3. if (bar) { 
  4.   //... 

注釋可選參數(shù)

可選參數(shù)在JavaScript中應(yīng)具有默認(rèn)值。 例如,我們可以編寫(xiě)以下代碼來(lái)指示參數(shù)是可選的:

  1. const foo = (a = 1) => { 
  2.   //... 

[[329879]]

> Photo by Samantha Gades on Unsplash

當(dāng)心"死存儲(chǔ)"

死存儲(chǔ)是指我們?yōu)樽兞糠峙渲?,但不使用原始值就重新分配了值?/p>

因此,我們實(shí)際上并不需要原始值,因此可以刪除該行。

所以不用寫(xiě):

  1. let x = 1
  2. x = 8 * 10; 

我們寫(xiě):

  1. let x = 8 * 10; 

不要反轉(zhuǎn)我們的布爾值

雙否定總是比直接條件表達(dá)式更難讀。

因此,我們應(yīng)該以更直接的方式編寫(xiě)是可能的。 例如,而不是寫(xiě):

  1. if (!(x > 10)) {  
  2.   //... 

我們寫(xiě):

  1. if (x <= 10) {  
  2.   //... 

如我們所見(jiàn),第二條if語(yǔ)句比第一條if語(yǔ)句更易于閱讀,并且更短。 他們都是一樣的。

使用模板字符串

模板字符串是最好的JavaScript字符串。 我們可以在其中插入表達(dá)式,而其他任何類(lèi)型的字符串都無(wú)法做到。

另外,我們可以通過(guò)在字符串中輸入換行符來(lái)創(chuàng)建多行字符串。

由于反引號(hào)用作模板字符串的定界符,因此可以在字符串內(nèi)部使用引號(hào)而不轉(zhuǎn)義它們。

結(jié)論

模板字符串很棒。 它們使我們可以做更多舊式弦弦無(wú)法完成的事情。

要向不完整的庫(kù)類(lèi)添加更多方法,我們可以使用Object.assign向它們添加自己的方法。

另外,我們需要封裝數(shù)據(jù)類(lèi),以使您的代碼不會(huì)與數(shù)據(jù)類(lèi)緊密耦合。

 

責(zé)任編輯:趙寧寧 來(lái)源: 今日頭條
相關(guān)推薦

2019-10-11 09:07:46

Java代碼對(duì)象

2012-07-13 09:35:58

PHP

2012-07-13 09:38:15

項(xiàng)目代碼

2015-07-29 13:22:40

.NET代碼

2021-05-26 11:50:37

代碼優(yōu)化Java

2012-07-19 10:42:17

項(xiàng)目

2018-08-24 21:25:02

編程語(yǔ)言代碼重構(gòu)GitHub

2022-01-26 10:29:24

微服務(wù)循環(huán)依賴(lài)代碼

2022-05-07 10:01:20

好代碼壞代碼

2020-12-01 08:36:10

代碼程序員函數(shù)

2020-04-26 10:01:14

編程學(xué)習(xí)技術(shù)

2019-09-29 16:17:25

Java代碼性能編程語(yǔ)言

2011-10-31 14:53:23

Dart

2013-12-04 14:19:40

JavaScript代碼重用

2010-09-02 11:34:51

SQL刪除

2018-03-29 14:51:59

智能公廁AI

2024-04-17 09:35:30

AI數(shù)字化

2012-05-28 15:32:05

PHP

2024-09-05 10:17:34

2024-12-11 18:24:29

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)