ile

Hiç Bilmeyenler İçin Nesne Yönelimli Programlamaya Giriş-12 Düzgün dizin yapısı

Bu yazı Hiç Bilmeyenler İçin Nesne Yönelimli Programlamaya Giriş-11 Bileşenler, Composer ve JSON yazısının devamıdır. Önce onu okumanızı öneririm.

View story at Medium.com

Buraya kadar composer kullanarak bileşenleri nasıl yükleyip erişebileceğimizi öğrendik. Şimdi sıra geldi onu kullanmaya. Bu yazıda PHPUnit anlatacağım, ancak herşeyden önce doğru dürüst bir yazılım paketi nasıl olur kısaca ona değineceğim. Adım adım ilerleyeceğiz. Eğer yoksa hemen GitHub hesabı kurmanızı öneriyorum. Kitabımda GitHub kurulumunu, nasıl üye olunacağını anlatmıştım.

Doğru Dürüst Dizin Yapısı

Doğru dürüst bir projemiz olsun istiyorsak dizin yapısına dikkat etmemiz gerekiyor. İster JavaScript, ister PHP, hangi dilde yazılım üretiyorsak üretelim, her zaman söylediğim gibi, bazı iyi pratiklere dikkat etmemiz lazım.

Her türlü projede en az iki tane dizinimizin olması şart: src ve tests. Src dizini adı üstünde source yani kaynak kodumuzun bulunduğu dizin olup, tests ise, PHPUnit veya başka bir test aracı kullanarak yazacağımız testlerin bulunacağı dizindir.

Örneğin güzel bir araç olan thephpleague/json-guard paketinin dizin yapısına bakalım.

Örnek paket

Bu paket üç dizinden oluşuyor.

  1. Docs: İsteğe bağlı olarak projemizin dokümanlarını tutabileceğimiz dizin.
  2. Src: Kesinlikle ve kesinlikle kaynak kodlarımızı tutmamız gereken dizin.
  3. Tests: Testlerimizi bulunduracağımız dizin.

Her açık ya da kapalı kaynaklı projede olması şart olan dosyalar da var. Bunlara da tek tek bakalım. Sonu md ile biten dosyalar markdown formatındadırlar. Bu formatı daha sonra detaylıca anlatacağım. Bir de paketlerimiz tüm dünya tarafından kullanılsın istiyorsak kesinlikle yazı içeren dosyalarımızı ingilizce yazalım.

  1. README.md: Her projede olması kesin şart olan dosya, projemizi kısaca tanıttığımız yer. Yazılımımızın yüklenmesi, nasıl kullanılacağı, kodun nasıl test edileceği gibi değişik yönergeleri de içerir. İyi README.md yazmak bir sanattır. O yüzden buna da detaylıca bir yazı ile değineceğim. (gerekli)
  2. LICENSE.md: Yazılımımızı hangi yazılım lisansı ile dağıttığımızı gösteren dosya. GPL olur, MIT olur ama ne olursa olsun, lisans bu dosyada durur.
  3. CHANGELOG.md: Projede yaptığımız değişiklikleri belirli bir formata göre yazdığımız dosya. (isteğe bağlı)
  4. CONTRIBUTING.md: Projenize katkı yapmak isteyen kişilere söylemek istediklerinizi buraya yazıyorsunuz. (isteğe bağlı)

Diğer dosyalar belirli araçları yönlendiren ayar dosyaları olduğundan onları daha sonra detaylıca anlatacağım. Ama kısaca değinmek gerekirse:

  1. .gitignore: Github aracının belli dosyaları görmezden gelmesini istediğimizde doldurmamız gereken dosya.
  2. .gitatrributes: Yine Github aracının belli dizin ve dosyalara bizim isteğimize göre özellikler atamasını sağlayan araç. Testlerin server’a indirilmemesini sağlıyor. (Not: Çok önemli. Asla, asla, asla testlerinizi production yani canlıda çalıştırmayın, test dosyalarını ve araçlarını canlıya almayın.)
  3. composer.json: composer paket yöneticisi için paketimizi tanıtmaya yarayan json dosyası.
  4. phpunit.xml.dist: PHPUnit aracını yönlendiren xml dosyası.
  5. .travis.yml, .scrutinizer.yml, CI yani sürekli entegrasyon araçlarını yönlendiren dosyalardır. Çok ileri bir konu, kitabın sonunda anlatıcam.
  6. .editorconfig, kullandığımız IDE yazılımının kod stilini ayarlayan dosyadır.

Şimdilik bu kadar. Bir sonraki yazıda test yazmayı anlatmayı düşünüyorum.

Yorumla

Yorum