Test Driven Development vs Sözdekod Programlama Süreci

oy
16

2 Komple Kod okumamış olanlar için, Sözdekod Programlama Süreci sonra yavaş yavaş daha ayrıntılı yalancı kod için ve nihayet koduna revize temelde ilk düz İngilizce nitelendirerek bir rutin tasarlamak için kullanılan bir yöntemdir. Bu ana parası yukarıdan aşağıya sistemleri bina yerine aşağıdan yukarıya değil, dolayısıyla farklı katmanlarda temiz bir API gelişen ederek soyutlama doğru seviyede kalmasına yardımcı olmaktır. Bunun geçmesi için bir test almak için yürütmem yapmaya çok fazla odaklanır ve küçük yukarı ön tasarım teşvik çünkü TDD, bu daha az etkili olduğunu bulmak. Ben de genellikle sadece bir veya iki kez ihtiyaç duyulan bir rutin için bir düzine ünite testleri vaka olduğu için (sürekli refactored koda) kararsız kodu için birim testleri paketi korumak zorunda, oldukça zor olduğunu bulmak. Eğer Refactor yaptığınızda - örneğin, bir yöntem imzası değiştirmek - yaptığınız işin en testlerini yerine prod kod güncelleme içindedir. Bir bileşenin kod biraz stabilize edildikten sonra ben birim testleri ekleyerek tercih ediyoruz.

Sorum şu - tercih edersiniz ki her iki yaklaşımı denedim olanlar, ait?

Oluştur 03/10/2008 saat 22:44
kaynak kullanıcı
Diğer dillerde...                            


6 cevaplar

oy
4

Test Driven Development ile yine başlangıçta plan yapmanız gerekmektedir. Bu ilk yapmanız için çalışıyoruz ne yüksek düzeyde bir görünüm olmalıdır. Tüm ayrıntılar ile gelip, ama sorunu çözmek için nasıl düz İngilizce bir fikir gelmesin.

Sonra problemi test etmeye başlayabilirsiniz. Eğer bir yerde test var sonra, pas yapmaya başlar. bunu yapmak kolay değilse, size ilk planını revize etmek gerekebilir. sorun varsa sadece revize. Test istikrarı sağlarken daha iyi bir çözüme sahip böylece değişiklik yapmak için izin vermek için orada olan çözümü tanımlamak için söz konusu değildir.

Ben iyi bahis TDD kullanmaktır söyleyebilirim. Anahtar TDD demek "planlama atla" olmadığını fark etmektir. TDD planlamanın biraz iyi başladı ve gerektiği gibi ayarlamak almak için ne anlamına gelir. Hatta ayarlamak gerek olmayabilir.

Cevap 03/10/2008 saat 22:51
kaynak kullanıcı

oy
3

Genel olarak, ben sorunu çözmek için gerekli kod çok daha karmaşık kod çözümü test edilebilmesi için gerekli olduğunu ne zaman yalancı kod sadece gerçekten alakalı hale bulabilirsiniz. Bu durum söz konusu değilse, ben muhtemelen genellikle sorun üzerinde harcama değerinde süreyi için kabul edilebilir bir çözüm işe yarayabilir en basit şey olarak tarif zorluklarla kaçma.

Öte yandan, sorun varsa olduğunu karmaşık, ben bile ilk naif çözüm yazabilir önce bu yaklaşım nasıl düşünmek gerekir - Ben hala kodundan önce planlamak gerekir; Başlangıçta yazacak ne bir İngiliz açıklama daha sonra bir test koşum, sonra naif çözüm kodu, daha sonra arıtma: bu nedenle, her iki yaklaşımın bir arada kullanın.

Cevap 03/10/2008 saat 22:55
kaynak kullanıcı

oy
1

Hem Büyük Peşin Geliştirme birlikte kullandım her üç tür dil, ekip dinamikleri ve program boyutu / karmaşıklık gibi konularda bağlı yerlerini var.

Dinamik diller (özellikle yakut), ben son derece TDD tavsiye, diğer diller derleme zamanında yakalanmış olurdu hataları yakalamak yardımcı olacaktır.

Bir büyük, karmaşık sistemde, daha sen olacak daha iyi ayarlıyoruz do tasarlar. Ben, büyük bir proje için ben el-dalgasız her bölgeyi tasarlanmış ve "bu oldukça sağlıyor olmalı" diyen bir tökezleyerek noktası sonraki projede iken gibi görünüyor.

Eğer bir staticly-daktilo dilde küçük bir şey üzerinde yalnız çalışıyorsanız, liste yaklaşım makul ve ilk etapta testler yazılı çok olmamasına rağmen, (Test bakım gerektirmeyen DEĞİLDİR TDD üzerinde size zaman iyi bir anlaşma kurtaracak kötü) - orada her zaman takdir edilmez testlerde ekleyerek üzerinde çalıştığınız sistemde herhangi bir test değildir ve hatta bazı istenmeyen dikkat çekmek olabilir zaman.

