Rumah  >  Artikel  >  Java  >  Analisis kod contoh kejuruteraan projek Java

Analisis kod contoh kejuruteraan projek Java

PHPz
PHPzke hadapan
2023-04-21 16:04:081009semak imbas

    Prinsip untuk mengukur persekitaran kod yang baik

    1 Menilai penunjuk kod

    Malah, perkara yang biasa kita katakan tentang "baik" dan " Rotten" ialah perihalan kualiti kod. "Baik" secara amnya bermaksud kod berkualiti tinggi, dan "buruk" secara amnya bermaksud kod berkualiti rendah. Mengenai perihalan kualiti kod, selain penerangan yang agak ringkas dan kasar seperti "baik" dan "buruk", kita sering mendengar banyak penerangan lain. Kaedah penerangan ini lebih kaya dari segi semantik, lebih profesional dan lebih terperinci. Saya mengumpul dan menyusunnya dan menyenaraikannya di bawah Secara umumnya, terdapat beberapa piawaian, iaitu kebolehbacaan, kebolehselenggaraan, kebolehskalaan, kebolehgunaan semula, kefleksibelan, kebolehujian, dll.

    Analisis kod contoh kejuruteraan projek Java

    Kebolehbacaan<. . pengaturcara yang baik boleh menulis kod difahami oleh manusia. malah terdapat pensijilan dalam google dipanggil kebolehbacaan. hanya jurutera telah memperoleh ini layak untuk meluluskan orang lain menyerahkan semasa semakan kod. ia dilihat betapa pentingnya kebolehbacaan itu lagipun bilangan kali dibaca jauh melebihi ditulis dan dilaksanakan.>

      Saya secara peribadi percaya bahawa kebolehbacaan kod harus menjadi salah satu petunjuk terpenting untuk menilai kualiti kod. Apabila kita menulis kod, kita mesti sentiasa mempertimbangkan sama ada kod itu mudah dibaca dan difahami. Di samping itu, kebolehbacaan kod banyak mempengaruhi kebolehselenggaraan kod. Lagipun, sama ada kami membetulkan pepijat atau mengubah suai dan menambah kod berfungsi, perkara pertama yang perlu kami lakukan ialah memahami kod tersebut. Jika anda tidak memahami kod dengan baik, kemungkinan besar pepijat baharu akan diperkenalkan kerana pertimbangan yang tidak mencukupi.

      Memandangkan kebolehbacaan adalah sangat penting, bagaimanakah kita harus menilai kebolehbacaan sekeping kod? Kita perlu melihat sama ada kod itu mematuhi piawaian pengekodan, sama ada penamaan itu bermakna, sama ada ulasan terperinci, sama ada panjang fungsi sesuai, sama ada pembahagian modul jelas, sama ada ia memenuhi kohesi tinggi dan gandingan rendah, dsb. Anda juga harus dapat merasakan bahawa dari sisi positif, sukar untuk kami memberikan senarai yang merangkumi semua petunjuk penilaian. Ini juga sebabnya kita tidak boleh mengukur kebolehbacaan.

      Sebenarnya, semakan kod ialah cara yang baik untuk menguji kebolehbacaan kod. Jika rakan sekerja anda boleh membaca kod yang anda tulis dengan mudah, ini bermakna kebolehbacaan kod anda sangat baik jika rakan sekerja anda mempunyai banyak soalan semasa membaca kod anda, ini bermakna kebolehbacaan kod anda perlu dipertingkatkan

    Maintainabilitymaintainability
    •    Secara amnya merujuk kepada mengubah suai pepijat atau menambah yang baharu tanpa merosakkan reka bentuk kod asal pepijat, menunjukkan bahawa kod itu agak boleh diselenggara. Apabila ia datang kepada pembangunan pengekodan, apa yang dipanggil "penyelenggaraan" tidak lebih daripada membetulkan pepijat, mengubah suai kod lama dan menambah kod baharu. Apa yang dipanggil "kod mudah diselenggara" bermakna kod itu boleh diubah suai atau ditambah dengan cepat tanpa memusnahkan reka bentuk kod asal atau memperkenalkan pepijat baharu. Apa yang dipanggil "kod tidak mudah diselenggara" bermakna mengubah suai atau menambah kod memerlukan risiko besar untuk memperkenalkan pepijat baharu dan mengambil masa yang lama untuk diselesaikan.

    Kebolehluasan
    •   Kadangkala, keupayaan untuk membangunkan atas permintaan boleh dicapai tanpa mengubah suai kod asal atau dengan sedikit pengubahsuaian, dan beberapa titik pengembangan berfungsi biasanya dikhaskan.

    Kebolehgunaan semula
    •    Cuba elakkan mencipta semula roda, iaitu, anda boleh mencetuskan beberapa logik kod biasa dan mengekalkan Decoupling daripada kod perniagaan lapisan atas

    fleksibiliti fleksibiliti
    •   Perkataan fleksibiliti agak luas. Biasanya serupa dengan kebolehselenggaraan, kebolehskalaan dan kebolehgunaan semula

    Kebolehujian
    •    Ini ditunjukkan dalam dua aspek:
    1 Adakah ujian unit mudah ditulis

    2. Apabila menulis ujian unit, anda tidak boleh bergantung pada persekitaran atau alasan untuk menghubungi perkhidmatan lain dari jauh, dan data olok-olok sebanyak mungkin, memastikan perkhidmatan dipisahkan. Walaupun sukar bagi semua orang dalam pasukan untuk mengikut spesifikasi ini, pasukan kami mempunyai keperluan mandatori bahawa setiap fungsi berfungsi tidak boleh melebihi 50 baris kod dan kod tersebut dikehendaki sesingkat mungkin.

    Dimensi ini ialah beberapa penunjuk yang lebih penting untuk menilai dimensi kod.

    2 Teori Pemandu

       Kohesi tinggi dan gandingan rendah adalah perkataan yang hampir setiap pengaturcara bercakap, tetapi istilah ini terlalu luas dan terlalu betul, jadi pengaturcara Pintar telah menghasilkan beberapa prinsip reka bentuk berorientasikan objek untuk mengukur kualiti kod anda:

    • Prinsip Buka-Tutup (OCP)

      Prinsip Penyongsangan Ketergantungan DIP (Prinsip Penyongsangan Pergantungan)
    • Prinsip Pengetahuan Kurang LKP (Prinsip Pengetahuan Kurang)) / Law Of Demeter
    • Prinsip Penggantian Liskov LSP (Prinsip Penggantian Liskov)
    • ISP Prinsip Pengasingan Antara Muka (>
    • gabungan /Prinsip Guna Semula Agregat CARP (Prinsip Guna Semula Komposit/Agregat)

    •   Teori-teori ini mesti biasa kepada semua orang untuk menulis kod Menurut prinsip-prinsip ini Kod yang dibangunkan mempunyai ciri-ciri kohesi tinggi dan gandingan rendah Dengan kata lain, kita boleh menggunakan prinsip ini untuk mengukur kualiti kod.

      Kemahiran Pelaksanaan Kod
    • Saya percaya setiap jurutera mahu menulis kod berkualiti tinggi, dan tidak mahu terus menulis kod buruk yang tidak berkembang dan dikritik oleh orang lain. Jadi bagaimana kita boleh menulis kod berkualiti tinggi? Mengenai kod berkualiti tinggi, kami baru sahaja bercakap tentang tujuh petunjuk penilaian yang paling biasa digunakan dan penting. Oleh itu, bertanya cara menulis kod berkualiti tinggi adalah sama dengan bertanya cara menulis kod yang mudah diselenggara, mudah dibaca, mudah dikembangkan, fleksibel, ringkas, boleh digunakan semula dan boleh diuji Tetapi menulis kod yang baik juga tidak memerlukannya berlaku dalam sekelip mata, ia memerlukan banyak latihan dan pengumpulan Berikut adalah contoh ringkas:

      1 Keupayaan abstrak
      Pemikiran abstrak adalah keupayaan berfikir yang paling penting bagi jurutera kami, kerana teknologi perisian Ia pada asasnya adalah seni abstrak. Jurutera kami perlu menggunakan pemikiran abstrak setiap hari untuk menganalisis, meringkaskan, mensintesis, menilai, dan menaakul tentang domain masalah, dengan itu mengabstraksi pelbagai konsep, meneroka hubungan antara konsep, dan kemudian merealisasikan fungsi perniagaan melalui bahasa pengaturcaraan masanya bukan menulis kod, tetapi menyusun keperluan, menjelaskan konsep, dan memperoleh pemahaman keseluruhan tentang keperluan. Keupayaan untuk mengabstraksi membuatkan saya dan pasukan saya merasakan perubahan kualitatif yang dibawa kepada kami dalam pengekodan dan reka bentuk.

    Kes 1: Eksport Excel Asynchronous

    Malah, fungsi eksport Excel boleh dilihat di mana-mana dalam projek kami, terutamanya operasi kami berharap untuk mengeksport sebanyak mungkin data dalam satu-satu masa untuk tidak membawa sebarang masalah kepada sistem kami Terdapat terlalu banyak tekanan Eksport sejumlah besar data biasanya dilakukan secara tidak segerak Untuk fungsi yang sebegitu mudah, bagaimanakah ia perlu diabstrakkan?

    Tulisan biasa:

    Tulisan abstrak:

    Kita sebenarnya boleh menganggap setiap eksport tak segerak sebagai tugas tak segerak, dan setiap tugas boleh dieksport Kandungannya berbeza, jadi eksport boleh diabstraksikan ke dalam kaedah, dan setiap kelas pelaksanaan khusus melaksanakan eksport kandungan yang berbeza, seperti berikut:

    Kes 2: Pemberitahuan sistem

    Hari ini, apabila perkhidmatan mikro popular, untuk meningkatkan daya pemprosesan sistem, tanggungjawab sistem menjadi lebih terperinci, dan setiap modul sistem perlu kerap berinteraksi dengan data Jadi untuk senario interaksi data yang kompleks, seperti susunan peruntukan kami, susunan peruntukan berubah proses, kita perlu berinteraksi dengan banyak sistem, termasuk stor, gudang, dan modul inventori Bagaimana kita harus mengabstrakkannya? Berikut adalah contoh kod untuk memperuntukkan interaksi dengan setiap sistem
    public String exportXXX(参数) throws Exception {
    	//业务实现
    }
    public String exportXXX2(参数) throws Exception {
    	//业务实现
    }

    Malah, kita Apabila. berinteraksi dengan sistem lain, kami boleh mengabstrak setiap tindakan interaksi menjadi peristiwa pemberitahuan Setiap kali kami berinteraksi, kami hanya boleh menulis peristiwa pemberitahuan acara.

    2 Prinsip penggabungan/penggunaan semula pengagregatan
    // export excel 
    public interface IExcelExportTask {
        String export(BizCommonExportTask exportTask) throws Exception;
    }
    //样例实现类
    XXXXExportTask implements IExcelExportTask {
    	String export(BizCommonExportTask exportTask) throws Exception{
        	public String export(BizCommonExportTask exportTask) throws Exception {
        	//组织数据筛选条件
            TestReq queryReq = GsonUtils.toObject(exportTask.getInputParams(),TestReq.class);
            String fileName = String.format("%s%s%s", exportTask.getUploadFileName(),System.currentTimeMillis(),".xlsx");
            String downUrl = excelService.uploadExcel(fileName, null, new Fetcher<PreOccupyModel>(PreOccupyModel.class) {
            	//循环获取数据
                @Override
                public List<TestModel> fetch(int pageNo, int pageSize) throws OspException{
                    TestQueryResp resp = testFethchLogic.fetchRecord(queryReq);
                    return pageNo > resp.getPageNum() ? Collections.emptyList() :toExcelModel(resp);
                }
            });
            return downUrl;
        }
    }
    public class XXXXExportTask1 implements IExcelExportTask {
        @Override
        public String export(BizCommonExportTask exportTask) throws OspException {
            TestQuery query = GsonUtils.toObject(exportTask.getInputParams(), TestQuery .class);
            String fileName = String.format("%s%s%s", exportTask.getUploadFileName(), System.currentTimeMillis(), ".xlsx");
            return excelService.uploadExcel(fileName, null, new Fetcher<ExportItemModel>(TestModel.class) {
                @Override
                public List<TestModel> fetch(int pageNo, int pageSize) throws OspException {
                    return XXXXLogic.queryExportItem(query, pageNo, pageSize);
                }
            });
        }
    }
    //导出任务分发器
    public class ExcelTaskDispacther extends ApplicationObjectSupport {
    	public boolean dispacthTask(Long taskId) throws OspException {
            updateTaskStatus(exportTask,CommonExportStatus.CREATING,TransferExportStatus.CREATING,StringUtils.EMPTY);
            try {
                String beanName =  getBeanName();
                ExportTaskHandler exportTaskHandler = getApplicationContext().getBean(beanName , IExcelExportTask .class);
                if(exportTaskHandler == null) {
                    log.warn(String.format("任务ID[%s]写入配置错误!", taskId));
                    return false;
                }
                updateTaskStatus(exportTask,CommonExportStatus.CREATE_SUCCESS,TransferExportStatus.CREATE_SUCCESS,StringUtils.EMPTY);
                log.info(String.format("任务ID[%s]RFID为[%s]处理成功", exportTask.getId(),rfid));
                return true;
            } catch(BusiException ex) {
                log.info("任务ID[{}]失败,原因:{}", exportTask.getId(),ex.getMessage(),ex);
                updateTaskResult();
            } catch(Exception ex) {
                log.info("任务ID[{}]失败,原因:{}", exportTask.getId(),ex.getMessage(),ex);
                updateTaskResult();
            }
            return false;
        }
    }

       Mengenai prinsip penggabungan/penggunaan semula pengagregatan, sebenarnya kita sering menghadapinya semasa proses projek pelbagai dokumen dalam projek , seperti pesanan pembelian, pesanan pemindahan, pesanan resit, dll., dan terdapat pelbagai pengesahan untuk setiap dokumen Mari kita lihat kod untuk membuat pesanan pemindahan secara khusus:

    Atas ialah kandungan terperinci Analisis kod contoh kejuruteraan projek Java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

    Kenyataan:
    Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam