Üşenmedim daha önce yazılan 5 sayfadaki her mesajı okudum... Burada framework hakkında, olayın experi gibi konuşan bir çok kişinin, aslında bir Framework'un kullanım amacını, avantajlı ve dezavantajlı olduğu yerleri yanlış bildiklerini/öğrendiklerini gördüm.
Framework, evet, düzenli bir kod yapısı sağlayabilir.
evet işleri hızlandırabilir (kod yazma sürelerini),
düzenli kod yapısı ve kendi kod mantığı sayesinde, takım halinde çalışan insanlara, rahatça çalışabilecekleri ortak çalışma alanı sağlayabilir.
Kod yazmada acemi kişilerin yapabileceği ufak hatalar ve açıkları (mesela framework prepared statements vs kullanıyorsa, acemi coderlerin farkında olmadan neden olabilecekleri sql injection açıklarını kapatması gibi ) engelleyebilir.
AMA
bu durumlar
kimse kusura bakmasında burada kimse o frameworkleri yazanlar kadar bilemez ve bilemecek.
yukarıdaki cümleyi yazacak zihniyet ve bilgideki insanlar için geçerlidir.
Evet, sizin bilginiz frameworkleri yazan kişilerin bilgilerinden daha az seviyede ise, mümkünse siz frameworkleri kullanınız. Ama bu cümlenin doğruluğu o frameworkleri yazan kişilerin olağan üstü iş çıkardıklarından ötürü değil, sizin bilgi eksikliğinizden ötürüdür.
Siz 2000-3000 satırlık bir fonksiyon kütüpanesi veya işinizi çok kolaylaştıracak iki elin parmağını geçmeyecek sayıdaki class'ı yazamadığınız için size o frameworkde yapılan işler hayalinizin ötesinde bir iş gibi geliyor...
Bu işi az çok bilen kişi, şunu da bilir ki, bir çok framework'ün avantajları yanı sıra, dezavantajları da vardır. Bir framework, her zaman sizin yapmak istediğiniz işlemi gerçekleştirmek için planlanmamış olabilir. 5 takla atarsanız o işi yaptırabilirsiniz belki ancak, bu size performans kaybı olarak, kod kirliliği olarak dönecektir.
2-3 yıldır bu işin içerisinde olan bir kişi tabiki, bir siteyi sıfırdan kendisi yapacak dökümana, kod birikmine ve bilgisine sahip olmayabilir. Bu işi 15 yıldır yapan birisi olarak, bir framework'ün bana sağlayacağı kolaylığı sağlayacak kendi fonksiyonlarım ve kütüphaneme sahibim ancak bu işi bilen birisi şunu da bilir ki, elinizdeki kütüphane ve class'lar da her zaman her işe uymayabilir. Bu fonksiyon ve class'ları gereken işe hakkıyla adapte edebilen kişiler başarılıdır.
Günümüzde framework'ler yeni başlayanların, hızlıca proje geliştirmek isteyenlerin yararına sunulan birşey olmakla birlikte, bu beraberinde, henüz bir scripting dilini, açıklarını, performans kazanım alanlarını vs tam anlayamamış bir kişinin elinde zararlı bir silaha dönüşmektedir. Object Oriented mantığını çözememiş bir genç, eğer o framework'e bir ekleme yapmak istiyorsa, ve yeterli bilgiye sahip değilse, bulduğu, her sayfada include edilen en generic sayfanın içine bir fonksiyon veya düz şekilde yazılmış kod olarak ekleme işlemini gerçekleştiriyor. Böyle bir durumda nerede kalıyor sizin kod düzeniniz? nerede kalıyor performansınız?
Daha sayılabilecek bir sürü dezavantaj var, kod yazma hızını arttırdığı bir gerçek olabilir, ancak her kazağın size uymayacağını bildiğiniz gibi, her projeye frameworkün yapısının uymayacağını da bilmelisiniz, ve bu uyumsuzluk, kod yazma sırasında size kazandırdığı hızı, server üzerinde performans kaybına sebep olarak fitil fitil burnunuzdan getirebilir...
O nedenle kimse Framework, profesyonel yazılımcılar içindir, biz kaliteli iş yapıyoruz moduna girmesin. Framework iyi bir coderin elinde ve uygun işlerde, gerektiği yerlerde can kurtarırken, acemilerin elinde, kötü bir silaha dönüşebilir... Yapılan işlemlerdeki hatalar, daha sonra o profesyonel olduğunu iddia eden insanlar tarafından bile düzeltilmeye çalışırken terler döktürebilir.
Satın alacak kişilerin Framework'lerden korkmasının sebebi, frameworkleri siz profesyonel(!) coderlerdan daha iyi anlamalarından ileri geliyor olabilir. Çünkü iddia edilen o profesyonelliğe gerçekten sahip olan birisi, kendi sağlam ve stabil, yıllar içinde optimize ettiği, hızlı çalışan, içinde gereksiz kod barındırmayan ( evet bir framework dezavantajı daha, eğer framework istenilen modüllerin manuel yüklenmesini sağlamıyorsa belki hiç kullanmayacağınız 100 tane fonksiyon sistemde kod her çalıştığında tanımlanıyor olabilir ) kütüphanesine sahiptir ve framework'e ihtiyaç duymaz... Ve müşteriler genelde, bu sözde profesyonel(!) framework coderlarına denk gelmişlerdir ve canları yanmıştır... Haklılar mıdır? Bence haklılardır...
Sözün özü, kimse framework'tür, şu iyidir bu daha iyidir diyemez. Programlamanın mantığına aykırıdır bu. Programlamada bir problem vardır, ve bunun çözümü vardır. Bir problemin çözümü her zaman aynı şey olabilir mi? Hep framework olabilir mi?
velhasıl kelam, olay coder'da bitmektedir... Frameworkde kaliteden önce, coderda kalite arayın