Onur Dayıbaşı

CV
none

Pure Function Nedir ?

Fonksiyon bir state tutmuyorsa dışarıdan aldığı değerleri işleyip geriye sonuç dönüyorsa bu tip fonksiyonlara Pure Functions deriz. Burda bir önemli hususta kendisine değer olarak geçirilen parametreleride değiştirmemesidir. Yani dışarıya oldukça izole bir şekilde hizmet vermesi gerekir. Aşağıdaki örnekte toplama işlemi sırasında a ve b değişkenlerinde bir değişlik yapmıyor ve sadece bunları kullanarak bir sonuç üretip bu sonucu döndüğü için bu tip fonksiyonlar Pure Functions diyoruz

1function topla(a,b){return a+b;}
  • Aynı girdiler için her zaman aynı sonucu verecek.
  • Herhangi bir side effect (yan etkisi) olmayan

fonksiyona Pure(Saf) fonksiyon denir ve Mapping işlemleri Pure fonksiyon şeklinde yazılabilir. Algebra işlemlerinde ilgili fonksiyonun karşılığında bir değer koyabiliyorsanız Örneğin max →12 , double →6 değeri koyabilirsiniz. Bunu fonksiyon bu aşamada herhangi bir console, ekran, network işlemi yapmadığı için ve sonuç ne olursa olsun aynı olacağı için diyebilirsiniz.

1//Max
2const max=Math.max;
3console.log(max(3,2,8,12));
4console.log(12)
5
6//Double
7const double=x=>x*2;
8console.log(double(3));
9console.log(6)

Bu şekilde programın sonucunu değiştirmeden yerine eşdeğer değerine koyma işlemine referential transparency denir.

Pure fonksiyonlar paralel programlama için çok uygun mekanizmalardır. State tutmadıkları ve dış etkileri olmadıkları için paralel olarak rahat bir şekilde işletilebilirler. Bir bağımlılıkları olmadığı için kod içerisinde organize edilmeleri, refactor ile bir yerden başka bir yere taşınmaları oldukça kolaydır. Bakım aşamasındaki değişikliklerden az etkilenirler.

Bu yazıda Mapping fonksiyonları üzerinde duracağız. Mapping fonksiyonlarının Pure fonksiyon olmasındaki zorluklar nelerdir dersek

  • Ortak Durum Paylaşımı (Shared State)
  • Random ve Date gibi aynı değeri oluşturmayan fonksiyonların kullanımı
  • Mutability

Referanslar