<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          熟讀代碼簡(jiǎn)潔之道,為什么我還是選擇屎山

          共 3399字,需瀏覽 7分鐘

           ·

          2023-08-16 21:16

          作者:螞小蟻

          原文:https://juejin.cn/post/7255686239756533818

          代碼簡(jiǎn)潔仍然是一個(gè)程序員的基本素養(yǎng),大家也都對(duì)屎山代碼非常關(guān)注;但是關(guān)注歸關(guān)注,執(zhí)行起來(lái)卻非常困難;我明明知道這段代碼的最佳實(shí)踐,但是我就是不那樣寫,因?yàn)槲矣泻芏嚯y言之隱;

          沒(méi)有嚴(yán)格的卡口

          沒(méi)有約束就沒(méi)有行動(dòng),比方說(shuō)eslint,eslint只能減少很少一部分屎山,而且如果不在打包機(jī)器上配置eslint的話那么eslint都可以被繞過(guò);對(duì)我個(gè)人而言,實(shí)現(xiàn)一個(gè)需求,當(dāng)然是寫屎山代碼要來(lái)的快一些,我寫屎山代碼能夠6點(diǎn)準(zhǔn)時(shí)下班,要是寫最佳實(shí)踐可能就要7點(diǎn)甚至8點(diǎn)下班了,沒(méi)有人愿意為了代碼整潔度而晚一點(diǎn)下班的。

          沒(méi)有CodeReview,CodeReview如果不通過(guò)會(huì)被打回重新修改,直到代碼符合規(guī)范才能提交到git。CodeReview是一個(gè)很好地解決團(tuán)隊(duì)屎山代碼的工具,只可惜它只是一個(gè)理想。因?yàn)閷?shí)際情況是根本不可能有時(shí)間去做CodeReview,連基本需求都做不完,如果去跟老板申請(qǐng)一部分時(shí)間來(lái)做CodeReview,老板很有可能會(huì)對(duì)你進(jìn)行靈魂三連問(wèn):你做為什么要做CodeReivew?CodeReview的價(jià)值是什么?有沒(méi)有量化的指標(biāo)?對(duì)于屎山代碼的優(yōu)化,對(duì)于開發(fā)體驗(yàn)、開發(fā)效率、維護(hù)成本方面,這些指標(biāo)都非常難以衡量,它們對(duì)于業(yè)務(wù)沒(méi)有直接的價(jià)值,只能間接地提高業(yè)務(wù)的開發(fā)效率,提高業(yè)務(wù)的穩(wěn)定性,所以老板只注重結(jié)果,只需要你去實(shí)現(xiàn)這個(gè)需求,至于說(shuō)代碼怎么樣他并不關(guān)心;

          沒(méi)有代碼規(guī)約

          大廠一般都有代碼規(guī)約,比如:2021最新阿里代碼規(guī)范(前端篇)[1]百度代碼規(guī)范[2]

          但是在小公司,一般都沒(méi)有代碼規(guī)范,也就是說(shuō)代碼都無(wú)章可循;這種環(huán)境助長(zhǎng)了屎山代碼的增加,到頭來(lái)屎山堆得非常高了,之后再想去通過(guò)重構(gòu)來(lái)優(yōu)化這些屎山代碼,這就非常費(fèi)力了;所以要想優(yōu)化屎山代碼光靠個(gè)人自覺,光靠多讀點(diǎn)書那是沒(méi)有用的,也執(zhí)行不下去,必須在團(tuán)隊(duì)內(nèi)形成一個(gè)規(guī)范約定,制定規(guī)約宜早不宜遲

          沒(méi)有思考的時(shí)間

          另外一個(gè)造成屎山代碼的原因就是沒(méi)時(shí)間;產(chǎn)品經(jīng)理讓我半天完成一個(gè)需求,老大說(shuō)某個(gè)需求很緊急,要我兩天內(nèi)上線;在這種極限壓縮時(shí)間的需求里面,確實(shí)沒(méi)有時(shí)間去思考代碼怎么寫,能cv盡量cv;但是一旦養(yǎng)成習(xí)慣,即使后面有時(shí)間也不會(huì)去動(dòng)腦思考了;我個(gè)人的建議是不要總是cv,還是要留一些時(shí)間去思考代碼怎么寫,至少在接到需求到寫代碼之前哪怕留個(gè)5分鐘去思考,也勝過(guò)一看到需求差不多就直接cv;

          框架約束太少

          越是自由度高的框架越是容易寫出屎山代碼,因?yàn)楹芏鄸|西不約束的話,代碼就會(huì)不按照既定規(guī)則去寫了;比如下面這個(gè)例子: stackblitz.com/edit/vue-4a…[3]

          這個(gè)例子中父組件調(diào)用子組件,子組件又調(diào)用父組件,完全暢通無(wú)阻,完全可以不遵守單向數(shù)據(jù)流,這樣的話為了省掉一部分父子組件通信的邏輯,就直接調(diào)用父組件或者子組件,當(dāng)時(shí)為了完成需求我這么做了,事后我就后悔了,極易引起bug,比如說(shuō)下一次這個(gè)需求要改到這一部分邏輯,我忘記了當(dāng)初這個(gè)方法還被父組件調(diào)用,直接修改了它,于是就引發(fā)線上事故;最后自己績(jī)效不好看,但是全是因?yàn)樽约寒?dāng)初將父子組件之間耦合太深了;

          自己需要明白一件事情那就是框架自由度越高,越需要注意每個(gè)api調(diào)用的方式,不能隨便濫用;框架自由不自由這個(gè)我無(wú)法改變,我只能改變自己的習(xí)慣,那就是用每一個(gè)api之前思考一下這會(huì)給未來(lái)的維護(hù)帶來(lái)什么困難;

          沒(méi)有代碼質(zhì)量管理平臺(tái)

          沒(méi)有代碼質(zhì)量管理平臺(tái),你說(shuō)我寫的屎山,我還不承認(rèn),你說(shuō)我代碼寫的不好,邏輯不清晰,我反問(wèn)你有沒(méi)有數(shù)據(jù)支撐

          但是當(dāng)代碼質(zhì)量成為上線前的一個(gè)關(guān)鍵指標(biāo)時(shí),每個(gè)人都不敢懈怠;常見的代碼質(zhì)量管理平臺(tái)有SonarQube[4]DeepScan[5],這些工具能夠繼承到CI中,成為部署的一個(gè)關(guān)鍵環(huán)節(jié),為代碼質(zhì)量保駕護(hù)航;代碼的質(zhì)量成為了一個(gè)量化指標(biāo),這樣的話每個(gè)人的代碼質(zhì)量都清晰可見

          最后

          其實(shí)看到屎山代碼,每一個(gè)人都應(yīng)該感到慶幸,這說(shuō)明有很多事情要做了,有很多基建可以開展起來(lái);推動(dòng)團(tuán)隊(duì)制定代碼規(guī)約、開發(fā)eslint插件檢查代碼、為框架提供API約束或者部署一個(gè)代碼質(zhì)量管理平臺(tái),這一頓操作起來(lái)績(jī)效想差都差不了;

          參考資料

          [1]

          https://developer.aliyun.com/article/850913: https://link.juejin.cn?target=https%3A%2F%2Fdeveloper.aliyun.com%2Farticle%2F850913

          [2]

          https://github.com/ecomfe/spec: https://link.juejin.cn?target=https%3A%2F%2Fgithub.com%2Fecomfe%2Fspec

          [3]

          https://stackblitz.com/edit/vue-4af73c?file=src%2FApp.vue: https://link.juejin.cn?target=https%3A%2F%2Fstackblitz.com%2Fedit%2Fvue-4af73c%3Ffile%3Dsrc%252FApp.vue

          [4]

          https://www.sonarsource.com/products/sonarqube/: https://link.juejin.cn?target=https%3A%2F%2Fwww.sonarsource.com%2Fproducts%2Fsonarqube%2F

          [5]

          https://deepscan.io/: https://link.juejin.cn?target=https%3A%2F%2Fdeepscan.io%2F

          最后




          如果你覺得這篇內(nèi)容對(duì)你挺有啟發(fā),我想邀請(qǐng)你幫我個(gè)小忙:

          1. 點(diǎn)個(gè)「喜歡」或「在看」,讓更多的人也能看到這篇內(nèi)容

          2. 我組建了個(gè)氛圍非常好的前端群,里面有很多前端小伙伴,歡迎加我微信「sherlocked_93」拉你加群,一起交流和學(xué)習(xí)

          3. 關(guān)注公眾號(hào)「前端下午茶」,持續(xù)為你推送精選好文,也可以加我為好友,隨時(shí)聊騷。



          點(diǎn)個(gè)喜歡支持我吧,在看就更好了


          瀏覽 657
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  欧美性91看片 | 菠萝成人视频 | 爱搞中文字幕 | 欧美日韩免费在线视频 | 亚洲无码一卡一卡 |