作者 | Sunil Sandhu
譯者 | 彎月,責編 | 屠敏
頭圖 | CSDN 下載自東方 IC
出品 | CSDN(ID:CSDNnews)
以下為譯文:
最初我想寫一篇文章詳細介紹命令式編程和聲明式編程之間的區別。有這個想法是因為我閱讀了許多關于這個話題的文章,大部分在比較兩者的區別時都使用了蹩腳的例子,比如演示怎樣將一個數字乘以2,或者找到數組中的偶數等。幾乎任何命令式編程和聲明式編程的文章都使用了類似下面的例子。
近幾年,聲明式編程越來越流行,很大一部分原因是 React 的崛起,因為它創建組件就使用了聲明式。我想說,我喜歡用聲明式的方式編寫組件,因此絕不會建議你用命令式的方式編寫 React 組件。
命令行和代碼的區別?但是我還想說,在編寫普通的 JavaScript 代碼時,有時候使用命令式還是有好處的。通常在寫完后我都會將代碼轉換成更為聲明式的代碼,因為每種想法都需要一個打磨的過程才能變得更清晰。對于我而言,這個從命令式轉變為聲明式的過程很有用,可以幫助我隔離特定的代碼、將函數泛化、實現代碼重用等。當然,在團隊中工作時這種轉變也有好處,因為聲明式代碼有助于提高代碼的語義性。
當然,與之相反的是,命令式代碼更容易被別人理解——盡管有時候你需要在代碼審查時強調你的情況。記住,“很可能有些人在意”你用的是命令式還是聲明式,而且你的領導很可能就很在意!
因此,我認為,用比較代碼區別的方式來思考命令式和聲明式之間的區別是沒有意義的,比如“這樣寫就是命令式代碼,這樣寫就是聲明式代碼”。要理解什么時候該使用命令式什么時候該使用聲明式,需要更深刻的理解,因為兩者都是你應該熟悉的工具,我認為只有多寫代碼、多嘗試才能真正掌握兩者。
不論如何,我想指出:有時候命令式代碼更合理,而有時候聲明式代碼則更合理,盡管聲明式的代碼更優雅,但聲明式的內部邏輯很可能由極其抽象的命令式代碼構成。而且你知道機器怎樣運行你的代碼嗎?機器會展開所有代碼,包括你編寫的那部分漂亮的聲明式代碼,然后將其轉換成一長列命令式的指令,供計算機執行。
所以,可能有人會在意你使用命令式還是聲明式,但計算機肯定不會在意!
原文:https://medium.com/javascript-in-plain-english/nobody-cares-whether-you-used-imperative-or-declarative-programming-66c396ecce06
本文為 CSDN 翻譯,轉載請注明來源出處。
【End】
編程語言和腳本語言的區別是什么?《原力計劃【第二季】-?學習力挑戰》正式開始!
即日起至?3月21日,千萬流量支持原創作者,更有專屬【勛章】等你來挑戰
推薦閱讀?
?國產 14nm 迎曙光,進口荷蘭光刻機順利入廠!
?阿里華為百度三足鼎立,5G 資費高,操作系統 Linux 稱王 | 中國物聯網開發者真實現狀報告
?無需3D運動數據訓練,最新人體姿勢估計方法達到SOTA | CVPR 2020
?年增代碼 12.9 億行,每天完成需求近 4000 個,鵝廠程序員秘密大爆料!
下列不屬于腳本類型的編程語言是。?如何與亦敵亦友的 null 說拜拜?大神原來是這么做的!
?從哈希函數、哈希沖突、開散列出發,一文告訴你哈希思想與哈希表構造到底是什么!
你點的每一個在看,我認真當成了喜歡
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态