成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

簡(jiǎn)單代碼的秘訣—去掉顯而易見(jiàn)的,加上有意義的

開(kāi)發(fā) 前端
現(xiàn)代應(yīng)用程序的代碼量普遍很大。 如果我們把現(xiàn)代十大應(yīng)用程序的源代碼打印出來(lái),那么這些紙疊起來(lái)的高度將可以比得上一座摩天大樓,由此可以想象軟件的維護(hù)成本有多高。 也就是說(shuō),寫(xiě)的代碼越多,成本就越高。

 成為10倍開(kāi)發(fā)人員有捷徑可走嗎? 是否有這樣一個(gè)神奇的秘密,可以幫助我們打開(kāi)一個(gè)全新的軟件開(kāi)發(fā)精通和生產(chǎn)力世界?懷疑者們通常會(huì)說(shuō):“當(dāng)然沒(méi)有捷徑可走! 每個(gè)人都需要不斷的練習(xí)才能變得更好!”

的確如此,但是軟件生產(chǎn)力實(shí)踐的專(zhuān)家是什么?有沒(méi)有一件可以產(chǎn)生巨大變化的關(guān)鍵事情?答案是有的!但是,即使我現(xiàn)在拿出來(lái)分享,一字一句講給你聽(tīng),可能你還是需要要花10年才能有足夠多的經(jīng)驗(yàn)來(lái)領(lǐng)悟它極致的簡(jiǎn)單性。

是的,這就是發(fā)生在我身上的事情。 我上學(xué)時(shí)候的程序設(shè)計(jì)老師用通俗易懂的話給我講過(guò)一遍,并且用一些示例代碼一步步教我如何去運(yùn)用它。 然而直到10年后,我才真正理解。 但是現(xiàn)在,憑借過(guò)往的經(jīng)驗(yàn),我深深地體會(huì)到了這堂課的意義,我現(xiàn)在就分享給你。

這個(gè)秘密是平均生產(chǎn)率和10倍生產(chǎn)率之間的關(guān)鍵區(qū)別,如同杠桿一般,可以讓我們把效率提高幾個(gè)數(shù)量級(jí)。

生產(chǎn)率提高10倍的秘訣是學(xué)會(huì)如何抽象(Abstraction)。 許多開(kāi)發(fā)人員將“抽象”視為一個(gè)臟話。 也許你會(huì)經(jīng)常聽(tīng)到這樣的建議,例如“不要過(guò)早抽象”或 Python 之禪中著名的“顯式勝于隱式”,這意味著具體(Concrete)要?jiǎng)儆诔橄蟆?這些建議都是很有價(jià)值的,不過(guò)也得看問(wèn)題的上下文。

現(xiàn)代應(yīng)用程序的代碼量普遍很大。 如果我們把現(xiàn)代十大應(yīng)用程序的源代碼打印出來(lái),那么這些紙疊起來(lái)的高度將可以比得上一座摩天大樓,由此可以想象軟件的維護(hù)成本有多高。 也就是說(shuō),寫(xiě)的代碼越多,成本就越高。

抽象是簡(jiǎn)單代碼的關(guān)鍵

正確的抽象可以隱藏對(duì)當(dāng)前上下文不重要的細(xì)節(jié),并減少執(zhí)行相同工作所需的代碼量(通常減少幾個(gè)數(shù)量級(jí)),從而使代碼更具可讀性,適應(yīng)性和可維護(hù)性。

簡(jiǎn)單就是去掉顯而易見(jiàn)的,加上有意義的。——John Maeda《簡(jiǎn)單的法則》

抽象并不是一條單向路。 它實(shí)際上是由兩個(gè)互補(bǔ)的概念構(gòu)成的:

  • 泛化(Generalization)——刪除重復(fù)的部分(顯而易見(jiàn)的部分)并將其隱藏在抽象后面。
  • 特化(Specialization)——將抽象應(yīng)用于特定用例,僅添加需要不同的內(nèi)容(有意義的內(nèi)容)。

