<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      工程化思想總結(jié)

      前言:本人和Jack兩人創(chuàng)立Wonder科技兩年已久,雖然公司還沒注冊,但我們的項目已經(jīng)開發(fā)到1.2版本,由于種種原因項目停止了開發(fā)。Jack開始了寫書的道路,而我,也面臨了找工作的事情,在找工作之前,我想先把這兩年學(xué)習(xí)的東西進(jìn)行總結(jié)和復(fù)盤,如若能幫助大家,也算是做了件好事。

      先給大家介紹下我們的項目,以及我們?nèi)绾问褂霉こ袒枷脒M(jìn)行項目重寫和重構(gòu)。

      我們開發(fā)的是Web端3D WebGL引擎和在線編輯器,其中Jack主要負(fù)責(zé)引擎,我主要負(fù)責(zé)3D編輯器以及公司官網(wǎng)、論壇、托管平臺等系統(tǒng)開發(fā)。在這期間我也熟悉引擎并開發(fā)了引擎中的自由相機功能,以及集成到編輯器中使用,為此,我想總結(jié)下這兩年來跟隨Jack學(xué)習(xí)到的工程化思想。

      一、中大型項目的根基:測試驅(qū)動開發(fā)

      剛接觸TDD的時候我想大家肯定也和我一樣迷茫,到底花費那么多時間寫測試有沒有必要,尤其是前端開發(fā)同學(xué),很多公司不要求你寫測試,所以大環(huán)境下前端程序員基本不會寫測試。我先列舉自動化測試的優(yōu)點:

      • 降低成本:程序員以自動化測試捕捉到bug,成為一個測試用例,就把這個bug固定住,以后有任何重構(gòu)讓這個bug重現(xiàn)都能報錯,這樣我們不需要測試團隊
      • 減少時間:只需要寫一遍測試就可以一直復(fù)用,效率肯定比人工高
      • 正確性:只要測試代碼覆蓋越多的產(chǎn)品代碼,就能保證產(chǎn)品代碼的正確性
      • 代碼復(fù)用性、可擴展性:當(dāng)項目發(fā)展到一定量級,沒有自動化測試支撐的項目,很難進(jìn)行代碼維護(hù)和重構(gòu)
      • 測試可讀性:良好的測試也可以當(dāng)做文檔方便閱讀
      • 增加信心:幫助我們增加對軟件的信心,也讓用戶更放心使用我們的產(chǎn)品

      我們的編輯器測試覆蓋率達(dá)到87%,覆蓋了所有編輯器與引擎交互的業(yè)務(wù)邏輯代碼,在我們項目迭代過程中,我也越來越感受到自動化測試的重要性。此外,測試驅(qū)動開發(fā)還有一個優(yōu)勢就是,我們在進(jìn)行需求設(shè)計的時候,以先寫測試的形式進(jìn)行開發(fā),在這個開發(fā)過程中,我們從用戶角度分析這個需求,進(jìn)而可以幫助我們完善自己的代碼設(shè)計,在編程過程中,又有測試保證代碼的正確性。

      所以在編寫3D引擎或者Web富應(yīng)用(如釘釘,工具類網(wǎng)站)的時候,我覺得公司有必要考慮進(jìn)行自動化測試,不然項目發(fā)展起來可能會出現(xiàn)無法迭代的后果。

      二、契約式設(shè)計:增加代碼的健壯性

      何為契約式設(shè)計?

      契約式設(shè)計(DbC)是一種設(shè)計計算機軟件的方法。這種方法描述了,軟件設(shè)計者應(yīng)該為軟件組件定義正式的、準(zhǔn)確的、可驗證的接口規(guī)范,它擴展了抽象數(shù)據(jù)類型對于先驗條件、后驗條件和不變性的一般定義。這些規(guī)范稱為“契約”,它是一個比喻,類似于商業(yè)契約/合同的條件和職責(zé)。

      我們內(nèi)部開發(fā)的時候,每次完成一個功能,都會進(jìn)行代碼檢查,Jack也會根據(jù)自己以往的經(jīng)驗進(jìn)行重構(gòu),在重構(gòu)過程中我也掌握到契約式設(shè)計的好處和必要性。由于我們使用的函數(shù)式編程范式,函數(shù)是基本單位,所以放大了契約式設(shè)計的優(yōu)勢,所以我們?yōu)楹芏嗵囟ê瘮?shù)寫契約,使用先驗條件和后驗條件來保證函數(shù)的健壯性。

      先驗條件: 保證API的輸入是我們期望的輸入,比如我們設(shè)計一個數(shù)組操作API,那我們需要保證參數(shù)為一個數(shù)組,這時候我們寫先驗條件,保證參數(shù)類型為數(shù)組,再進(jìn)行操作,如果不是則拋出錯誤。

      后驗條件: 保證API的輸出是我們期望的輸出,比如某個特定API,需要輸出數(shù)據(jù)不為空,這時候我們寫后驗條件,期望他的返回值不為空。

      在線上運行時我們需要保證錯誤定位,根據(jù)我們的產(chǎn)品上線經(jīng)驗來看,大多數(shù)報錯都來自于好的契約設(shè)計,讓我們能快速定位到問題的位置,所以我覺得在我們設(shè)計API的時候可以使用到契約式設(shè)計,來保證API的健壯性。

      三、團隊規(guī)范

      團隊內(nèi)部規(guī)范定義是一個重要的事情,能保證一個團隊的產(chǎn)出就像一個人完成的一樣,也使得團隊成員之間能夠無縫銜接完成工作,也不必?fù)?dān)心成員變動等問題。下面我介紹一下我們團隊的規(guī)范。

      1.git提交規(guī)范
      我們使用cz-customizable庫以及規(guī)范的CZ提交規(guī)范

      2.代碼規(guī)范

      代碼規(guī)范主要使用項目負(fù)責(zé)人的編程規(guī)范,或者使用成熟團隊的編程規(guī)范,執(zhí)行主要使用代碼審核的方式把新人的編程習(xí)慣規(guī)范下來,每次功能完成以后都花時間進(jìn)行代碼審核尤為重要,第一保證新人的工作質(zhì)量,第二保證新人的編程規(guī)范。

      四、自動化工具

      我一直是相信人是會犯錯的,但機器不會,所以我們需要把團隊經(jīng)常重復(fù)手動執(zhí)行的工作交給機器來做,大公司是專門有內(nèi)部工具團隊來做這個事情,我們兩個人的話當(dāng)然也是我們自己寫的自動化工具。

      以前在看程序員分級的文章里提到一句話,拋開工具的使用,程序員與程序員之間的差距并不是很大,而對新工具的使用,能培養(yǎng)程序員一套新的思維方式,進(jìn)而促使他們更新自己的思維。

      1.Vim操作命令

      在我認(rèn)識Jack的時候,當(dāng)時還沒一起合作,Jack在后期給我的指導(dǎo)是學(xué)習(xí)Vim和TypeScript,而我在三個月的Vim學(xué)習(xí)過程中放棄過無數(shù)次,但第二天又再次撿起來,終于能夠形成肌肉記憶,從此感受到Vim給我?guī)淼木幊炭旄校乙矎囊恢笔謩又貜?fù)做事情,進(jìn)階到使用工具快速完成的思維,以前寫代碼使用鍵盤搭配鼠標(biāo),移動光標(biāo)慢,導(dǎo)致編程速度慢。在使用Vim以后純鍵盤操作,在編程時經(jīng)常感受到自己很厲害,常常自我陶醉,這也是編程的樂趣之一。

      2.Emacs

      網(wǎng)上經(jīng)常有人討論Vim和Emacs孰好孰壞的問題,我使用Emacs主要使用Emacs-org進(jìn)行TODO管理,依然使用的vim操作命令,還需要學(xué)習(xí)Emacs的基礎(chǔ)命令,在記錄筆記和TODO的時候,真心感覺好用。

      3.chrome插件

      因為我們編輯器主要運行在chrome上,所以使用好的chrome插件可以幫助我們在瀏覽器上進(jìn)行操作。
      我覺得最好的是Vimium插件,在瀏覽器上使用vim命令,進(jìn)行操作,大多數(shù)時候都不需要鼠標(biāo)就能流暢使用瀏覽器。
      還有其他的都是私人插件,根據(jù)個人喜好進(jìn)行選擇,在這我就不多介紹了。

      4.自動化部署

      把本地項目推送到遠(yuǎn)程服務(wù)器時,寫工具實現(xiàn)自動化項目部署,把項目發(fā)布能夠保證正確和簡便。

      5.CI測試檢查

      項目發(fā)布新版本,推送到遠(yuǎn)程服務(wù)器,先自動運行測試CI檢查,保證所有測試通過再提交。

      6.自動化發(fā)布

      項目發(fā)布新版本,自動化更新版本號,執(zhí)行發(fā)布流程。

      結(jié)束語: 在結(jié)束自己兩年的創(chuàng)業(yè)生涯其實還是挺舍不得,多情自古傷離別,不過我們每個人都有自己的生活要過,我和Jack亦師亦友,感謝Jack多年的教導(dǎo)和關(guān)愛。在本科畢業(yè)第三年,我從Wonder科技畢業(yè)了,以后的路,依然天高任鳥飛。

      posted @ 2019-10-21 14:41  櫻良o(jì)rz  閱讀(714)  評論(1)    收藏  舉報
      主站蜘蛛池模板: 天天看片视频免费观看| 亚洲成年av天堂动漫网站| 九九久久精品国产免费看小说| 四虎永久在线精品免费看| 亚洲中文日韩一区二区三区| 国产成人午夜福利在线播放| 国产综合久久久久鬼色| 日韩一区二区三区不卡片| 岛国最新亚洲伦理成人| 国产成人精品国产成人亚洲| 东方四虎av在线观看| 少妇人妻偷人精品系列| 九九热久久只有精品2| 伊人久久大香线蕉综合影院| 乱人伦人妻中文字幕在线| 思思99热精品在线| 熟妇的味道hd中文字幕| 美女爽到高潮嗷嗷嗷叫免费网站| 国产av国片精品一区二区| 日韩人妻无码一区二区三区| 久久天天躁夜夜躁狠狠85| 韩国主播av福利一区二区 | 又黄又爽又色的少妇毛片| 国产国语对白露脸正在播放| 搡老女人老妇女老熟妇| 色爱无码av综合区| 国产麻豆一区二区精彩视频| 深夜视频国产在线观看| 中文字幕无码久久精品| 精品亚洲综合一区二区三区| 狠狠色噜噜狠狠狠狠2021| 久久久久无码中| 久久久久无码精品国产不卡| 日韩有码中文字幕av| 黑人异族巨大巨大巨粗| 国产精品爽爽va在线观看网站| 无码av天天av天天爽| 超碰人人超碰人人| 真实国产老熟女无套内射| 国产性一交一乱一伦一色一情 | 亚洲阿v天堂网2021|