日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

微软Project Springfield团队的F#使用心得

發(fā)布時(shí)間:2023/12/4 javascript 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 微软Project Springfield团队的F#使用心得 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Project Springfield是一個(gè)用于在軟件中查找關(guān)鍵安全錯(cuò)誤的模糊測(cè)試服務(wù)。微軟Springfield團(tuán)隊(duì)首席軟件工程經(jīng)理William Blum介紹了他們團(tuán)隊(duì)如何利用F#來構(gòu)建云服務(wù)。

簡(jiǎn)潔性經(jīng)常被認(rèn)為是F#的主要優(yōu)點(diǎn)之一。Blum提供了一些Project Springfield相關(guān)的數(shù)據(jù):

為了移除一些舊的依賴,我們將一個(gè)Perl腳本移植成F#程序,代碼量減少了37%。在另外一個(gè)工作中,我們將1338行PowerShell腳本移植到F#只需要489行(小了2.7倍)。在這兩種情況下,除了代碼量的減少,最終的F#程序還在日志記錄、可讀性和可靠性方面得到了改進(jìn)(部分由于靜態(tài)類型檢查的原因)。

Jet的軟件工程師Rachel Reese在F#的簡(jiǎn)潔性方面持有相同的觀點(diǎn),她在“為什么電子商務(wù)公司選擇F#”中提到:

所以,我們開始構(gòu)建兩種方案:C#方案和F#方案,來比較他們的效果。最后,我們選擇堅(jiān)持使用F#。主要原因在于F#使我們能夠以更少的代碼提供相同的功能,這顯然更容易維護(hù)并減少了錯(cuò)誤。

代碼正確性也常常被Springfield團(tuán)隊(duì)和F#用戶提到。例如,空引用,也被稱為“十億美元的錯(cuò)誤”,在F#中是不允許的。在F#中,缺失的數(shù)據(jù)使用Option類型表示,其中值可以是Some valueOfAVariable或None。

可區(qū)分聯(lián)合并不局限于Option類型,它們也可以表示復(fù)雜的對(duì)象,然后在模式匹配表達(dá)式中使用。下面的代碼段演示了一個(gè)事件類型和調(diào)度它的函數(shù)。Blum解釋說,代碼被授權(quán)處理所有情況,因?yàn)樗怯删幾g器執(zhí)行的。

type CustomerId = System.Guidtype EventType =| MsgType1 of CustomerId| MsgType2 of CustomerId * string * int| MsgType3 of CustomerId * string * int option// 用模式匹配來處理信息 let dispatch msg =match msg with| MsgType1 -> ...| MsgType2 -> ...| MsgType3 -> ...

F#還增加了使用類型提供程序驗(yàn)證動(dòng)態(tài)數(shù)據(jù)源的可能性。類型提供程序支持對(duì)數(shù)據(jù)源(如SQL數(shù)據(jù)庫或JSON)在編譯時(shí)完成驗(yàn)證,而不是在執(zhí)行時(shí)。

Springfield采用動(dòng)態(tài)分配計(jì)算資源的方式,因此需要在運(yùn)行時(shí)生成JSON參數(shù)文件,這是一個(gè)容易出錯(cuò)的任務(wù)。使用F#類型提供程序,我們可以在編譯時(shí)靜態(tài)驗(yàn)證我們生成的模板參數(shù)是否有效。因?yàn)槲覀兊腁RM模板不斷發(fā)展,這極大地加快了開發(fā)和調(diào)試過程。

Springfield團(tuán)隊(duì)還采用了F#來編寫腳本。REPL環(huán)境F# Interactive提供了一種在沒有預(yù)先編譯的情況下執(zhí)行F#腳本的方法,這是腳本語言的一個(gè)預(yù)期功能。

F#腳本的另一個(gè)優(yōu)點(diǎn)是靜態(tài)類型檢查,這對(duì)腳本語言來說是不尋常的!實(shí)際上,這將大大節(jié)省調(diào)試時(shí)間。IDE中的智能感知功能會(huì)立即發(fā)現(xiàn)錯(cuò)誤(如變量名稱中的拼寫錯(cuò)誤或輸入錯(cuò)誤)。重構(gòu)代碼也會(huì)更加方便。這與我們團(tuán)隊(duì)以前采用的PowerShell腳本的脆弱性形成鮮明對(duì)比。

原文地址:http://www.infoq.com/cn/news/2017/01/fsharp-project-springfield


.NET社區(qū)新聞,深度好文,微信中搜索dotNET跨平臺(tái)或掃描二維碼關(guān)注

總結(jié)

以上是生活随笔為你收集整理的微软Project Springfield团队的F#使用心得的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。