亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術文章
文章詳情頁

javascript - 最小函數準則 一個函數里只能干一件相關事情 為什么?真的有意義嗎?~

瀏覽:102日期:2023-02-16 11:37:38

問題描述

$scope.del = function () { var delItemId = getDelId(); // 要刪除的項目的身份標識 // 如果沒選擇刪除項 if (!delItemId.length) {$promptLayer.show({ str: $message.delItemIsEmpty});return; } delTarArr = delItemId; $weuiAndroidDialog2.show($message.store.delConfirm, $message.store.delCloseBtn, $message.store.delOkBtn);};// 確認刪除$rootScope.$on(’androidDialog2Btn1’, function () { del( delTarArr.join(’,’) ); $weuiAndroidDialog2.hide();});// 取消刪除$rootScope.$on(’androidDialog2Btn0’, function () { $weuiAndroidDialog2.hide();});var delTarArr;// 獲取要刪除項標識function getDelId() { var delTarArr = []; $angular.forEach($scope.selectAllItem, function (v, i) {if (v) { delTarArr.push($scope.storeList[i].Sid);} }); return delTarArr;}// 刪除function del(param) { // 請求刪除接口 $handler.store.del( param ).then(function () {delAllJumpPage(delTarArr.length, $scope.selectAllItem.length); // 刪空跳頁 });}// 刪空跳頁function delAllJumpPage(delNum, totalNum) { var curPage = $scope.pageControlCurNum; // 當前所在頁數 // 此頁刪空 跳上一頁 if (delNum === totalNum)curPage = curPage - 1; $scope.loadList(curPage); $scope.pageControlCurNum = curPage;}

or

var delTarArr;$scope.del = function () { // 看是否有選中項 $angular.forEach($scope.selectAllItem, function (v, i) {if (v) { delTarArr.push($scope.storeList[i].Sid); // 獲取選中項 Sid } }); // 如果沒有刪除項 if (!delTarArr.length) {$promptLayer.show({ str: $message.delItemIsEmpty});return; } // 再次確認提示層 $weuiAndroidDialog2.show($message.store.delConfirm, $message.store.delCloseBtn, $message.store.delOkBtn);};// 確認刪除$rootScope.$on(’androidDialog2Btn1’, function () { // 請求刪除接口 $handler.store.del( delTarArr.join(’,’) ).then(function () {// 刪空跳頁var curPage = $scope.pageControlCurNum; // 當前所在頁數// 此頁刪空 跳上一頁if (delTarArr.length === $scope.selectAllItem.length) curPage = curPage - 1;$scope.loadList(curPage);$scope.pageControlCurNum = curPage; }); $weuiAndroidDialog2.hide();});// 取消刪除$rootScope.$on(’androidDialog2Btn0’, function () { $weuiAndroidDialog2.hide();});

這兩段代碼哪個相對較優一點…… 雖然都挺渣的 大佬們對付看吧

一個函數只能干一件事這么做是為什么 可讀性?擴展性?復用性?在我看來聲明函數也不是沒有成本的啊 一個函數就占內存的一些空間呢 調用函數也沒有直接解析來的快吧~

如果是為了復用、擴展的話 第一次寫的時候就這樣做的真的不是提前優化嗎 以后的需求都確定不了呢 怎么知道提出的函數放在未來是通用的呢 這樣看絕對不是最佳性能的實踐啊~

提前 / 過渡優化不是萬惡之源嗎?~

問題解答

回答1:

就一個類而言,應該僅有一個引起它變化的原因。在 JavaScript 中,需要用到類的場景并不太多,單一職責原則更多地是被運用在對象或者方法級別上,因此本節我們的討論大多基于對象和方法。單一職責原則(SRP)的職責被定義為“引起變化的原因”。如果我們有兩個動機去改寫一個方法,那么這個方法就具有兩個職責。每個職責都是變化的一個軸線,如果一個方法承擔了過多的職責,那么在需求的變遷過程中,需要改寫這個方法的可能性就越大。此時,這個方法通常是一個不穩定的方法,修改代碼總是一件危險的事情,特別是當兩個職責耦合在一起的時候,一個職責發生變化可能會影響到其他職責的實現,造成意想不到的破壞,這種耦合性得到的是低內聚和脆弱的設計。因此, SRP 原則體現為:一個對象(方法)只做一件事情。

javascript - 最小函數準則 一個函數里只能干一件相關事情 為什么?真的有意義嗎?~

回答2:

談一下個人見解,程序是給人讀的,一個函數的復雜度越高,讀通的成本就越高。即使是你寫的程序,幾個月后,看懂其中的意思可能就需要一會兒,何況別人也可能接手你的代碼!

程序先讓人看懂了,再談運行的性能優化

回答3:

如果你的代碼只需要用很短的時間,不需要以后迭代,不需要提供給其他同事用,也不需要單元測試,那么隨便寫吧,功能實現就行了。

如果你的代碼需要被其他同事調用,需要進行迭代,需要擴展,需要單元測試。那還是按照規范來做吧,性能從來就不是代碼的形式決定的。

最簡單的方法,如果你的代碼隔一個月以后自己來看,發現很難閱讀,很難維護,很難擴展,那還是重構吧。

回答4:

我認為一個函數只干一件事更好 .... 鬼知道這些陰險的函數會不會到處散播副作用 ... 還是只做一件事,最后把他們黏連起來使用比較好。

還有我不認為性能上有很大差距 也許一個函數只干一件事性能還會更好。

第一段代碼相比第二段的一個明顯特點就是 每個函數的平均行數少了,第二個平均行數比較多。

維護編寫短小的代碼心智負擔比較小 從而維護編寫的效率高

只做一件事意味著 這個函數只要能做完這件事就可以了, 你可以輕而易舉地用別的算法實現的這個函數的副本直接替換。

由于編寫了眾多短小精悍的小函數,組裝的時候抽象層次會高一些,更符合思考。

如果是為了復用、擴展的話 第一次寫的時候就這樣做的真的不是提前優化嗎

為了復用、為了拓展從來都不是 提前優化,相反,更應該重視這兩個

回答5:

你說得沒錯。就是為了可讀性、擴展性、和復用。最主要還是可讀性/可維護性。干多件事情的函數你都沒法起名呢,更別說讓別人理解了。

過早優化是這個:「一個函數就占內存的一些空間呢」。

標簽: JavaScript
相關文章:
主站蜘蛛池模板: 性a爱片免费视频性 | 尤物视频在线免费 | 成人精品美女隐私漫画 | 91香蕉视频在线播放 | 欧美精品成人一区二区视频一 | 国产aa毛片 | 任我爽在线 | 欧美日韩在线观看一区二区 | 欧美线人一区二区三区 | 青青青青操 | 日韩在线视频网址 | 黄片毛片在线看 | 黄页网址大全免费观看不用 | 国产三级香港在线观看 | 91在线播放国产 | 俄罗斯小younv| 99xxoo视频在线永久免费观看 | 亚洲高清国产一线久久 | 国产午夜精品不卡观看 | 激情在线播放免费视频高清 | 久久综合丁香激情久久 | 成人国产三级在线播放 | 日韩色爱 | 亚洲无线观看 | 永久免费在线观看视频 | 久久三级精品 | 白丝丝袜高跟国产在线视频 | 久久视频在线看 | 伊人三级 | 精品久久综合一区二区 | 亚洲欧美日韩综合在线一区二区三区 | 久久精品国产久精国产果冻传媒 | 黄色片网站免费观看 | 国产高清精品入口麻豆 | 日韩国产三级 | 中文国产成人精品久久无广告 | 男人狂躁女人下面视频免费观看 | 久久这里只有精品23 | 久久只有精品 | 色视频在线观看网站 | 国产激情毛片 |