Spagetti kodla yazılan proje, framework ile yazılan projeden hızlıdır (!)

Gürkan Biçer
Dec 19, 2019 · 3 min read

Takım tutmuyorum, alınmayın ama bu “olsun, bizim uefa kupamız var” demekle aynı kapıya çıkıyor.

Photo by Safar Safarov on Unsplash / ExpressJS’de iyidir bu arada ^_^

Bir web sitenin hızlı yüklenmesi veya bir REST API’ın hızlı yanıt vermesi elbette önemlidir. Fakat, bir projenin stabilitesini sağlayan tek kriter hız kesinlikle değildir.


Spagetti kod, Türkiye sınırları içerisinde genellikle PHP ile bağdaştırılan bir terimdir. Farklı programlama dillerinde bu terim yerine daha süslü bir terim tercih ediliyor olabilir. Fakat, benim tüm diller için tercih ettiğim terim genelde çorba oluyor ^_^


Konumuzun ana başlığına geri dönelim.

Teknik olarak; bir sınıf veya fonksiyon kullanılmadan yazılan kodlar daha hızlı yanıt verirler. Benchmark testi yapılırsa, aşağıdaki kod bloklarından ilki daha hızlı yanıt verecektir ve ilkinin bir dakika içerisinde toplam yanıt verme kapasitesi diğerine oranla daha yüksek olacaktır.

Örnek 1
Örnek 2 (bir Laravel projesi için hazırlanmış Controller örneğidir)

Bu kabul edilen bir durumdur — lakin, bir “Hello, world!” metni için framework kullanmanız da beklenmez, testlerin hâla “Hello, world!” metinlerine göre yapılması da ironik.

En basit bir projeyi düşünelim. MySQL üzerinde tek bir tabloda veri tutulduğunu varsayalım. Bu projenin ana hatlarında sadece CRUD işlemleri olsun ve bu projede en az 2–3 firmaya hizmet veren bir REST API servisi olsun.

Yazılımcınız kodu aşağıdaki gibi yazsaydı ve işten ayrılsaydı — beni işe alsaydınız;

Örnek 3

Şahsen ben, bu kodu düzenlemek yerine ALT + CMD + Backspace kombinasyonu ile geri dönüşü olmayan bir yola gönderirdim.

Neden?

  • Kod temiz değil. Okunması ve geliştirilmesi zor.
  • Kod tekrarlarına açık.
  • Kod standartlarına aykırı.
  • Birden fazla yazılımcının bir arada ve aynı anda çalışabilmesi zor.
  • Her türde güvenlik zaafiyetine karşı savunmasız ve yeni bir güvenlik zaafiyetine önlem almak zor.
  • Testlerinin yapılması zor.
  • Farklı farklı isimlerde değişkenlerin havada uçuştuğu, bir değişkenin üzerine yanlışlıkla yazılmasının mümkün olduğu bir yapı.
  • Yeni yazılımcının eski yazılımcıya sövme sebebi, daha kibar tabirle yeni yazılımcının mutsuzluk sebebi.
  • Bir teknolojiye sabitlenmiş. Örnekte kodların MySQL’e uygun hazırlandığını varsayarsak, son kullanıcı ben PostgreSQL de kullanmak istiyorum derse, tekrar düzenlemek lazım (!) PDO kullanayım, bir sınıf hazırlayayım derseniz, bence demeyin — ona da bir başka yazıda değineceğim.
  • Bu listenin daha aşağıya kadar uzamasına sebep olacak birçok ıvır zıvır var, ancak başlıcaları ve en önemlileri bunlar diyebilirim.

Nasıl olmalı?

Örnek 4

Açıklamaya gerek var mı? Bence yok ^_^ Tertemiz kod. Validation ayrı yerde, örnek uzamasın diye dahil etmedim ama veritabanı işlemleri ayrı yerde, her şey standarta uygun ve bakacağın yerler belli…


Kullanacağınız framework’lere göre izleyeceğiniz yollar farklılık gösterecektir. Aynı şekilde hangi programlama dilini tercih ediyorsanız, o dilin yapısına göre de farklılık gösterecektir. Fakat, temel fikir şudur; kod şiirdir.

Bir framework mutlaka kullanılmalıdır. Her kod özenle yazılmalıdır. Kaos ortamında çıkan kod ne geliştiriciye, ne proje yöneticisine, ne test yapan kişiye, ne de son kullanıcıya yarar.

Ben CodeIgniter 2 ve 3 kullanarak başlamıştım. Daha sonraları Slim Framework ve birkaç framework daha denedim. Birkaç projemi farklı dillerde farklı frameworkler kullanarak hazırladım. Sonunda kendimi Laravel ve Lumen’de sabitlenmiş buldum. Hangi framework’ü tercih edeceğiniz sizin kararınız, fakat birini tercih etmelisiniz.


Özet

Aynı zamanda, bir sistem yöneticisi de olarak, yani işin arka boyutunu bilen biri olarak diyeceğim şu ki; hız ve kapasite tek başına bir kriter değildir. Deploy edeceğiniz sunucuya göre proje hazırlamayın, deploy edeceğiniz sunucuyu projenize göre seçin.

Kaldı ki; eskiden bir sunucuya birçok proje sığdırmalıyım düşüncesi vardı, bu ilerleyen zamanlarda gelişen teknoloji ve imkanlarla bir sunucu bir projeye döndü, şimdilerde ise bir proje birçok sunucu düşüncesiyle yer değiştirdi. Maliyetleri ise birbirine yakın, fakat, yapılabileceklerinizin kapasitesi oldukça geniş.

Bir geliştirici olarak da diyeceğim şu ki; temiz kod ve mimari önemlidir. Hız ve kapasite, temiz kod ve düzgün mimari ile de sağlanabilir. Biraz totoyu kaldırıp (bkz: konfor alanı) ekstra şeyler öğrenmenin vakti ^_^

Dipnot: Framework kullanan, dili unutmaz. Bu, bir bâtıl inançtır. Şiir yazan kimse, konuşmayı unutuyor mu? ya da yüzmeye giden futbolcular, top peşinde koşmayı unutuyor mu?

Gürkan Biçer

Written by

Back-end Developer

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade