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

開發沒有捷徑?10倍效率10倍價值的秘密在于此

開發 前端
即使是在軟件開發領域,我們也一直想象著,會否有一本“武林秘籍”能讓人很快打通任督二脈,進入軟件開發能力和效率的全新境界。

本文轉載自公眾號“讀芯術”(ID:AI_Discovery)。

即使是在軟件開發領域,我們也一直想象著,會否有一本“武林秘籍”能讓人很快打通任督二脈,進入軟件開發能力和效率的全新境界。

“軟件開發沒有捷徑可走!每個人都需要練習才能變得更好!”這樣的話我們聽了很多次了,但是那些擁有10倍效率的軟件生產力實踐專家是怎么做到的?有沒有什么要領可以讓人突飛猛進?有的!

[[334506]]

但是,即使我把它分享給你,詳細地講給你聽,你可能也需要花費10年的時間才能掌握它,充分體會到它的簡單性。我就是這樣的。我的高中編程老師用通俗易懂的語言闡明了這一點,然后我通過一些示例代碼,逐步了解了應用它的流程。但直到10年后,它才真正深入我心。

這個秘密就是平均效率和10倍效率之間的關鍵區別。掌握它,你能擁有全新的效率,當出現新的需求以及代碼環境發生變化時,你可以編寫出重用性更高、損壞性更低的代碼。

這個秘訣就是掌握抽象化。很多開發人員討厭“抽象化”這個詞,你會聽到這樣的建議,比如“不要過早抽象化”,或是《Python之禪》中著名的“顯式比隱式好”,暗示具體化比抽象化好。

這些建議本身是沒有問題的,但一切都取決于具體內容。現代應用程序使用了大量的代碼。如果你把現代十大應用的源代碼打印出來,紙張高度能與摩天大樓一較高下,而軟件的維護成本也很高。你創建的代碼越多,成本就越高,而抽象化是簡單代碼的關鍵。

約翰·前田在《簡單法則》中寫道:“簡單就是減去明顯的東西,加上有意義的東西。”正確的抽象化可以通過隱藏對當前上下文不重要的細節,減少執行相同工作所需的代碼量(通常是幾個數量級),從而使代碼更具可讀性、適應性和可維護性。

[[334507]]

圖源:unsplash

抽象不是一個單向的概念。它實際上是由兩個互補的概念構成的:

  • 泛化--刪除重復的(顯而易見的)的部分,并將其隱藏在抽象之后。
  • 特殊化--將抽象應用于特定用例,僅添加需要不同的部分(有意義的)。

請看以下代碼:

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

這段代碼本身沒有什么問題,但其中包含了很多細節,對該特定的應用而言可能并不重要:

  • 包含一個顯式賦值,而不是以聲明方式描述要執行的操作,這太冗長了。
  • 包括正在使用的容器/傳輸數據結構(數組)的詳細信息,這意味著它僅適用于數組,它包含狀態形狀依賴性。
  • 包括迭代邏輯,這意味著如果你需要其他操作,這些操作也需要訪問數據結構中的每個元素,那么你也需要在該代碼中重復非常相似的迭代邏輯。它強制重復,這違反DRY原則(請勿重復自己)。

這些都是沒有必要的部分,可以將其隱藏在“抽象”之后。如此一來,這種通用性很強的方法就能改變現代應用程序的構建方式,減少我們需要編寫的顯式for循環的數量。

使用map操作,可以將代碼簡化為單行本,即通過刪除明顯的部分(我們很可能在類似代碼中重復的部分),專注于有意義的部分(只是對于我們的用例來說需要不同的東西):

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

初級開發人員認為他們必須編寫大量代碼才能產生很多價值,而高級開發人員理解無需編任何寫代碼的價值。

想象一下,作為一名編碼員,你在像JavaScript這樣的編程語言中廣泛使用了map操作。Map可以把詳細信息抽象化,例如你要映射的數據類型,包含該數據的數據結構的類型以及枚舉數據結構中每個數據節點所需的迭代邏輯。正是這樣,十年來,它提高了我開發每個應用程序的效率。

[[334508]]

圖源:unsplash

杰里米·阿什肯納斯使此類操作在JavaScript中變得很流行,并通過開拓在CoffeeScript中的使用,為我們在JavaScript中理所當然的許多重要語法快捷方式鋪平了道路。

他制作了Underscore和Backbone,Backscore產生了Lodash(JavaScript中最受歡迎的功能編程實用程序帶),Backbone則使JavaScript中的MVC架構得以普及,并為Angular和React奠定了基礎。

約翰·雷西格制作了非常流行和有影響力的jQuery,它形成了可重用的、封裝的JavaScript模塊(jQuery插件)的最大集合,直到幾年后出現了標準的Node模塊和ES6模塊。

jQuery的選擇器API如此有影響,它構成了當今DOM選擇API的基礎。當要對React組件進行單元測試時,我仍然能從jQuery的選擇API中受益。

給我一個足夠長的杠桿和支點,我就能翹起地球。正確的抽象就是可以極大地影響生產力的強大杠桿。抽象并不是一個令人討厭的字眼,模塊、函數、變量、類,所有這些都是抽象的形式,它們存在的全部原因是為了簡化抽象和抽象的構成。

沒有抽象就不能構建復雜的軟件。即使是匯編語言也會使用抽象——指令名稱、內存地址變量、子例程(如函數調用)跳轉到的代碼點等。現代軟件是由抽象構成的分層蛋糕,每一層都給你一個撬動不可能的支點。

開發沒有捷徑?10倍效率10倍價值的秘密在于此

圖源:unsplash

我們所追求的高效率關鍵在于簡單性,即如何減少正在生成的代碼數量,如何用更少的資源完成更多的工作,掌握抽象化,你就掌握了秘訣。

 

責任編輯:趙寧寧 來源: 今日頭條
相關推薦

2011-12-27 09:31:13

程序員

2020-10-29 09:06:56

開發工具技術

2020-05-20 12:44:53

編程軟件開發JavaScript

2018-01-19 09:00:37

2011-07-01 10:11:39

2023-12-01 15:54:44

2022-05-10 09:40:26

運維游戲實踐

2022-12-13 08:45:01

3F傾聽模型

2024-11-25 09:11:43

2014-03-26 10:00:06

RailsRails性能

2018-01-02 14:27:02

大數據白血病HLA血液配型

2016-10-08 16:02:37

WIFIMegaMIMO系統

2019-09-26 08:33:51

Nginx技術Java

2018-08-23 17:45:52

2025-04-03 08:36:31

2025-03-31 00:05:00

2020-10-12 19:03:40

Chrome功能瀏覽器

2020-07-21 15:40:55

NginxJava服務器

2025-05-27 01:55:00

TypeScript開發者項目

2020-03-26 12:38:15

代碼節點數據
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 人人澡人人爱 | 国产精品揄拍一区二区久久国内亚洲精 | h视频在线看 | 中文字幕成人av | 国产精品亚洲精品久久 | 成人免费视频网站在线观看 | 欧美激情在线一区二区三区 | 在线一区视频 | 伊人精品在线 | 日韩成人免费视频 | 国产高清无av久久 | 国产精品久久久久aaaa樱花 | 免费观看毛片 | 欧美性大战久久久久久久蜜臀 | 日韩欧美在线播放 | 久草中文在线 | 亚洲精品乱码久久久久久蜜桃 | 亚洲精品国产a久久久久久 午夜影院网站 | 亚洲精品视频免费观看 | 亚洲精品福利视频 | 成人精品影院 | 免费观看一级毛片 | 日韩久久久一区二区 | 亚洲天堂一区 | 伊人青青久久 | 91国在线 | 久久精品av麻豆的观看方式 | 国产小视频在线观看 | 久久国产精品一区二区 | 国产免费一区二区 | 人人澡人人射 | a级毛片毛片免费观看久潮喷 | 男人天堂网av | 亚洲www啪成人一区二区 | 日韩有码在线观看 | 亚洲精品一区二区在线 | 中文字幕 在线观看 | 伊人狠狠干 | 欧美日韩一 | 玖玖视频免费 | 人人爱干|