Cevap 03/10/2008 saat 23:22
kaynak kullanıcı

oy
1

Test geçer diye, bitirdiniz anlamına gelmez.

TDD iyi ile karakterizedir Green - - Kırmızı Elden Geçirme .

Bir test olması hedefi hatlarının (iki) birini sağlar. Bu gereksinimleri sadece ilk minimal seti. Gerçek amaç "Sözdekod Programlama Süreci" veya herhangi bir tasarım disiplini ile aynı hedeftir.

Ayrıca, TDD edilir tahrik test ederek, ancak anlamına gelmez körlemesine tahrik testi ile. Sen senin kodunuzu yineleme aynı şekilde test yineleme yapabilirsiniz. Burada bir aptal planına dogmatik bağlılık için yer yok. Bu bir Çevik tekniği - ekibinizin ve koşullarına adapte anlamına gelir.

Bir test edilebilir bir arayüze sahip olmak yeterli kod tasarlayın. arayüz çalışacağından emin olmak için yeterli testler tasarlayın. Eğer planı ayrı ihtiyacını görünceye kadar kaç test daha ve biraz daha uygulanmasını tasarlayın.

Gerçek amaç İyi yazılımdır. TDD "iyilik" gözardı edilemez.

Bir teknik, kısıtlayıcı bir görev değildir. Bir teknikler ürün iyi kod yardım etmek için bir destek olarak bakılmalıdır. Ben akıllı olsaydın, daha zengin ve daha iyi görünümlü, ben TDD gerek olmazdı. Ben benim kadar aptalım çünkü Ama refactor bana yardımcı olmak için bir koltuk değneği gerekir.

Cevap 04/10/2008 saat 00:18
kaynak kullanıcı

oy
0

Benim için TDD sadece rekabet edemez bir as pseudocoding var - hem soyut yardımcı ve geliştirme planı, ancak TDD topraklarda gelişmesini bitirdiğinizde kez yine birim testler var .

CC2 pseudocoding olduğu açıklandığı gibi GİBİ kullanışlı bir yaklaşım, sadece o maç olamaz. TDD tasarlarken, aynı zamanda ileri projeyi gelişebilen titiz iskeleyi sağlayan oluyor hakkında sadece yarısıdır. Ancak sana yalancı kod sorunları TDD setleri çözmek için olamaz hiçbir neden göremiyorum.

Ben organik geliştirmek etmemelidir.
Sözdekod akıl katil.
Bu proje bellek af getiren küçük-ölümdür.
Ben 90 metodolojisini karşı karşıya gelecek.
Ben benim içimden geçmesine bunu sağlayacaktır.
Geçmiş gitti Ve ben onun yolunu görmek için iç göz dönecek.
Pseudocode gitti Nerede orada TDD edilecektir.
Sadece birim testleri kalır.

(: P sadece yarım ciddiyim, beni bunun için alev etmeyiniz)

Cevap 05/01/2009 saat 10:22
kaynak kullanıcı

oy
6

Ekibim her iki yaklaşımı karıştırır ve (en azından bizim için) geliştirmek için harika bir yoldur. Biz büyük ve karmaşık yazılım sistemi var çünkü birim testleri gerekir. Ama Sözdekod Programlama Süreci eller aşağı genelinde geldim yazılım tasarımı için en iyi yaklaşımdır. Birlikte çalışmayı yapmak için:

  • Biz sınıfları yazarak başlatın ve giriş ve çıkışlar ile tam yorumladı yöntem taslakları ile doldurun.
  • Biz rafine ve tek yöntem taslakları ile hala tasarımını doğrulamak için bir diyalog olarak çift kodlama ve akran gözden kullanırlar.
  • Bu noktada artık hem sistemimizi tasarlanmış ve bazı test edilebilir kod var ettik. Bu yüzden devam edin ve bizim birim testleri yazmak.
  • Biz geri gitmek ve yazılması gerekiyor mantık yorumlarla yöntemlerde doldurmaya başlayabilirsiniz.
  • Biz kod yazmak; testlerine tabi tutulurlar.

O güzelliği aslında kod yazmak zaman, uygulama işin çoğunu zaten biz uygulama aslında kod tasarım olarak ne düşündüğünü nedeniyle çok yapılır olmasıdır. sınıf ve yöntem koçanları gibi tanımlayıcı, artı aslında kullanılan olacak - Ayrıca erken süreç UML ihtiyacını yerini alır. Ve her zaman soyutlama uygun düzeyde kalır.

Ben tarif ettik Açıkçası süreç asla gerçekten doğrusal gibidir - uygulamasının bazı cilvesi biz üst düzey tasarıma tekrar gerektiği anlamına gelebilir. Ancak genel olarak, zaman biz birimi tasarımı (yöntem düzeyinde) gerçekten oldukça kararlı testleri yazmak, bu nedenle test yeniden yazılması sürü gerek.

Cevap 02/04/2010 saat 11:04
kaynak kullanıcı

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more