“Kod stili ve tasarım modelleri” hakkında sunum yapma [kapalı]


9

Şirketim (küçük, 3 ofiste yaklaşık 40 kişi) bazen "geliştirici atölyeleri" çevrimiçi devs biri teknoloji konu hakkında bir sunum ev sahipliği yapar. Her zaman bizim işimizle ilgili değil, sadece herkesin becerilerini ve anlayışlarını geliştirmesine yardımcı olmak.

Bir sonrakine ev sahipliği yapmam istendi ve konu (sağladığım bir listeden seçildi) kod stili ve tasarım desenleri. Bu şeylerin o kadar yakından ilgili olmadığını biliyorum ama benimle birlikte. Kod tabanımızda geliştirilebilecek birçok yer gördüm, hatta bazıları DailyWTF için uygun olabilir, bu yüzden bu sunumun mümkün olduğunca etkili olmasını istiyorum. Sorun şu ki, bir saat içinde tam olarak neyi kapsayacağımı bilmiyorum.

İlk fikrim, kendi kodumuzu örnek olarak kullanmak, "lütfen bunu aslında işinize uygulayın" noktasını eve götürmek. Ancak konu çok geniştir.

Kodumuzda (PHP) yanlış olan bazı şeyler şunlardır:

  • Minimal OO. Son zamanlarda düzeliyor, ama yine de tonlarca küresel işlev var. Bir şeyler bulmam biraz zaman alıyor.
  • Global yapılandırma (sanırım görüş). Hemen her dosyaya dağılmış $ GLOBALS ['blah'] bulabilirsiniz.
  • Tutarsız küme ayracı stili. Kulağa çok az geliyor, ancak bu aslında beş gün önce bir sözdizimi hatasının ortaya çıkmasına neden oldu, bu da dünden beri hala düzeltilmedi.
  • Verimsiz yapılar. Bazı alanlarda çalışma süresini% 70 oranında azaltan bazı temel iyileştirmeler yapabildim.

İş arkadaşlarıma küçümseme duymadan bu şeyin olabildiğince yararlı olmasını istiyorum. Peki "stil" in hangi yönlerine odaklanmalıyım ve hangi tasarım modellerini açıklamak en yararlı olabilir?


1
Bu öyle açık bir konudur ki, kesin sonuçlara varmak zor olacaktır. Sunumun amacının, çalışma arkadaşlarınızı belirli bir standarda uymaya ikna etmek yerine mevcut sorunlardan haberdar etmek olduğunu açıklığa kavuşturmak isterim. Neden sorunuzda bahsettiğiniz hususları listelemiyorsunuz ve bunun neden kötü bir uygulama olduğunu ve olası borçlar, örneğin teknik borçlar hakkında örnekler vermiyorsunuz. ReSharper ve FxCop gibi araçlardan da bahsedebilirsiniz.
Kimse

Yanıtlar:


8

Bu kodu yazan kişilerin önünde bir sunumda gerçek kodu kullanırken son derece dikkatli olun.

En iyi ihtimalle parmağınızı herkesin önünde işaret ederek takımınızı üzersiniz. Ve "Gözlerimi gerçekten açtın" yerine ne alacaksın "Herkesin önünde WTF mi? Kendi koduna bile baktın mı aptal .."

Gerçek bir örnek alın, ancak değiştirin ya da kimin yazdığını izleyemeyeceğinizden emin olun. Ya da tanıdığınız kişilerden gerçek kodu alın ama aynı zamanda eski kodunuzun bir kısmını alın ve bu insanlarla mizah ve şaka yapın, standup tarzı :)

Orijinal sorularınızı cevaplamak için: Okunabilirlikle ilgili her şey: mümkün olduğunca az argüman içeren işlevler, OOP, uzun ve ayrıntılı değişken adı ve yorumları.


2
+1: kod incelemesi, diplomasi ve takdir yetkisi gerektiren hassas bir işlemdir ve kendi başına gösterim amacıyla kullanılmamalıdır.
Matthieu

4

Kuruluşunuzda bir hata izleme sisteminiz olduğunu tahmin ediyorum. Depodaki en açık hatalardan bazılarını çıkarın, neden oluştuğuna dair düzeltme raporuna bakın (küresel değişkenler ters gitti, amaçlanmadığı şeyler yapan işlevler vb.) Ve ardından bu sorunu önlemeye yardımcı olabilecek kodlama stilleri ve tasarım desenlerini tartışın .

Bu biraz araştırma yapmak zor bir iştir, ancak sunduğunuz şeyi gerçekten işe yaratan eve götürmenin en güçlü yolu budur .


2

"hala tonlarca küresel işlev".

Önce bir liste alın. Komple idealdir.

İkinci olarak, bu listeyi potansiyel sınıflara ayırın. Sınıf tanımlarını düşünün.

Gerçek sunum sırasında, bu küresel işlevlerin bir kısmını emebilecek en büyük, en belirgin, en göze çarpan, en az tartışılabilir potansiyel sınıfı seçin.

Bir tartışma konusu olarak. Bir fikrin var. Fikir birliği almanız gerekiyor. Ve soruları yol boyunca cevaplayın. Ve küreselleri paylaşan bir grup rastgele işlev değil, neden tek bir nesne sınıfı olduğunu anlamalarına yardımcı olun.

Daha sonra, bunu sadece bu sınıfı ve içeriğe nasıl geldiğinizi anladıkları noktaya konuştuktan sonra ....

Projektörü açın.

Yazmaya başlayın.

Kodu düzeltin. Birim testlerinizi yeniden çalıştırın.

Tasarım örüntüleri ve kodlama üslubu ve işlerin yapılması Hepsi tek bir pakette.


2

1 saat içinde asgari düzeyde temel bilgileri anlamak için iyi bir iş çıkarırsınız.

her konudan 3 şey seçmenizi ve bunlara odaklanmanızı öneririm; slaytları 5-7 kelimeyle sınırlayın, böylece insanlar slaytları okumak yerine sizi dinleyebilir; uydurma örnekler kullanın (böylece başkalarının önerilerine göre insanların ayak parmaklarına basmazsınız); daha fazla bilgi edinmek isteyenler için bir alıştırma olarak sonunda referanslar (URL'ler kitaplardan daha iyidir); Sunumdan sonra slaytlarınızı intranetinize yayınlayın. (Parantez sorununa gelince, bir kod formatlayıcı kullanın; muhtemelen savaşmaya değer bir savaş değil)

Önerilen konular:

  • Kodlama Stili

    • PHP OOP Zen: Stil ile Kodlama!
    • Global İşlevlerin Kod Kanserine Neden Olmasının 5 Nedeni
    • Bir Adda Neler Var? Sözleşmeler ve Akıl Algılama (ya da Beni Düşünme!)
  • Tasarım desenleri

    • Kurallarımızdaki Bazı GoF Kalıpları; giriş
    • Desenler İncil değil, sadece araçlardır
    • En İyi ve En Kötü: Desenler ve Anti-Desenler

not: global yapılandırmalardan kaçınmak bazen zordur; kolay bir çözüm, tüm referansları bir init fonksiyonuna koymaktır

uyarı: Ben sadece wordpress kırmak ve küçük web sitesi düzeltmeleri gerçekleştirmek için yeterli PHP biliyorum


1

Sunumda gerçek kod kullanma hakkında - kullanılıyorsa, sadece iyi örnekler için kullanın, ASLA kötü örnekler. Kötüler için, kendiniz yapın veya web'de bulun. Bu, iş arkadaşlarınızın çalışmalarından gurur duymalarını ve bunun tanınmasını sağlar. Ayrıca, kötü bir geliştirici olarak seçildikleri için öfkelenebildikleri / ezilebilecekleri senaryodan da kaçınır.


0

Kodlama stilleri kötü alışkanlıklardır. Kurtulmak zor. Birinin kötü bir alışkanlık bırakmasına izin vermenin en iyi yolu? İlk elden ne kadar çirkin, iğrenç veya zararlı olduğunu görmesine izin verin.

Onlara kötü kod gösterin, onlara neyin kötü olduğunu sorun. Bir saniyeliğine düşünmelerine izin verin, sonra onlara "Aaahaaa!" Onlara bir uç durum (belki de Fencepost problemi?) veya kötü tasarımlarının diğer her şeyi daralttığı bir durum göstererek.

Adamlarınız düzenli olarak kötü tasarım problemlerinden muzdarip gibi görünüyor. Onlara, küresel bir işlevin masum bir şekilde nasıl değiştiğine dair bir örnek gösterin, ona bağlı olarak diğer işlevlere zarar verir, ancak değiştirildiğini bilmemek. Onlara genel değişkenle klasik bir senkronizasyon sorunu gösterin.

Onları sıkmak veya savunma pozisyonları almak yerine onları meşgul etmek için komik bir şekilde yapın (bizi eleştiren bu adam kim?); örneğin onlara işini iki adımda yapan bir işlev gösterin (1 - eşin adını girin) (2 küresel olarak saklayın) (3-kocanın adını girin ve eşin adını küreselden veritabanında saklayın) (4- Kötü senkronizasyon erkeklerin 'yeni' eşlere sahip olmalarına neden olur), bir şaka olarak boşanma istatistiklerinin yazılmasını öneriyor.

İnanın programlama tarzı hakkında kafa karıştırıcı olabilir, çünkü düşündüğümüzü programlıyoruz ve programlama tasarımı eleştirildiğinde bazı insanlar onu düşünme şekline ve dolayısıyla zekalarına hakaret olarak kabul ediyor, bu yüzden eğlenceli bir yaklaşım almalısınız.

Kötü işlevlerinizi üstlenin, kod sahibini utandırmamak için bazı değişikliklerle gizleyin ve geliştirmek için kitleyle çalışın ve etkileşim kurun. Sonuç: Ertesi sabah kaynak kodu kontrol sisteminiz çok meşgul olacak, bu yüzden bir kahve alın ve değişiklik günlüklerine gülümseyin.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.