Photo by Erol Ahmed on Unsplash

JS ILE FONKSIYONEL PROGRAMLAMA

Yazılımda Fonksiyonel Düşünmek -(Point Free Style)

Onur Dayıbaşı
Frontend Development With JS
2 min readFeb 28, 2020

--

Function Composition, Currying, High Order Function bir sonucu olarak Point Free Style fonksiyonlar yazılabilir.

Bu yazıyı daha önceden yazmış olduğum JS ile Fonksiyonel Programlama yazısının bir devamı olarak yazıyorum. Bir çok kavramı tek bir yazıda ele almanın yaratacağı karmaşıklıktan kaçmak için bu şekilde bir yönteme başvurdum.

Fonksiyon tanımlamasında hiç bir zaman üzerinde işlenecek data bahsini kullanmamak. Bu şekilde fonksiyon yazarak kod geliştirmeye Point Free Style denir.

Pointfree style means functions that never mention the data upon which they operate. First class functions, currying, and composition all play well together to create this style. (from Function Composition point-free style)

Peki fonksiyonu nasıl tanımlıyoruz? Fonksiyon girdi parametreleri alıp, bu parametreleri işletip geri sonuç olarak dönen fonksiyonlardır.

function testFunc(param1,param2,...) { //code return}
const testFunc= function(param1,param2,...) { //code return}
const testFunc=(param1,param2,...)=>{// code return}

Bu durumda fonksiyonu girdi parametreleri olmadan nasıl tanımlayabiliriz ? Aslında bu fonksiyonların parametre almayacağı anlamına gelmiyor sadece bu fonksiyon alan fonksiyonların başka bir fonksiyonla kapsanarak bunun parametre almayan sitil ile yazılmasıdır. Örneğin;

Toplama işlemi normal bir şekilde yazıldığında fonksiyon a, b değerlerini alan bir fonksiyon olarak yazılır.

const add=a=>b=>a+b;
console.log(add(2)(3));

Bunu Point Free Style yazmak istediğimizde dışarıdan değişken almayan fonksiyonlar oluşturuyoruz. fiveAdder ve tenAdder dışarıdan bir değişken almadığını görebilirsiniz.

const fiveAdder=add(5);
const tenAdder=add(10);
console.log(tenAdder(4));//14

Aşağıdaki örnek Function Composition point-free style blog yazısından alınmıştır. Anlatım açısından konuya çok iyi bir örnek olduğu için burda bahsetmek istiyorum. Aşağıdaki örnekte name dışardan parametre olarak aldığı için burda bu yazım sitili Point Free Style olmuyor.

const initials = name => name.split(' ').map(compose(toUpperCase, head)).join('. ');

Bu fonksiyonu aşağıdaki şekilde yazdığımızda fonksiyonları parametrelerini kaybedip compose, join, toUpperCase, split , head fonksiyonlarını işleten bir dış kapsayıcıya dönüştürerek yazdığınızda buna Point Free Style deniyor.

const initials = compose(join('. '), map(compose(toUpperCase, head)), split(' '));initials('hunter stockton thompson'); // 'H. S. T'

Referanslar

Okumaya Devam Et 😃

Bu yazının devamı veya yazı grubundaki diğer yazılara erişmek için bu linke tıklayabilirsiniz.

--

--