Ekipte pratik kullanım için Pipe odaklı TypeScript fonksiyonel yardımcı aracı fp-pack
(github.com/superlucky84)1. Motivasyon – neden yapıldı
Fonksiyonel programlamada hangi değerin önemli görüldüğü kişiden kişiye değişebilir diye düşünüyorum.
Bazıları kuramsal tutarlılığı, bazıları ise soyutlamanın tutarlılığını daha önemli görebilir.
Ben ise bunların içinde özellikle
pipe ile veri akışını bildirime dayalı biçimde tek bakışta görebilme noktasını
fonksiyonel programlamanın en büyük avantajı olarak gördüm.
Özellikle JavaScript gibi kodun kolayca karmaşıklaşabildiği ortamlarda,
verinin nereden gelip nereye aktığının gözle görülebilen bir yapı içinde olması
pratik iş geliştirmede daha da önemli diye düşündüm.
Ancak bu yaklaşımı
programlama anlayış seviyeleri birbirinden farklı üyelerden oluşan ekip odaklı gerçek iş ortamına uygulamaya çalışınca,
sık sık pratik kısıtlarla karşılaşılıyor.
Fonksiyonel desenleri uygulama sürecinde
değerler giderek daha soyut yapılara sarılıyor,
ara adımların her birinde ayrı kuralları anlamak gereken anlar arttıkça,
asıl baktığımda en önemli olan “tüm pipeline akışının okunabilirliği”
birkaç kez bulanıklaşabiliyor.
Son dönemde kod üretimine yardımcı araçlar giderek daha rafine hâle gelirken,
istenmeden tasarımın aşırı karmaşıklaştığı durumlarla da sık karşılaşmaya başladım.
Bu yüzden fp-pack’te ister insan ister araç olsun,
olabildiğince yalnızca basit biçimde pipeline yazmaya yönlendiren bir yapıyı
bilinçli olarak seçtim.
fp-pack, bu deneyimlerden yola çıkarak,
kuramsal bütünlükten çok
ekip ortamında sürdürülebilir şekilde korunabilecek Pipe odaklı okunabilirliği
önceliklendiren kişisel bir projedir.
Fonksiyonel yan etki işlemenin belirli kuramlara aşina kişilerle sınırlı kalmaması için,
anlaşılması kolay kalıplarla yeniden yorumlanmış deneysel bir Side Effect işleme yaklaşımı da birlikte eklendi
(ilgili kılavuz 👉 https://superlucky84.github.io/fp-pack/#/ko/guide/side-effect-guide).
2. Temel ilkeler
-
Plain Value odaklı
Pipeline içinde değerleri gereksiz yere sarmadan,
Plain Object / Plain Value’yu olduğu gibi koruyarak
akışın anlaşılmasını ve debug sürecini sezgisel hâle getirdi. -
Side Effect’in açık ayrımı
Yalnızca durdurma (Early Exit) veya istisna işleme gerektiğinde
ayrı, özel bir pipeline kullanılacak şekilde tasarlandı. -
Düşük öğrenme eğrisi
Yeni kavramlar eklemektense
alışıldıkpipe,pipeAsynckullanım desenlerini merkeze alarak
ekip içinde paylaşmayı kolaylaştırdı. -
Tip güvenliği
TypeScript kullanarak
pipeline ortasındaki tip uyuşmazlıklarının derleme zamanında kontrol edilebilmesini sağladı.
3. Kapanış
Karmaşık kavramları yeniden öğrenmek zorunda kalmadan,
JavaScript / TypeScript ortamında
fonksiyonel programlamanın temel avantajı olan
**“veri akışını okunması kolay kodla ifade etme”**yi
pratik iş geliştirmede doğal biçimde kullanmak isteyenler için
bir seçenek olmasını umuyorum.
🔗 Dokümantasyon
https://superlucky84.github.io/fp-pack/#/ko
🔗 GitHub
https://github.com/superlucky84/fp-pack
1 yorum
Başlangıç ve orta seviye geliştiriciler de dahil olmak üzere farklı geçmişlere sahip ekip üyelerinin
belirli bir stile ya da düşünme biçimine kendilerini zorla uydurmasına gerek kalmadan,
sadece fonksiyon,
pipeve currying kavramlarını anlamalarıyladoğal biçimde kullanabilecekleri,
fonksiyonel düşünceyle zenginleştirilmiş bir programlama yaklaşımını hayal ederek
fp-pack'i oluşturdum.