考慮以下代碼:

  1. const doubleList = (list) => { 
  2.   const newList = []; 
  3.   for (var i = 0; i < list.length; i++) { 
  4.     newList[i] = list[i] * 2; 
  5.   } 
  6.   return newList; 
  7. }; 

這些代碼本質(zhì)上沒(méi)有錯(cuò),但其中包含許多瑣碎的細(xì)節(jié),對(duì)于特定應(yīng)用而言可能并不重要。

  • 它包含正在使用的容器/數(shù)據(jù)結(jié)構(gòu)(數(shù)組)的詳細(xì)信息,這意味著它僅適用于數(shù)組。 它包含狀態(tài)形狀依賴(lài)性。
  • 它包含迭代邏輯,這意味著如果其他操作也需要訪問(wèn)數(shù)據(jù)結(jié)構(gòu)中的每個(gè)元素,則還需要在該代碼中重復(fù)非常相似的迭代邏輯,這就可能違反 DRY(Do not Repeat Yourself)原則。
  • 它包括一個(gè)顯式賦值,而不是以聲明方式描述要執(zhí)行的操作,太冗長(zhǎng)了。

這些都沒(méi)有必要。所有這些都可以隱藏在抽象后面。在這種情況下,這種非常通用的抽象方法改變了現(xiàn)代應(yīng)用程序的構(gòu)建方式,并減少了我們需要編寫(xiě)的顯式for循環(huán)的數(shù)量。

當(dāng)你帶著深刻的覺(jué)知觸及了一個(gè)事物, 你就觸及到了一切。——釋一行

 

通過(guò)使用 map 操作,我們可以通過(guò)刪除明顯的代碼(我們可能會(huì)在相似的代碼中重復(fù)的部分)并將代碼集中在有意義的代碼上(只是需要與我們使用的代碼有所不同的代碼),從而簡(jiǎn)化成一行代碼:

  1. const doubleList = list => list.map(x => x * 2); 

初級(jí)程序員認(rèn)為他們必須編寫(xiě)大量代碼才能產(chǎn)生很多價(jià)值。而高級(jí)程序員了解無(wú)需編寫(xiě)任何代碼的價(jià)值。

想象一下,作為一名程序員,他在像JavaScript這樣的編程語(yǔ)言中廣泛使用了map操作。Map 操作抽象了被操作的數(shù)據(jù)節(jié)點(diǎn)的類(lèi)型,包含該數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)的類(lèi)型以及每個(gè)數(shù)據(jù)節(jié)點(diǎn)的迭代邏輯。過(guò)去十年來(lái),它提高了我開(kāi)發(fā)的每個(gè)應(yīng)用程序的效率。

Jeremy Ashkenas 使這些操作在 JavaScript 中變得很流行,并且通過(guò)開(kāi)創(chuàng)性的 CoffeeScript,為目前 JavaScript 中理所當(dāng)然的許多重要的快捷語(yǔ)法奠定了基礎(chǔ)。 他開(kāi)發(fā)了 Underscore 和 Backbone,Underscore 產(chǎn)生了 Lodash(至今仍然是 JavaScript 中最受歡迎的工具庫(kù)之一),Backbone 則使 JavaScript 中的 MVC 架構(gòu)得以普及,并為 Angular 和 React 奠定了基礎(chǔ)。

John Resig 開(kāi)發(fā)了流行和有影響力的 jQuery,它形成了可重用的,封裝的 JavaScript 模塊(jQuery插件)的最大集合,直到幾年后標(biāo)準(zhǔn)的 Node 模塊和 ES6 模塊出現(xiàn)。jQuery 的選擇器 API 影響深遠(yuǎn),它構(gòu)成了當(dāng)今 DOM Selection API 的基礎(chǔ)。當(dāng)我對(duì) React 組件進(jìn)行單元測(cè)試時(shí),我仍然幾乎每天都會(huì)從 jQuery 的選擇 API 中受益。

