Standartlaşmış PHP Yazım Kuralları

Öncelikle herkese merhaba, başlıkta yazım kuralı olarak yazdım fakat bu yazım stilleri kuraldan daha çok php dünyasında profesyonel olarak yazılım geliştiren topluluklar tarafından standart olarak kullanılan syntax biçimidir. Eğer bir proje geliştiriyorsanız ve gerçekten kaliteli bir kod yazmak istiyorsanız size tavsiyem mutlaka bu yazıda belirtilen kurallara uymanızdır. Ekstra olarak şunu da belirteyim bu kurallar codeigniter framework dökümanından kendi yorumlarım ile Türkçe’ye çevirilmiştir. Orjinal ingilizce dökümantasyona yazının en altındaki kaynak bölümünden ulaşabilirsiniz.

Dosya Formatı

PHP kodlaması yaptığınız dosyalarda BOM seçili olmayacak şekilde UTF-8 kodlama biçimini tercih etmelisiniz. Satır bitişleri için ise LF kullanılması önerilmektedir. Genellikle notepad++ editörü bu kısımda sıkıntılar yaşatmaktadır, bu yüzden bu ayarı yapmalısınız. Fakat Visual Studio Code, Sublime Text ve Atom gibi daha gelişmiş editörler ise varsayılan olarak UTF-8 formatını kullanmaktadır. Bu dosya formatını ise genellikle editörünüzün sağ alt kısmında “file encoding” anahtar sözcüğü ile görebilirsiniz.

PHP Etiketleri

Standart olarak kodlama yaparken php etiketlerini açarız ve kapatırız. Fakat dikkatinizi çektiyse bazı php dosyalarında kapatma etiketi (?>) kullanılmaz. Eğer son php kodunuzdan sonra başka herhangi bir dilde (html, js, vs..) kod eklemesi bulunmuyorsa php etiketlerinizi kapatılmaz. Bunun yerine sadece en alta boş bir satır bırakmanız yeterli olacaktır.

Dosya Adlandırması

Dosya türleri php içinde 2’ye ayrılmaktadır. Birincisi sınıf (class) dosyaları, ikincisi ise sınıf harici (controller, view, vs..) dosyalardır. Eğer dosyanız bir sınıf dosyası ise sadece ilk harfi büyük kalan harfler küçük (ucfirst), eğer sınıf değilse tüm harfleri küçük (lowercase) olacak şekilde kullanılmalıdır.

Doğru kullanım:

Sınıf ve Metod Adlandırması

Sınıflarımızı adlandırırken class dosya isminde olduğu gibi ilk harf büyük ve diğer harfler küçük olacak şekilde (ucfirst) isimlendiriyoruz ve her bir kelime arasına uzun çizgi (“_”) koyuyoruz.

Metod isimlendirmesini yaparken ise tüm karakterler küçük ve yine kelimeler arası uzun (alt) çizgiyle ayrılacak şekilde düzenliyoruz.

Doğru kullanım:

Değişken isimleri

Öncelikle hatalı olan kullanımları görelim ve sonrasında neden bu şekilde kullanmamamız gerektiğine göz atalım.

Hatalı kullanım:

  • Tek karakterli değişkenler sadece döngü içinde index numarası olarak kullanılmalıdır.
  • Değişken isimleri büyük harfle başlamamalı.
  • Aynı anlama gelen tekrarlardan kaçınılmalı.
  • Çoklu kelimeler birbirinden ayrılmalı.
  • Çok uzun değişken isimleri kullanılmamalı.

Doğru kullanım:

Yorum Satırları

Yazdığımız kodu başka bir biri okuduğunda ya da ileride kodumuzda değişiklik yapmak istediğimizde tüm kodu kontrol etmeden sadece açıklama satırından tüm her şeyi anlayabilmemiz için sınıflar, fonksiyonlar ve değişkenler için açıklama satırı içerisinde detaylı bir bilgilendirme yapmalıyız. Bu 3 farklı kod için açıklama satırlarına göz atalım.

Sabitler

Sabitler kullanılırken tüm karakterler büyük harf olarak tanımlanmalı ve kelimeler arasında uzun çizgi bulunmalıdır.

Doğru kullanım:

TRUE, FALSE ve NULL

True ve false sözcükleri boleen değişken tipinde evet veya hayır şeklinde değer saklar. Null sözcüğü ise boşluğu ifade eder. Bu 3 anahtar kullanılırken tüm karakterleri büyük harf olacak şekilde yazılmalıdır.

Doğru kullanım:

