


Bagaimanakah syarikat kami menghapuskan sepenuhnya 2,000 jika-lain dalam projek itu?
5 cara untuk mereka bentuk perisian yang lebih baik dan menggantikan If-Else. Contoh Permulaan kepada Lanjutan
Biar saya katakan ini: If-Else biasanya merupakan pilihan yang tidak baik.
Ia membawa kepada reka bentuk yang kompleks, kebolehbacaan kod yang lemah, dan boleh menyebabkan kesukaran dalam pemfaktoran semula.
Walau bagaimanapun, If-Else telah menjadi penyelesaian percabangan kod de facto, dan ia memang masuk akal. Ini adalah perkara pertama yang diajar kepada semua pemaju yang bercita-cita tinggi. Malangnya, ramai pembangun tidak pernah bergerak ke hadapan kepada strategi percabangan yang lebih sesuai.
Mantera sesetengah orang ialah: Jika-Lain adalah tukul, semuanya adalah paku.
Ketidakupayaan untuk memberitahu bila perlu menggunakan kaedah yang lebih sesuai adalah antara perkara yang membezakan junior dengan junior.
Saya akan menunjukkan kepada anda beberapa petua dan corak yang akan menamatkan amalan mengerikan ini.
Kesukaran bertambah dengan setiap contoh.
1. Blok lain yang tidak diperlukan sepenuhnya
Ini mungkin salah satu dosa terbesar yang dilakukan oleh pembangun junior. Contoh di bawah ialah contoh hebat tentang perkara yang berlaku apabila anda diberitahu bahawa If-Else adalah hebat.
Hanya keluarkan blok else` untuk memudahkan proses ini.
Nampak lebih profesional kan?
Anda akan sering mendapati bahawa tiada blok lain sebenarnya diperlukan sama sekali. Seperti dalam kes ini, anda ingin melakukan beberapa tindakan dan kembali serta-merta jika syarat tertentu dipenuhi.
2. Penetapan Nilai
Jika anda memberikan nilai baharu kepada pembolehubah berdasarkan beberapa input yang disediakan, hentikan karut If-Else - pendekatan yang lebih mudah dibaca.
Semudah itu, memang payah. Pertama, If-Else boleh dengan mudah digantikan dengan suis di sini. Walau bagaimanapun, kita boleh memudahkan lagi kod ini dengan mengalih keluar kod lain sepenuhnya.
Jika lain tidak digunakan, kami ditinggalkan dengan kod yang boleh dibaca bersih. Ambil perhatian bahawa saya juga menukar gaya kepada pulangan cepat dan bukannya penyataan pulangan tunggal - tidak ada gunanya meneruskan ujian untuk nilai jika nilai yang betul telah ditemui.
3. Pemeriksaan Prasyarat
Biasanya, saya dapati jika sesuatu kaedah memberikan nilai yang tidak sah, tidak masuk akal untuk meneruskan pelaksanaan.
Katakan kita mempunyai kaedah DefineGender dari sebelum ini, yang memerlukan nilai input yang diberikan mestilah sentiasa 0 atau 1.
Tidak masuk akal untuk melaksanakan kaedah tanpa pengesahan nilai. Oleh itu, kita perlu menyemak beberapa prasyarat sebelum membenarkan kaedah untuk meneruskan pelaksanaan.
Menggunakan teknik pengekodan pertahanan klausa pengawal, anda akan menyemak nilai input kaedah dan kemudian terus melaksanakan kaedah.
Pada ketika ini, kami memastikan bahawa logik utama hanya dilaksanakan apabila nilai berada dalam julat yang dijangkakan.
JIKA kini juga telah digantikan dengan ternary, kerana tidak ada lagi keperluan untuk lalai kepada "tidak diketahui" pada akhirnya.
4. Tukar If-Else kepada Kamus — Elakkan If-Else sepenuhnya
Katakan anda perlu melakukan beberapa operasi yang akan memilih berdasarkan beberapa syarat, kami tahu bahawa kami perlu menambah lebih banyak operasi kemudian.
Mungkin sesetengah orang lebih suka menggunakan If-Else yang telah dicuba dan diuji. Jika anda menambah tindakan baharu, cuma tambah sesuatu yang lain. Sangat mudah. Walau bagaimanapun, pendekatan ini bukanlah reka bentuk yang baik dari segi penyelenggaraan.
Mengetahui bahawa kami perlu menambah operasi baharu kemudian, kami boleh memfaktorkan semula If-Else ke dalam kamus.
Kebolehbacaan telah dipertingkatkan dengan baik dan kodnya boleh disimpulkan dengan lebih mudah.
Perhatikan bahawa kamus diletakkan di dalam kaedah hanya untuk tujuan ilustrasi. Anda mungkin mahu menyediakannya dari tempat lain.
5. Panjangkan aplikasi — elakkan menggunakan If-Else sepenuhnya
Ini adalah contoh yang lebih maju sedikit.
Ketahui bila hendak menghapuskan Ifs sepenuhnya dengan menggantikannya dengan objek.
Selalunya anda akan mendapati diri anda perlu melanjutkan beberapa bahagian permohonan anda. Sebagai pembangun junior, anda mungkin tergoda untuk melakukan ini dengan menambahkan pernyataan If-Else (iaitu else-if) tambahan.
Berikan contoh ilustrasi ini. Di sini kita perlu memaparkan contoh Pesanan sebagai rentetan. Pertama, kami hanya mempunyai dua perwakilan rentetan: JSON dan teks biasa. Menggunakan If-Else bukanlah masalah besar pada peringkat ini, jika kita boleh menggantikan yang lain dengan mudah, asalkan ia seperti yang dinyatakan sebelum ini.
Mengetahui bahawa kita perlu menskalakan bahagian aplikasi ini, pendekatan ini sama sekali tidak boleh diterima.
Kod di atas bukan sahaja melanggar prinsip "buka/tutup", tetapi juga tidak dibaca dengan baik dan boleh menyebabkan masalah kebolehselenggaraan.
Pendekatan yang betul ialah yang mengikut prinsip SOLID - kami melakukan ini dengan melaksanakan proses penemuan jenis dinamik (dalam kes ini corak Strategi).
Proses pemfaktoran semula proses yang tidak kemas ini adalah seperti berikut:
· Ekstrak setiap cawangan ke dalam kelas strategi yang berasingan menggunakan antara muka biasa
· Cari secara dinamik semua kelas yang melaksanakan antara muka biasa
· Tentukan strategi yang hendak dilaksanakan berdasarkan input
Kod untuk menggantikan contoh di atas adalah seperti berikut. Ya, ini lebih banyak kod. Ia memerlukan anda memahami cara penemuan jenis berfungsi. Tetapi aplikasi penskalaan secara dinamik ialah topik lanjutan.
Saya hanya tunjukkan bahagian tepat yang akan menggantikan contoh If-Else. Jika anda ingin melihat semua objek yang terlibat, lihat intipati ini.
Mari kita lihat kodnya.
Tandatangan kaedah kekal tidak berubah kerana pemanggil tidak perlu tahu tentang pemfaktoran semula kami.
Pertama, dapatkan semua jenis dalam pemasangan yang melaksanakan antara muka biasa IOrderOutputStrategy. Kemudian, kami mencipta kamus, nama paparanName pemformat ialah kunci dan jenisnya ialah nilai.
Kemudian pilih jenis pemformat daripada kamus dan cuba nyatakan objek dasar.
Akhir sekali, panggil ConvertOrderToString objek strategi.
Atas ialah kandungan terperinci Bagaimanakah syarikat kami menghapuskan sepenuhnya 2,000 jika-lain dalam projek itu?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Mula-mula, dapatkan semua jenis dalam perhimpunan yang melaksanakan antara muka biasa IOrderOutputStrategy. Kemudian, kami mencipta kamus, nama paparanName pemformat ialah kunci dan jenisnya ialah nilai. Kemudian pilih jenis pemformat daripada kamus dan cuba buat seketika objek dasar.

1. Kaedah suis mempunyai kesan yang baik pada pemprosesan nilai penghitungan Sebagai contoh, pemprosesan yang berbeza perlu dilakukan untuk status pesanan yang berbeza Oleh kerana nilai status adalah terhad, maka kita boleh terus menggunakan suis untuk melakukan pemprosesan yang berbeza untuk status yang berbeza. Penyata Asal publicvoidbefore(Integerstatus){if(status==1){System.out.println("Pesanan tidak diterima");}elseif(status==2){System.out.println("Pesanan tidak dihantar") ; }elseif(status==3

Gunakan operator ternary untuk mengoptimumkan if-else1 dan menilai tugasan berdasarkan syarat if-else, seperti: Stringid="";if(flag){id="a";}else{id="b";} use Operator ternary boleh terus dioptimumkan ke dalam baris kod: id=flag?"a":"b"; 2. Gunakan syarat if-else untuk menentukan kaedah panggilan, seperti: Setset1=newHashSet();Setset2=newHashSet (); jika(bendera){set1.add(

if ialah pernyataan dengan keadaan Boolean Jika keadaan bernilai benar, kod dalam kurungan kerinting selepas if akan dilaksanakan.

Apakah struktur kawalan aliran biasa dalam Python? Dalam Python, struktur kawalan aliran ialah alat penting yang digunakan untuk menentukan susunan pelaksanaan program. Mereka membenarkan kami melaksanakan blok kod yang berbeza berdasarkan syarat yang berbeza, atau melaksanakan blok kod berulang kali. Berikut akan memperkenalkan struktur kawalan proses biasa dalam Python dan memberikan contoh kod yang sepadan. Pernyataan bersyarat (jika lain): Pernyataan bersyarat membolehkan kami melaksanakan blok kod yang berbeza berdasarkan syarat yang berbeza. Sintaks asasnya ialah: jika keadaan 1: #apabila keadaan

Dalam bahagian ini, kita akan melihat cara untuk melaksanakan kedua-dua bahagian if dan else dalam kod C atau C++. Penyelesaian ini agak rumit. Apabila if dan else dilaksanakan satu demi satu, seolah-olah pernyataan tanpa if-else telah dilaksanakan. Tetapi di sini kita akan melihat bagaimana untuk melaksanakannya secara berurutan jika wujud. Contoh kod #include<iostream>usingnamespacestd;intmain(){ intx=10;

Artikel ini tidak bermaksud untuk menghapuskan atau mendiskriminasi jika lain Kita semua tahu kegunaan if else Ia hanya untuk memberi anda idea tambahan dalam beberapa senario khusus untuk meningkatkan kebolehbacaan kod kami.

Adakah 1,000 syarat penghakiman memerlukan 1,000 jika kenyataan? Bagaimana untuk mengoptimumkan jika penyata cawangan? Artikel berikut akan bercakap dengan anda tentang cara mencapai pengoptimuman cawangan. Saya harap ia akan membantu semua orang!
