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.
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
MaintainabilitymaintainabilityPrinsip Buka-Tutup (OCP)
Prinsip Penyongsangan Ketergantungan DIP (Prinsip Penyongsangan Pergantungan)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 sistemHari 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!