Eski kodun yeniden düzenlenmesini uygulamak için Katas kodlama


123

Son aylarda kataları kodlamakla oldukça ilgilenmeye başladım. Programlama becerilerimi geliştirmek ve işte yazdığım kodun kalitesini artırmak için harika bir yol olduklarına inanıyorum.

Katas'ın bulunabileceği çok sayıda yer var. sevmek..

http://codekata.pragprog.com/

http://schuchert.wikispaces.com/Katas

http://www.codingdojo.org/

Bunları mükemmel Katas depoları olarak buldum ... bazılarına yönelik girişimlerim son derece tatmin edici oldu.

Ancak, şimdiye kadar gördüğüm tüm Kata'ların bir eksikliğinin olduğunu hissediyorum. Hiçbiri kötü kodu yeniden düzenlememe izin vermiyor gibi görünüyor. İlk seferinde temiz kod yazmayı öğrenmek harika ... ama şu anki işimde yeni kod yazmak için çok fazla fırsatım yok. Aksine, genellikle eski koda karşı mücadele ediyorum ve modülleri nasıl yeniden düzenleyeceğimi, bağımlılıkları nasıl ortadan kaldıracağımı ve birleştirmeyi azaltacağımı bulmaya çalışıyorum.

Bu nedenle, eski kodu yeniden düzenleme ve onu temiz koda dönüştürme becerilerimi geliştirmek için kullanabileceğim birkaç Katas arıyorum.

Zaten var olanları bilen var mı? İşteyken bu konuda çok fazla pratik yaptığımı biliyorum ... ancak becerilerimi sınıflarda bağımlılıkları nasıl kıracağımı ve endişeleri nasıl ayıracağımı hızlı bir şekilde görebileceğim noktaya kadar geliştirmek istiyorum. çok fazla yap.


+1 güzel soru, sağlanan yararlı bilgilerle
KLE

Keşke +1'den fazlasını verebilseydim :) Harika bir soru. Programlama için bu tür bir uygulamayı hiç düşünmemiştim ...
FallenAvatar

Birinin, özellikle eski kodun yeniden düzenlenmesi için küçük bir sistem gönderdiğini görmek isterdim ... Michael Feathers'ın yeniden düzenlemelerinin parlayacağı parçaları olan bir şey. Bir haftadan fazla süredir böyle bir şey arıyordum. kimse? kimse? :)
Derick Bailey

Güzel soru. @ Ryan'ın cevabında bahsettiği şeyi deneyebilirsiniz. Bir giithub deposu oluşturmanızı öneririm: github.com/garora/TDD-Katas Geçmişe gidebilir ve bu Kataların nasıl yeniden yapılandırıldığını kontrol edebilirsiniz.
Gaurav Aroraa

Yanıtlar:


92

Bunları doğrudan kataloglayan bir site bilmiyorum, ancak ara sıra kullandığım bir strateji şudur:

  1. Sourceforge'da eski, küçük, bakımı yapılmamış bir açık kaynak projesi bulun
  2. İndirin, derleyin / derleyin / çalıştırın
  3. Belgeleri okuyun, kod için bir fikir edinin
  4. Eski Kod ile Etkili Çalışma tekniklerini kullanarak bunun bir parçasını teste tabi tutun
  5. Bu parçayı yeniden düzenleyin, belki hataları düzeltin ve yol boyunca özellikler ekleyin
  6. 4 ile 6 arasındaki adımları tekrarlayın

Özellikle zorlayıcı bir parça bulduğunuzda, çalışmanızı bir kenara bırakın ve becerilerinizi pekiştirmek için birkaç kez tekrarlayın.

Bu sadece yeniden düzenleme yapmakla kalmaz, aynı zamanda kod okuma, test etme ve derleme süreçleriyle ilgilenme gibi diğer becerileri de uygular.

En zor sorun, üzerinde çalışmaya devam etmek için yeterince ilgilendiğiniz bir proje bulmaktır. Üzerinde çalıştığım sonuncusu, genetik programlama için bir python kitaplığı ve üzerinde çalıştığım şu anda Java için bir IRC kitaplığı.


4
+1 çok ilginç öneri. Dediğin gibi, zor olan şey uygun bir proje bulmaktır. Bunu çok düşüneceğim. Belki ben veya diğerleri, çok yararlı olan bazılarını
bulursa

3
"Eski Kodla Başa Çıkmak" - "Eski Kodla Etkili Çalışmak" mı demek istiyorsunuz? amazon.com/Working-Effectively-Legacy-Michael-Feathers/dp/…
TrueWill

1
Evet, "Eski Kod ile Etkili Çalışmak" demek istiyorum. Yakaladığınız için teşekkürler!
Ryan

21

Büyücünün böylesine eski bir konuyu yanıtladığını hissediyorum, ancak değerli bir ekleme yapacak bir şey var - Legacy Code Retreat .

Fikir, eski kodla bir Code Retreat'e sahip olmak ve bununla başa çıkma tekniklerini uygulamaya çalışmaktır, ancak sizi sadece kendi hazırladığınız kodu kullanmaktan ve onunla pratik yapmaktan men edecek hiçbir şey göremiyorum. Bunu sadece bir Altın Usta yaratmak için kullanmak bir saatlik çalışma anlamına gelir ve yapabileceğiniz daha çok şey vardır. Kata'nız genellikle yaklaşık 2 saat sürüyorsa, LCR'de genellikle olanları kata'ya bölerek, üzerinde çalışabileceğiniz dört farklı şey olduğunu söyleyebilirim.

Fikrin yazarı JB Rainsberger'in, üzerinde çalışacağınız basit bir eski sistem olan Trivia Game'i içeren bir GitHub deposu var.

Organizatör / katılımcı olarak deneyimime göre, insanlar bunu gerçekten sevdiler ve eski bir kodda neyin sorun olabileceğini ve yeniden düzenlemenizin sizi nereye (ve nasıl!) Götürebileceğini görmek aydınlatıcı oldu. İşte nasıl göründüğüne dair bir başka açıklama, Andreas Leidig .


20

Emily Bache'nin bazı yeniden düzenleme kataları olan bir github deposu var: Emily Bache'nin Yeniden Düzenleme Kata Repo'su . Yeniden düzenleme için KataYahtzee ve KataTennis'in varyantları vardır. Ayrıca, refactoring kata olarak tasarlanan Gilded Rose Kata'nın bir çeşidine sahiptir.

Ayrıca deposunda Yarış Arabası Kataları var: Yarış Arabası Kata . Yarış Arabası Kataları ayrıca yeniden düzenleme için iyi egzersizler içerir.

Bu kata kata birden çok dilde sahiptir:

  • C ++
  • C #
  • Java
  • JavaScript
  • piton
  • yakut

4
Emily ayrıca Kataları listeleyen ve kendi kodlama dojolarınızı nasıl başlatıp çalıştıracağınızı açıklayan Kodlama Dojo El Kitabı kitabını da yayınladı. Kitabı şiddetle tavsiye ederim: leanpub.com/codingdojohandbook
Christian Maslen

1
Kitabını dojoları çalıştırmak için kullandım ve mükemmel bir kaynak olduğuna katılıyorum. Emily'nin pluralsight.com/courses/the-coding-dojo adresinde de ilgili bir kursu var.
Steve Clanton
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.