Test-Driven Development denediğiniz

3 Cevap php

Bu okuduktan sonra post Ben biraz sveyau sveyadum adam gibi aynı konumda hissettim. Teknolojiyi seviyveyaum ve gerçek dünya sveyaunlarını çözmek içiçinde yeni fikirler geliyveya sadece benim nöronlar azgın alır, ama denklemiçinde diğer kısmı - aslında şeyler (hızlı) yaptırılır - nveyamalde gerçekleştirmek içiçinde kıçından bir ağrı, ben 'özel zaman m kendim içiçinde yapıyveyaum.

Bazen tür kodu ile düz sıkılmış hissediyveyaum, ben metiçinde düzenleyicisiçindede imleci hvardırket ve benim kod bakıyveyadu, ben zaten biri daha iyi bir çözüm ile gelip çalışırken daha fazla zaman harcamak diğer bazı kere. Ben bu bir disease called perfectionism duydum.

Ben aynı yazı okudum (ve aynı zamvea SO da burada bir kaç kez) olduğunu TDD codiçindeg like a girl, ancak ben TDD bir şans hiç durdurmak içiçinde aslında iyidir - çünkü ben ya tembel / öğrenmek kurmak ya da ben kafamın içiçindede gereken tüm testleri yapabilirsiçindeiz, çünkü ben bunu ihtiyacım sanmıyveyaum çünkü.

  • Ayrıca TDD aslında GTD yardımcı içindeanıyveya musunuz?
  • TDD hakkında bilmeniz gerekenler nelerdir?
  • Ne TDD alternatifleri hakkında?
  • Ne TDD web uygulaması geliştirmek / düzenlemek içiçinde en iyi yöntem olurdu?
  • Ne kütüphaneler Ben hayatımı kolaylaştırmak içiçinde (varsa) kullanmanız gerekir?

PS: Ben öncelikle değilim (ama sadece değil) burada PHP ile çalışıyveya.

3 Cevap

Şahsen ben TDD programlama bir yaratıcı süreç için en kötü bir engeldir iyi overkill olduğu ve düşünüyorum. Zahmetle henüz yazılmamış yöntemleri / sınıfları olarak her biri için birim testleri yazmak harcanan zaman daha özgün sorunu çözme harcanacak. Ben ünite testleri büyük bir hayranıyım ve onlara yürekten inanıyorum söyleniyor. Ben bir kod özellikle karmaşık ya da sorunlu parça varsa ben sorunu çözmüş genellikle SONRA tek bir yöntem için 20 birim testleri yazmak için mutlu ama daha iyiyim. TDD, hemen her programlama paradigması gibi, hiçbir gümüş kurşun. Isimli uygun olmadığını aramaya devam değilse bunu kullanmak.

Ama inanmayarak ile benim görüş almak. Bir çok daha ilginç bir Kent Beck ve How deep are your unit tests? geliyor.

Do you also believe that TDD actually helps to GTD? My biggest concern was simply not being able to test code. It was too complex. Our core libraries weren't built around an easily testable interface. So we wrote tests for whatever we could. In the end we ended up refactoring our core libraries to make life easier. Besides that, it's a change of a mindset, and i would definitely consider allocating more time on your first TDD project just to kind of flush out some of the problems you may have along the way.

What do I need to know about TDD? TDD is not a substitute for a methodology. It is a beneficial addition or at least it's supposed to be. If done right, TDD greatly improves software design. It also acts as your internal documentation. If you want somebody to look at your API and understand how it works they can simply look at your well named an formed tests.

What about alternatives to TDD? Like i said, i wouldn't consider this a substitute for a methodology. There is an alternative and that is not to use it :)

What would be the best methodology to organize / develop a TDD web app? We have been fairly successful with scrum/agile, if that's what you're asking.

What libraries should I use (if any) to make my life easier? My PHP knowledge has expired 5 years ago, and i'll let somebody else answer this.

Her iki şekilde de, sadece benim 2 sent. Burada okuma gibi hissediyorum iyi bir bakıştır: http://www.agiledata.org/essays/tdd.html

Mümkün olduğunca modeli içine kadar kod kürekle (ve görünümü / kontrolör üzerinden): Geçenlerde "şişman modeller ince denetleyicileri" http://www.amitshah.in/php/controller-vs-model.html ile başladım.

Benim web uygulamaları sadece bir kaç karmaşık modelleri test etmek phpunit (ve bunun için Zend Framework desteği) kullanın. Etraflıca basit bir SQL sorgusu çalıştırır 2 satır fonksiyonu kontrol birim testleri yazmak zaman IMHO bir kaybıdır. Son yıllarda çift üzerinde ben yazma testleri ile lazier ve lazier var ve kod çok basit çünkü çoğu web için onun değil değer apps.

Ben kafamda tüm tutamadı ince karmaşıklık bir sürü orada olacak biliyordu çünkü Ama son projede (kompozit ürünler ile birden fazla depo stok seviyelerini izler bir e-ticaret sitesi), I test ilk geliştirme yapmaya başladı aynı anda. Benim düşünce gelişmiş olarak çalışan her şeyi tutmak için tek yolu bazı testleri yazmak oldu. Bazı parçaları ile onlar önemsiz çünkü o diğer parçalar ilk test edildi testler, henüz diğer parçalar testleri gerek yoktu sınıf yazmak daha doğal görünüyordu. TDD bir araç değil, bir dindir. Eğer bu olmuyorsa çalışır olduğunda kullanın, dur.

Ben TDD fayda gördüğünüz karmaşıklığını azaltmak ve hızı (ben sorunları çözebilir hangi oranı) artan olduğunu. Benim kod çalışıyor kanıtlamak bazı testler yazmak, o kısa sürede tüm testler geçerken, ben bir sonraki soruna taşıyabilirsiniz. Bu benim için kodlama geri eğlenceli koyar.