Mantıksal Operatörler

Bu kısımda biraz kafa karışıklığı yaşayabilirsiniz çünkü bunun sebebi ve (&&) ve veya (||) operatörleri için 2 farklı tarzda kullanım yapacağız. Kelimelerin karışmaması için operatör olan sözcükleri köşeli parentez içinde belirteceğim.

  • [ve/and] operatörü kullanılırken kullanmamız gereken anahtar: &&
  • [veya/or] operatörü kullanırken kullanmamız gereken anahtar: OR

Neredeyse aynı olan and ve or operatörleri için neden birinde yazı birinde sembol kullandığımız aklınıza takılmış olabilir. Bunun sebebi düşük kaliteli monitörlerde [ || ] karakterlerinin 11 sayısına benzeyebilmesi olarak açıklama getirilmiştir.

Eksta olarak değil ( ! ) operatörünü kullanırken ise yanına eklediğimiz ifadenin arasına boşluk koymamız gerekiyor. ( != için geçerli değil)

Doğru kullanımlar:

Dönen Değerleri Karşılaştırma

Fonksiyonlarda bazen boleen tipinde dönüş alıyoruz. Bu dönen değeri if içinde kontrol ederken TRUE ya da FALSE olup olmadığına bakıyoruz. Fakat bu kısımda bazı sorunlar yaşabiliyoruz. Örneğin gelen değeri FALSE olarak kontrol edersek 0 ve boş string de FALSE olarak kabul görüyor. Bu bizim için sıkıntılar oluşturabilir bu yüzden boleen tiplerini kontrol ederken çift eşittir yerine 3 eşittir kullanıyoruz. Bu sayede hem değeri hem veri türünü kontrol etmiş oluyoruz.

Yanlış Kullanım:

Doğru Kullanım:

Aynı şekilde bir stringin boş olup olmadığı kontrol ederken de 3 eşittir kullanmamız gerekiyor, yoksa 0 değeri de kontrol mekanizmasından geçecektir.

Hata Ayıklama Kodları

Hata ayıklama kodlarının ne olduğunu bilmeyenler için toplu çıktı veren veya işleyişi bitiren kodları hata ayıklama kodu olarak sorunları bulmak ve çözmek için kullanırız. Sistemin işleyişinde problemler olup olmadığını kontrol ederken kullandığınız hata ayıklama kodlarını mutlaka kontrol işlemlerinizi yaptıktan sonra silin. Genellikle bu kodlar yorum satırına alınabiliyor fakat bunların silinmesi gerekmektedir.

Hatalı Kullanımlar:

Not: Buradaki ibare bu kodları kullanmayın şeklinde değildir, örneğin veritabanı bağlantısını kontrol ettikten sonra hata mevcut ise die() fonksiyonu ile kodu öldürebilirsiniz fakat kontrol için eklediğiniz gereksiz debugging kodları kodda yer almamalıdır.

Boşluklar

Dosya açılışında php etiketi başlatılırken üstünde boşluk olmamalıdır. İlk başlangıç php tagı ile yapılmalıdır. Bir başka durum ise php tagının kapatıldıktan sonra tekrar aynı yerde php tagı açılması yerine php tagları tek bir alan içinde birleştirilmelidir.

Bir başka boşluk sorunu ise kod bloklarındaki girinti çıkıntıların space tuşu (uzun olan) ile yapılabiliyor olmasıdır fakat bunu asla ve asla yapmayın. Hiyerarşik kod yazarken mutlaka tab tuşunu kullanın. Tüm editörlerin çalışma sistemi farklı olduğundan tab kullandığınız zaman tüm editörler ile uyumlu bir görselliğe sahip olursunuz.

Yanlış Kullanım:

Doğru Kullanım:

Uyumluluk

Bir proje içinde ekstra paketler ve sınıflar kullanıyoruz. Mevcut kullanılan dış kaynakların ve sonradan eklenebilecek olan dış kaynakların eski php sürümlere desteği olmayabilir. Bu yüzden php versiyonunuzu seçerken eğer ekstra bir durum yoksa güncel sürümleri kullanmaya özen gösterin. Minimum versiyon olarak ise 5.6 sürümünü kullanın.

1 Dosya – 1 Sınıf

Bir dosya üzerinde sınırsız sınıf tanımlaması yapabilirsiniz fakat her dosya üzerinde bir sınıf tanımlayın ve bu sayede her sınıfınız için ayrı bir dosyanız olmuş olacak. Sizden sonra başka biri kod üzerinde değişiklik yapmak istediğinde kolayca hangi dosyaya erişmesi gerektiğini anlayabilir ve sadece gerektiği kadar kodla muhatap olur.