正確的抽象是可以極大地影響生產(chǎn)力的強(qiáng)大杠桿。抽象不是一個(gè)臟話。模塊,函數(shù),變量,類(lèi)——所有這些都是抽象形式,它們存在的全部原因就是為了簡(jiǎn)化抽象和抽象的構(gòu)成。

沒(méi)有抽象就無(wú)法構(gòu)建復(fù)雜的軟件,甚至匯編語(yǔ)言也使用抽象——指令的名稱(chēng),內(nèi)存地址的變量,子例程(例如函數(shù)調(diào)用)跳轉(zhuǎn)到的代碼點(diǎn)等。現(xiàn)代軟件是有用的抽象的多層蛋糕,這些層為您提供了杠桿作用。

給我一根足夠長(zhǎng)的杠桿和支撐它的支點(diǎn),我將翹起整個(gè)地球。——阿基米德

 

簡(jiǎn)單的關(guān)鍵就是:如何減少我們正在生產(chǎn)的代碼的數(shù)量,如何用更少的錢(qián)做更多的事情。掌握了這一點(diǎn)之后,您將成為10倍的程序員,我保證。

 

責(zé)任編輯:姜華 來(lái)源: 圖雀社區(qū)
相關(guān)推薦

2019-12-05 18:00:39

物聯(lián)網(wǎng)智能手表機(jī)器人

2014-11-24 10:48:49

OpenStack私有災(zāi)難恢復(fù)

2021-04-22 15:55:56

UCaaS統(tǒng)一通信企業(yè)通信

2023-01-30 07:55:44

代碼過(guò)度設(shè)計(jì)

2016-02-17 09:06:42

代碼注釋代碼規(guī)范

2021-02-19 09:45:50

Python面向?qū)ο?/a>代碼

2021-03-04 13:25:22

Python面向?qū)ο?/a>代碼

2021-04-06 11:21:50

Python面向?qū)ο?/a>代碼

2015-04-23 16:21:23

2019-01-24 10:23:58

Web前端密碼加密

2020-06-04 08:05:06

物聯(lián)網(wǎng)客戶見(jiàn)解IOT

2011-08-23 09:00:47

可用性五個(gè)九

2011-09-09 10:31:40

Xen虛擬化linux內(nèi)核

2016-02-17 10:01:36

編程代碼注釋

2022-02-28 22:52:56

混合云工具技術(shù)

2022-09-30 09:24:10

思維辦公IT

2021-05-21 10:33:37

數(shù)據(jù)中心數(shù)據(jù)存儲(chǔ)

2023-08-30 08:04:03

架構(gòu)前端應(yīng)用程序

2021-10-28 15:02:16

OpenHarmony微納衛(wèi)星

2014-01-02 14:59:52

中顧保鏢私人定制
點(diǎn)贊
收藏

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

主站蜘蛛池模板: 欧美日韩一二三区 | 国偷自产av一区二区三区 | 国产成人精品免费 | 国产成人网 | 午夜影院在线观看 | 精品入口麻豆88视频 | 国产精品亚洲片在线播放 | 成年视频在线观看福利资源 | 九色在线观看 | aaa天堂| 天天爽夜夜爽精品视频婷婷 | 亚洲天堂一区二区 | 亚洲 欧美 日韩 在线 | 一级黄在线观看 | 色资源在线观看 | 国产一区不卡 | 欧美日韩专区 | 91免费入口 | 日本涩涩视频 | 久久a久久 | 99久久免费精品国产男女高不卡 | 伊人性伊人情综合网 | 精品一二区 | 亚洲一区二区精品视频在线观看 | 国产成人99久久亚洲综合精品 | 婷婷色在线 | 国产日韩久久 | 成人1区2区 | 日韩欧美专区 | 日本91av视频 | 精品一区在线看 | 日本黄色免费视频 | 亚洲理论在线观看电影 | 亚洲精品成人 | 国产特级毛片aaaaaa喷潮 | 日韩电影一区 | 亚洲成av| 国产美女精品 | 日本久久久久久久久 | 国产精品一区二区在线 | 精品日韩 |