Koşulsuz: Bir temizleyici kod için yuva yapmanın bir ifadesini yeniden aktarma
Temiz bir kod yazma hakkında söylenecek birçok şey var: Dünyadaki en akıllı insanlar bu konuyu tartışmak için yüz yıl veya daha fazla harcadı ve durmayacak gibi görünüyor. Bununla birlikte, konu kadar derin, WordPress geliştiricileri olarak, kodumuzun kalitesinde her gün yaptığımız iş için yararlı olabilecek birçok basit iyileştirme yapabiliriz. Bugün, kod cihazımın tutarlı bir parçası haline gelen bir uygulamayı paylaşıyorum: De-Sarang gereksinimleri. İç içe koşullu olan nedir ve bu neden hangi koşulların yuvalanıyor gibi bir sorun? Yakın zamanda üzerinde çalıştığım temadan Function.php’yi açalım. (Temanın adının değişkeninin adını ve işlevini “Demotheme” olarak değiştirdim):
Kodun ekranın sol tarafından nasıl uzaklaştığını görüyor musunuz? Bunun nedeni çoğunlukla koşullu iç içe geçmesidir: if -statements. (Yukarıdaki ekran görüntüsü, soruna katkıda bulunan çok fazla döngü için loop forEach içerir, ancak bu makalenin kapsamı dışındadır.) Bu neden kötü? Çok yuvalama koşulları, hangi kodun ne zaman yapılacağını veya ne zaman yapılacağını bulmayı neredeyse imkansız hale getirir. Yuvalama koşuluna sahip büyük durum, kontrol kodunun akışını karıştırmalarıdır: başka bir deyişle, hangi kodun gerçekleştirileceğini veya ne zaman yapılacağını söylemeyi neredeyse imkansız hale getirir. Hızlı, yukarıdaki ekran görüntüsündeki 120 satıra bakın ve kod satırının gerçekten hangi koşullarda çalıştırılacağını söyleyin. Neredeyse imkansız, değil mi? İşte sorun bu.Bence sorun, yuvalama durumunun, unutamayacağınız veya hafife alamayacağınız bir bagaj olarak statüyü getirmesidir. İşimizi yapabilmemiz için gerekli tüm sınavlardan (bireysel ise bireysel) kurtulmak yerine, sınavı nereye gidersek gidelim – kodumuzda yaşıyor. Bu gerçek dünyada gerçek dünyada nasıl görülecek, bu koşullu mantık yaklaşımı aşağıdaki soruları soran bir lise öğretmeni gibi olacaktır: “Hala yaşıyorsanız ve eğer bir insansanız ve eğer bir iseniz Bir lisede öğrenci ve eğer bu lisede öğrenciyseniz ve 11. sınıftaysanız ve AP tarih sınıfında kayıtlıysanız ve şu anda AP tarih sınıfına katılıyorsanız ve Şu anda doğrudan sizinle konuşuyorum, Louisiana satın alma önemini açıklayabilir misiniz? “Öğretmenimden nefret ediyorum, çünkü gittiği her yerde birçok koşullu koşul getirdi. Tüm sınavlar sorunun kendisinden önce ele alınmış olmalıdır, çünkü muayene tatmin edici değilse, soru sormak mantıklı değildir. Bununla birlikte, aksine, aptal öğretmenim sorularını yoğun bir koşullu mantık kaosuna koymak için ısrar etti ve ben okulu bırakmayı düşündüm. Geliştirme: Tarihimizin Kapısı Öğretmen Kabarcığı “kabarcık” koşullu bir mantık yaratıyor. Gerçek ilginç kod (tarihsel soru) bu kabarcıkların derinliklerinde yaşıyor:
Kabarcık Birkaç “kabarcık” mantık yapılarında derinlemesine kodların okunması veya değerlendirilmesi çok zordur. Mantık incelememi Gateway gibi derlemeyi seviyorum: önemli bir şeyin doğru olup olmadığını kontrol ediyorlar ve değilse erken çıkıyorlar. Bunun yerine, mantık incelememi bir ağ geçidi gibi derlemeyi seviyorum: önemli bir şeyin doğru olup olmadığını kontrol ediyorlar ve değilse erken çıkıyorlar. (Buna “Guard Maddesi” de denir.) Tüm ağ geçitleri geçtiğinde, önemli kodlar yalnızca görüntülenir, yuvalama değil: çıkmadığımız için, tüm önemli koşullarımızın doğru olduğunu biliyoruz.
Bu gerçek hayat gibidir. İyi bir tarih öğretmeni, bir insan ve okulda öğrenci olup olmadığınızı sormanız gerekmez, çünkü bu koşulları geçtiniz. Onun durumu bir kapı görevi görür: eğer insan değilseniz, hiç okula gitmeyeceksiniz ve AP tarihinde değilseniz, bu soruyu duymak için odada olmayacaksınız. Tüm kapıları geçtiniz, böylece herkes sizin olmanız gereken siz olduğunuzu varsayabilir ve öğretmen mevcut işi hemen tartışabilir. Kod örnekleri bunu iki basit kod örneğine bakarak beyan edelim: önce kabarcık stilinde, sonra kapı tarzında.
Kötü: kabarcık kuvvet $ IS_FIRST_TING_Working = true; $ iscond_ting_working = true; $ is_third_thing_working = true; $ is_foulth_ting_working = true; if ($ is_firsst_ting_working === true) {if ($ is_second_thing_working === true) {if ($ is_third_thing_working === true) {if ($ is_fourth_ting_working ==== } else {return ‘dördüncü şey kırıldı.’; }} else {return ‘üçüncü şey kırıldı.’; }} else {return ‘ikinci şey kırıldı.’; }} else {return ‘ilk şey kırıldı.’; } İyi: kapı stili $ is_first_ting_working = true; $ iscond_ting_working = true; $ is_third_thing_working = true; $ is_foulth_ting_working = true; if ($ is_first_ting_working! == true) {return ‘ilk şey kırıldı.’; } if ($ is_second_thing_working! == true) {return ‘ikinci şey kırıldı.’; } if ($ is_third_thing_working! == true) {return ‘üçüncü şey kırıldı.’; } if ($ is_foulth_ting_working! == true) {return ‘dördüncü şey kırıldı.’; } Dönüş ‘düzgün çalışma!’; Ana fark üzerindeki erkeklerin üzerindeki iki kod arasındaki fark örneği hakkında not: Kabarcık yöntemi, önemli durumun doğru olup olmadığını sorar ve yalnızca doğruysa kodu çalıştırır.
Ağ geçidi yöntemi, önemli durumun yanlış olup olmadığını sorar ve yanlışsa hemen her koşul için talimatlar çıkarır.
Kabarcık yöntemi yuvalamaya zorlar, çünkü çalıştırmak istediğiniz kodu almadan önce “doğru, doğru, doğru, doğru” kontrol etmeniz gerekir. Her “doğru” sınav bir yuvalama seviyesidir – kodunuzda olması gereken durum. Ağ geçidi yöntemi yuva yapmaz: gördüğünüz gibi, kod asla birden fazla derin mantık katmanı değildir. Bunun nedeni, belirli bir ağ geçidi geçmesidir, tamamen unutabiliriz. Başka bir deyişle, $ IS_FIRST_TING_WORKING’den sonra çıkmadığımız için, kodun geri kalanı için $ IS_FIRST_TING_Working True olduğunu otomatik olarak biliyoruz. Bu gerçek hayat gibidir: Tarih dersinde yanımda oturursanız, bir insan, ortaokulumdaki öğrenciler vb. Olduğunuzu biliyorum – ya da başından beri asla sınıfımda olmayacaksınız. . Kontrol etmeye gerek yok. Pratik WordPress örnekleri, olağanüstü WordPress koşullu etiketleri kullanarak gerçek bir dünya wordpress örneğini oluşturalım. Bu örnek aslında kötü bir formda/baloncukta, konuyla ilgili mevcut yayınımızda var: Bubble Style (kötü) // enqueue spesifik css ve js sayfa sayfası şablonu kullanımda olduğunda (‘wp_enqueue_scripts’, ‘wspscripts’) ; İşlev wspout_special_page () {if (is_page (‘özel sayfa’))) {wp_enqueue_script (‘special_js’, get_stylesheet_directory_uri (). ‘/Special.js’); wp_enqueue_style (‘special_css’, get_stylesheet_directory_uri (). ‘/special.css’); }} Tüm bu dilin IS_PAGE () sınavına nasıl sarıldığını görüyor musunuz? Büyük, köpüren, yuva. Bunun yerine bunu yapalım:
Gate Style (iyi) // Özel sayfa sayfa şablonu kullanıldığında özel css ve js enqueue add_action (‘wp_enqueue_scripts’, ‘wspout_special_page’); İşlev wspout_special_page () {if (! Is_page (‘özel sayfa’)) {return; } wp_enqueue_script (‘special_js’, get_stylesheet_directory_uri (). ‘/special.js’); wp_enqueue_style (‘special_css’, get_stylesheet_directory_uri (). ‘/special.css’); } Çok daha iyi, değil mi? Özel sayfa şablonu kullanmazsak, bu işlevle başka bir şey yapmak istemiyoruz. Burada, mantık sınavı artık bir bekçidir – kabarcıklar değil – ve kapıdan geçtikten sonra, güvenle ilerleyebiliriz. Koşullu aşkı aşmak Umarım bu, WordPress’te kod yazdığınızla ilgili fikrinizi değiştirmeye yardımcı olur. özellikle. Koşullu “kapı” yaklaşımını kullanmaya alışmak kendi kodumu yazmayı çok daha özlü ve eğlenceli hale getirdi. Okuduğunuz için teşekkürler! Kredi görüntüsü: fotoatelier