Kod Blokları

Bu sistemin genel olarak kullanılmadığının farkındayım fakat elimizden geldiğince kod bloklarını bu şekilde tanımlamaya özel gösterelim. Bu yazım stilinin tarzı Allman olarak geçmektedir ve süslü parentezleri kodun sağında değil bir alt satırda kodun başlangıç hizasında başlatır.

Hatalı Kullanım:

Doğru Kullanım:

Bu sistem sınıflar haricinde tüm süslü parentez kullanılan tüm kod bloklarında geçerlidir. (karar yapıları, döngüler, hata yönetimleri ve fonksiyonlar)

Değişken ve Parantez Boşlukları

Değişken ve parentezleri kullanırken bazı yerlerde boşluk kullanılırken bazı yerlerde ise bitişik yazım yaparız. Bunu direkt örnekler üzerinden göstermek istiyorum.

1) Dizi indisleri belirtilirken boşluk kullanılmaz.

Hatalı kullanım:

Doğru kullanım:

2) Fonksiyon paremetlerinde boşluk kullanılmaz.

Hatalı kullanım:

Doğru kullanım:

3) Döngü parametrelerinde ve şartlarında kenarlarda boşluk kullanılmaz fakat parametreler arasında bir boşluk bulunur.

Hatalı kullanım:

Doğru kullanım:

Private Metodlar

Sınıfınız içinde private türünde method ve özellik tanımlarken bir ismin başına bir adet uzun çizgi koyun bu şekilde hangilerinin public hangilerinin private olduğunu kolaylıkla ayırt edebilirsiniz.

Doğru kullanım:

Kısa PHP Etiketleri

PHP yazıları daha kolay bir şekilde ekrana yazdırabilmemiz için short tag sistemini kullanmaktadır fakat bunu kullanmanız önerilmez. Bunun sebebi birçok yazılım dili bulunması ve bazı kodların short tag ile çakışmasıdır. Bu yüzden ekrana çıktı verirken short tag yerine echo kullanıyoruz.

Hatalı kullanım: 

Doğru kullanım:

Tek Satırda Tanımlamalar

Değişenlerinizi tanımlarken tek satır yerine tüm değişkenleri alt alta yazın.

Hatalı kullanım:

Doğru kullanım:

Tek Tırnak vs Çift Tırnak

Bildiğiniz gibi çift tırnak ile oluşturduğumuz stringler içinde değişkenleri kullanabiliyoruz. Bu yüzden içinde değişken olan stringler için çift tırnak, içinde değişken olmayan stringler için tek tırnak kullanıyoruz ve çift tırnak içinde bulunan değişkenleri süslü parentez içinde ekliyoruz. Ekstra olarak SQL kodları içinde string ifade belirtirken tek tırnak kullanıldığı sürekli stringimizi bölmemek için tanımla yaparken çift tırnak kullanıyoruz.

Hatalı kullanım:

Doğru kullanım:

SQL Komutları

SQL sorgularımızı kod içinde yazarken her belirteçten sonra alt satıra geçmemiz öneriliyor fakat artık SQL sorgularının yerini frameworkler içinde sql builder eklentileri aldığı için çok kullanmıyoruz. Fakat daha önemli bir kural ise tüm anahtar kelimelerin (select, from, vs..) büyük harflerle yazılmasıdır.

Hatalı kullanım:

Doğru kullanım:

Açıkçası alt alta yazma işini ben de yapmıyorum 🙂

Varsayılan Parametreler

Fonksiyonlarda hata ile karşılaşmamanız için default parametreler çok önemlidir. Bu yüzden fonksiyon tanımlamalarını yaparken varsayılan parametre tanımlarsanız problem yaşama oranınızı çok fazla düşüreceksiniz. Hatta bu varsayılan parametreleri üstte belirttiğimiz açıklama satırları alanında parametre yanında belirtirseniz daha da faydalı olur.

Doğru kullanım:


Yazımız bu kadardı, bu dökümanı hazırladığı ve bize sunduğu için codeigniter’a teşekkürlerimi sunuyorum. Sizlerden ricam ise bu yazıyı paylaşmanız. Bu yazım şekilleri ne kadar kişi tarafından bilinirse sizin de ileride daha anlaşılabilir proje kodları ile çalışma şansınız artacaktır diye düşünüyorum.

Kaynak: https://www.codeigniter.com/userguide3/general/styleguide.html

Bir Cevap Yazın