PHP ve TDD

Test yazmak hayat kurtarır. Nasıl mı? Büyük bir yazılım yazdığınızı düşünün. Ülke çapında onbinlerce kullanıcınız var. Herkes sistemi aktif olarak kullanıyor ve sistemin saniyede 200-300 requeste gecikmeden cevap vermesi gerekiyor. Arkaplanda birsürü sistem çalışıyor. Mysql, Mongodb, Memcache, API’ler vs. Her saniye onlarca megabyte veri ekleniyor sisteme. Veritabanı gigabytelarla ölçülüyor. Böyle bir sistemi nasıl yazarsınız? Eğer cevabınız “yaz-çalıştır” ise hemen bilgisayarı kapatın ve kendinize yeni bir meslek edinin. Çünkü böylesine büyük bir sistemi bu yöntemle çalıştırmayı bile başaramazsınız. Başarsanız bile büyük sistemlerin mutlaka düşmanı olur ve çok kolay hackleneceği için hemen darmadağın olur ve sisteminiz kapanır. O yüzden boşuna uğraşmış olursunuz. Tabiki böyle büyük bir sistem için sağlam bir yatırım gerekir ve eğer siz programcılar olarak bu işin üstesinden gelemezseniz yatırımcılar size çok kızarlar. Eğer agresif bir yatırımcınız varsa iş büyür ve en iyi ihtimalle sizden davacı olur. İşte bu yüzden test yazmak hayat kurtarır. (daha&helliip;)

Spring MVC 4 ile örnek bir proje yapalım

Aslında şu sıralar çok yoğunum öyle böyle değil. Sıkıntılar dertler tepemde kara bulutlar gibi dolaşmaktan vazgeçmiyorlar ama yine de benim gibi bir manyağı durdurmaya güçleri yetmez. Hayat her zaman insanın yüzüne gülmez bazen okkalı bir tokat ta vurur ama öldürmeyen acı güçlendirir. Bu yüzden kodlamaya devam ediyoruz. Zaten iyi zamanda herkes kod yazar. Önemli olan kafada bir milyon şey varken kod yazabilmek. Bunu başarmak her yiğidin harcı değildir. Neyse konumuza dönelim. Bu yazı dizimizde sizinle örnek bir Spring MVC uygulaması yapacağız. Sonra bunu herhangi bir servera deploy edeceğiz ve tabiki SVN ve GIT üzerinden paylaşacağız. SVN server olarak Google Code, GIT olarak da Github kullanacağız arkadaşlar. Zaten o kısma gelince daha detaylı anlatacağım. Şimdilik kısaca üzerinden geçtim sadece. (daha&helliip;)

PHPUnit Kullanımı

TDD bildiğiniz gibi Yazılım Geliştirme dünyasının en önemli kavramlarından biri. Günümüzde her türden yazılım için TDD gerekebiliyor. En küçüğünden en büyüğüne kadar. Bazen bir library yazarken bazen bir class yazarken işlerin gerçekten beklendiği gibi gidip gitmediğini bilmek gerekir çünkü yazılımlar o kadar karışıktır ki ufak hatalar büyük sonuçlara sebep olabilmektedir. Sizin yada başkasının bilmeden yaptığı bir hatanın tüm uygulamayı mahfetmesini istemezsiniz değil mi? İşte bu yüzden TDD kullanmak zorundayız.

PHP her ne kadar aslında nesne yönelimli bir dil olmasa da artık OOP desteği baya ilerledi. Bundan birkaç yıl önce neredeyse tüm PHP scriptleri spagetti şeklinde yazılıyordu ama artık PHP geliştiricileri olayın önemini anladı ve yavaş yavaş OOP mantığını kullanmaya başladılar. Sonra birşey daha farkettiler. OOP tek başına herşeyi çözmüyor. Kodun tekrar kullanılabilirliği problemini çözüyor, geliştirme sürecini kolaylaştırıyor, vs vs birçok faydası görülüyor ama bir noktada yeterli olmuyor. Projeye başladıktan birkaç ay sonra işler sarpasarmaya başlıyor ve bir library’nin farklı versiyonlarında bile proje çökebiliyor yada beklendiği gibi çalışmamaya başlıyor. Bu gibi problemleri halletmek için Test Driven Development kavramını PHP’ye uyarlamak gerekiyor. (daha&helliip;)