Kız arkadaşım benden çantasından bir şey almamı istemeye bayılıyor. Sanırım bu bir tür hastalıklı şaka. O anahtarlar, mendiller, unutulmuş kulaklıklar, makbuzlar ve beş farklı cüzdan yığınında biri nasıl bir şey bulabilir?
İlk denemesinde her şeyi bulur.
Çantasının içi daha büyük bir kara delik ve bir fizikçi için kesinlikle heyecan verici bir araştırma konusu olurdu, ama ona mantıklı geliyor. “Bu kolay,”diyor, “erkekler hiçbir şey bulamıyor”
Aynı şey kod için de geçerlidir. Size açık gelen şeyler başkalarına mantıklı gelmeyebilir.
Bir durum makinesi tanımına baktığımda, zihnim onu bir resme çeviriyor. Diğerleri iç içe sözlükler yığını görür ve bunun bir karışıklık olduğunu düşünür.
const smolStateMachine = {
start: {
saveAction: {
doStuff: () => ...
next: 'step1'
}
},
step1: {
backAction: {
next: 'start'
},
saveAction: {
doStuff: () => ...
next: 'step2'
}
},
step2: {
cancelAction: {
next: 'start'
}
}
}
Ne arayacağınızı bildiğinizde, bu sözlükler topluluğu şöyle bir resme dönüşür:
Birinci seviye tuşlar durumlardır, ikinci seviye tuşlar oklardır, üçüncü seviye tuşlar bu okların ne yaptığını tanımlar.
Bunun düzgün, gereksiz olduğunu düşünebilir veya nasıl hissettirdiğini sevmiyor olabilirsiniz. Ve bu iyi. Nasıl olduğunu anladığında ben bir düşünün, kodun okunması daha kolay hale geliyor.
Not: Kod, sorunu nasıl anladığınızın doğrudan bir ifadesi ve düşünme şeklinizin bir uzantısıdır. Başka birinin kodunu okumak, nasıl düşündüklerini öğrenmek gibidir.
Birbirimizi karıştırmamızın yollarından biri, kodu nasıl organize ettiğimizdir. Mühendisler iki kampa ayrılır:
- Katı klasör yapısını seven kategorizatörler
- Arama araçlarını kullanmayı seven arama yapanlar
En büyük hayal kırıklıkları bu kamplar birlikte çalıştığında oluyor.
Ev eşyaları söz konusu olduğunda, ben bir kategoriciyim.
Çorap çekmecemde farklı çorap türleri için kovalar var, tişörtlerim iş, eğlence ve spor salonu için yığınlar halinde geliyor, masamda defterler için bir çekmece ve dizüstü bilgisayarlar (iş ve ev) için bir çekmece var ve eğer makarnayı koyarsanız Mutfağımda yanlış rafta sos seni bitireceğim.
Her şey için bir yer ve her şey yerinde.
Bu, herhangi bir öğeyi bulmayı kolaylaştırır. Kategorisini düşünür ve o kategorinin saklandığı yere gidersiniz.
Evinizin fiziksel yapısı bir veritabanı indeksi gibi çalışır. Tüm eşyalarınızı aramak yerine, bir kategoriler ağacında gezinirsiniz: Çoraplar küçük giysilerdir ve koşarsınız. Yatak odası -> dolap -> çorap çekmecesi -> koşu kovası.
Yalnız yaşadığınızda harika çalışıyor.
Not: Bir dizinin performans kazancı, bir sorgu için arama alanını sınırlamak için verilerinizi ne kadar agresif bir şekilde bölümleyebileceğine bağlıdır. Bazı durumlarda bir dizin, öğe madde arama yapan bir tablo taramasından daha yavaş olabilir.
Ailenizdeki başkaları bir şeyler depolayabildiğinde ne olur? Ya hangi kategoriye girdiği konusunda anlaşamazlarsa? harika mı Lovelace> & Babbage, Stoney Babua daha çok bilimkurgu, tarihi kurgu, eğitici fanfic veya çizgi roman mı?
Kod bir ekip çalışmasıdır ve kategorize edicilerin başının belaya girdiği yer burasıdır. Dolabımı organize ettiğim gibi kod düzenlemeyi seviyorlar – her şey için klasörler.
Stiller, UI öğeleri, veritabanı modelleri, hizmetler, denetleyiciler, rotalar, kullanıcı akışları ve diğerleri için bir klasör. Yapı, herhangi bir kod türünü bulmayı kolaylaştırır.
Bir rota ister misiniz? Arama konumu
/routes. Hizmet mi istiyorsunuz? Arama konumu
/services. Bir UI bileşeni ister misiniz? Arama konumu
/components.
Kategorizasyon, siz gibi sorular sorana kadar çalışır. “Bir kullanıcının her yorumunu getiren kodu nerede bulabilirim?”. Bu kullanıcı modelinde mi, yorum modelinde mi yoksa bir sorgu klasöründe mi? Bir yorum hizmeti olabilir …
Kategorilerle ilgili bir başka sorun da, kategorileriniz her bozulmaya başladığında dünyanın en korkunç beyaz tahta röportajını yapıyor olmanızdır – bir ağacı dengeleyebilir misiniz? Mühendisler akıllıca bundan kaçınır ve kodu ait olmadığı yere koyar.
Ama hey, kod tabanı temiz görünüyor. Başta.
Arayıcı, kız arkadaşım gibi biridir. Eşyaları en son kullandığınız yerde bırakırsanız, her zaman ilk nereye bakacağınızı bilirsiniz.
Ama ev darmadağın görünüyor 🙃
Aramayla ilgili en büyük sorun, yavaş olmasıdır. Kapıdan çıkarken yapmak isteyeceğiniz son şey, eşleşen bir çift çorap bulmak için dolabınızı karıştırarak 5 dakika harcamaktır.
Kız arkadaşımın muazzam bir hafızası var ve onun için arayışlar sürüyor. Eşyaların nerede olduğunu hatırlıyor. En azından genel alan. Ama benden yardım istediğinde, o şeyi en son kullandığında orada değildim. Yapabileceğim en iyi şey, tüm ev eşyasını madde madde aramak.
Ezberlenmiş bir dizin kullanırken ben yavaş bir tablo taraması yapıyorum. İşe yaramaz olduğumu söylemesine şaşmamalı!
Ama kod çorap değildir.
Kod, bağlantılarla dolu yapılandırılmış verilerdir – Bölüm 4’te bahsettiğimiz gibi bir bağımlılık grafiğidir. Bilgisayarlar sizin için yapılandırılmış verileri ezberleyebilir!
Özellikler
- tanımlamaya atlama,
- zengin metin arama,
- bir işlev veya değişkenin her kullanımını vurgulayın
nasıl depolandığını tamamen göz ardı ederek bir kod tabanında gezinebilmeniz için yapın. Önemli olan tek şey kodun mantıksal yapısıdır.
Ve kodun mantıksal yapısında gezindiğiniz için, kodu en uygun olan yere taşıyabilirsiniz. Bu, büyük esnekliğin kilidini açar ve kodun değiştirilmesini kolaylaştırır.
Ama bir karışıklık gibi görünüyor.
İster kategorileri beğenin ister arama yapın, nesiller boyu olabilir. İçinde Dosya bulunamadı The Verge için Monica Chin, üniversite profesörlerinin mücadele ettiği muamma hakkında yazıyor – genç öğrenciler klasörleri anlamıyor. Her şey aranabilirken neden araştırmanızı organize edesiniz?
Bir noktaları var.
Zaten depodaki tüm sıralı düz baytlar. Küresel arama bu kadar hızlı ve güçlüyken neden organize olmakla uğraşasınız ki?
SmallTalk, 80’lerde size kod hakkında soyut terimlerle düşünme özgürlüğü vermeye çalıştı. Artık dosya yok, sadece bağımlılıklar. Herhangi bir şeyi herhangi bir yere taşıyın ve derleyici bunu çözecektir. Tutmadı. Bilgisayarlar yeterince hızlı değildi.
Günümüzde en çok işe yarayan yaklaşımların bir karışımıdır: Çok fazla değil, çoğunlukla özelliğe göre kategorileri kullanın.
Şerefe,
~İsviçre
Bu makaleden hoşlandınız mı?
Modern bir yazılım mühendisinin kariyeri ve becerileri hakkında gerçek bilgiler içeren makaleler yazıyorum. “Yürekten ham ve dürüst!” bir okuyucunun tanımladığı gibi. tarafından körüklenen 20 yılda öğrenilen dersler binanın üretim kodu yan projeler, küçük işletmeler ve hiper büyüme girişimleri için. Hem başarılı hem değil.
Aşağıdan abone olun 👇
Swizec’in Bültenine katılın ve bilgilendirici e-postalar alın 💌 zihniyetler, taktikve teknik beceriler kariyerin için. Yapı üretim yazılımından gerçek dersler. Palavra sıkma.
“Dostum, basit yazılarına bayılıyorum! Seninki, açtığım tek haber bülteni ve okuyup sonuna kadar kaydırmayı siktiğim tek blog. Ve vay, benden her zaman ders al. İlham verici! Ve çok cana yakın. 👌”
Cevaplayabileceğimi düşündüğünüz yanan bir sorunuz mu var? bana vur twitter ve elimden geleni yapacağım.
Ben kimim ve kime yardım ediyorum? Ben Swizec Teller ve kodlayıcıları mühendislere dönüştürüyorum. “Yürekten ham ve dürüst!” yazı. Palavra sıkma. Modern bir yazılım mühendisinin kariyerine ve becerilerine ilişkin gerçek bilgiler.
olmak istiyorum doğru Kıdemli mühendis? Sahiplenin, özerkliğe sahip olun ve ekibinizde bir güç çarpanı olun. Kıdemli Mühendis Zihniyeti e-kitabı size yardımcı olabilir 👉 swizec.com/senior-mindset. Bunlar kariyerimin kilidini açan zihniyet değişiklikleri.
Sunucusuz ve modern arka uç hakkında merak mı ediyorsunuz? Ön uç mühendisleri için Sunucusuz El Kitabına göz atın 👉
SunucusuzEl Kitabı.dev
D3 örneklerini kopyalamayı durdurmak ve kendi veri görselleştirmelerinizi oluşturmak ister misiniz? Tüm ekibinizin anlayabileceği ölçeklenebilir dataviz React bileşenlerini nasıl oluşturacağınızı öğrenin Veri Görselleştirme için React
JavaScript, React, Serverless, Fullstack Web veya Indie Hacking ile ilgili en iyi e-postalarımı almak ister misiniz? Ödeme swizec.com/collections
Modern JavaScript sözdizimini tazelemek ister misiniz? Etkileşimli hile sayfama göz atın: es6cheatsheet.com
Harika biri bu mektubu sizinle paylaştı mı? Müthiş! Yazılım mühendisleri için mükemmelliğe giden yolda haftalık mektuplarıma buradan kaydolabilirsiniz: swizec.com/blog
Modern JavaScript sözdiziminizi tazelemek ister misiniz? Etkileşimli hile sayfama göz atın: es6cheatsheet.com
Bu arada, belki bugün henüz kimse söylemedi: Seni sen olduğun için seviyorum ve takdir ediyorum ❤️