Rumah  >  Soal Jawab  >  teks badan

javascript - Prinsip Fungsi Minimum Fungsi hanya boleh melakukan satu perkara yang berkaitan Mengapa? Adakah ia benar-benar masuk akal? ~

$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;
}

atau

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();
});

Mana antara dua keping kod ini yang lebih baik... Walaupun kedua-duanya agak bajik, mari lihat cara anda menanganinya

Sesuatu fungsi hanya boleh melakukan satu perkara Mengapa ia boleh dibaca? Kebolehskalaan? Kebolehgunaan semula? Pada pendapat saya, mengisytiharkan fungsi bukan tanpa kos Fungsi hanya mengambil sedikit ruang dalam ingatan adalah lebih pantas tanpa analisis langsung

Jika ia adalah untuk penggunaan semula dan pengembangan, adakah ia benar-benar bukan pengoptimuman terlebih dahulu untuk melakukan ini semasa menulis untuk kali pertama. Bagaimana anda tahu bahawa fungsi yang dicadangkan akan menjadi universal pada masa hadapan? melihatnya pastinya bukan amalan Prestasi terbaik~

Bukankah pengoptimuman awal/peralihan punca segala kejahatan? ~

怪我咯怪我咯2663 hari yang lalu1079

membalas semua(5)saya akan balas

  • typecho

    typecho2017-07-05 11:07:16

    Setakat kelas berkenaan, hanya ada satu sebab untuk perubahannya. Dalam JavaScript, tidak terdapat terlalu banyak senario yang memerlukan penggunaan kelas Prinsip tanggungjawab tunggal lebih kerap digunakan pada peringkat objek atau kaedah, jadi perbincangan kami dalam bahagian ini kebanyakannya berdasarkan objek dan kaedah.
    Tanggungjawab dalam Prinsip Tanggungjawab Tunggal (SRP) ditakrifkan sebagai "punca perubahan". Jika kita mempunyai dua motivasi untuk mengatasi sesuatu kaedah, maka kaedah ini mempunyai dua tanggungjawab. Setiap tanggungjawab adalah paksi perubahan Jika kaedah mengambil terlalu banyak tanggungjawab, semakin besar kemungkinan kaedah ini perlu ditulis semula apabila keperluan berubah.
    Pada masa ini, kaedah ini biasanya merupakan kaedah yang tidak stabil, dan mengubah suai kod sentiasa menjadi perkara yang berbahaya, terutamanya apabila dua tanggungjawab digabungkan bersama, perubahan dalam satu tanggungjawab boleh menjejaskan pelaksanaan tanggungjawab lain , menyebabkan kerosakan yang tidak dijangka,
    Gandingan ini menghasilkan kohesi yang rendah dan reka bentuk yang rapuh.
    Oleh itu, prinsip SRP dijelmakan sebagai: objek (kaedah) hanya melakukan satu perkara.




    balas
    0
  • 怪我咯

    怪我咯2017-07-05 11:07:16

    Izinkan saya bercakap tentang pendapat peribadi saya Program adalah untuk orang ramai membaca. Walaupun anda menulis program, ia mungkin mengambil sedikit masa untuk memahami maksudnya beberapa bulan kemudian, apatah lagi orang lain mungkin mengambil alih kod anda!

    Biarkan orang ramai memahami program dahulu, dan kemudian bercakap tentang pengoptimuman prestasi berjalan

    balas
    0
  • 代言

    代言2017-07-05 11:07:16

    Jika kod anda hanya perlu digunakan untuk masa yang singkat, tidak perlu diulang kemudian, tidak perlu diberikan kepada rakan sekerja lain, dan tidak memerlukan ujian unit, maka tulis sahaja secara santai dan laksanakan fungsi tersebut.

    Jika kod anda perlu dipanggil oleh rakan sekerja lain, ia perlu diulang, dilanjutkan dan diuji unit. Kemudian ikut spesifikasi sahaja Prestasi tidak pernah ditentukan oleh bentuk kod.

    Cara paling mudah ialah, jika anda melihat kod anda selepas sebulan dan mendapati sukar untuk membaca, menyelenggara dan mengembangkan, kemudian faktorkan semula.

    balas
    0
  • 滿天的星座

    滿天的星座2017-07-05 11:07:16

    Saya rasa lebih baik fungsi hanya melakukan satu perkara... Mana tahu jika fungsi berbahaya ini akan menyebarkan kesan sampingan ke mana-mana...
    Lebih baik hanya melakukan satu perkara dan akhirnya menyambungkannya untuk digunakan.

    Selain itu, saya tidak fikir terdapat perbezaan yang besar dalam prestasi Mungkin jika fungsi hanya melakukan satu perkara, prestasi akan menjadi lebih baik.


    1. Satu ciri jelas bagi sekeping kod pertama berbanding sekeping kod kedua ialah purata bilangan baris bagi setiap fungsi adalah kurang, manakala purata bilangan baris bagi sekeping kedua adalah lebih banyak.

    2. Beban mental untuk mengekalkan dan menulis kod pendek agak kecil, jadi kecekapan penyelenggaraan dan penulisan adalah tinggi

    3. Melakukan hanya satu perkara bermakna fungsi ini hanya perlu menyelesaikan tugasan ini dan anda boleh menggantikannya secara langsung dengan salinan fungsi ini yang dilaksanakan oleh algoritma lain.

    4. Disebabkan menulis banyak fungsi kecil yang pendek dan padat, tahap abstraksi akan lebih tinggi semasa pemasangan, yang lebih sesuai untuk berfikir.


    Jika ia untuk digunakan semula dan pengembangan, bukankah melakukan ini pada kali pertama anda menulisnya benar-benar pengoptimuman terlebih dahulu?

    Untuk penggunaan semula dan pengembangan tidak pernah 提前优化, sebaliknya, kita harus memberi lebih perhatian kepada kedua-dua ini

    balas
    0
  • 習慣沉默

    習慣沉默2017-07-05 11:07:16

    Anda betul. Ia adalah untuk kebolehbacaan, kebolehskalaan dan penggunaan semula. Perkara yang paling penting ialah kebolehbacaan/penyelenggaraan. Anda tidak boleh menamakan fungsi yang melakukan pelbagai perkara, apatah lagi membuat orang lain memahaminya.

    Pengoptimuman pramatang ialah ini: "Fungsi mengambil sedikit ruang dalam ingatan."

    balas
    0
  • Batalbalas