(Pure) Saf Fonksiyon Nedir ?

Ayse Basar
2 min readJul 4, 2023

--

Saf fonksiyonlar, programlama dünyasında önemli bir kavramdır. Özellikle de fonksiyonel programlama dillerinde önemli bir rol oynarlar. Bir fonksiyonun Saf olması demek, aşağıdaki özelliklere sahip olması demektir:

  1. Aynı girdi parametreleriyle her zaman aynı çıktıyı üretmesi
  2. Herhangi bir yan etki (side effect) tetiklememesi

Örneklerle açıklamaya başlayalım:

function sum( num1, num2 ) {
return num1 + num2
}
sum(3,4) // 7
sum(11,7) // 18

Yukarıdaki fonksiyonumuz saf bir fonksiyondur. Neden ? Çünkü sayfamızı ne kadar yenilersek yenileyelim yine aynı sonucu verir. Fonksiyon çıktıları her zaman 7 ve 18 olacaktır.

Başka bir örneğe bakalım:

function sumArray(numbers) {
let total = 0;
for (let i = 0; i < numbers.length; i++) {
total += numbers[i];
}
return total;
}
sumArray([1,2,3,4,5]) // 15

Bu fonksiyon da saf bir fonksiyondur çünkü girdi olarak verilen array ile her zaman aynı sonucu üretir ve dışarıdaki herhangi bir değişkeni değiştirmez.

Başka bir örneğe daha bakalım:

function random( num ) {
return num + Math.random()
}
random(7)

Sizce yukarıdaki fonksiyon saf bir fonksiyon mu ?

HAYIR. Neden ?

Çünkü sayfayı her yenilediğimizde farklı bir sonuca sahip olacağız. Bu fonksiyon aynı sonucu dönmez.

Peki Yan Etki Ne Demek ?

Bir fonksiyon eğer kendisi dışında bir şeye etki ediyorsa (http istekleri gibi), ya da kendi girdi ve çıktısı dışında, dışarıdan bir değişkeni değiştiriyorsa o zaman bir yan etki tetiklemiş olur.

Hemen örneklerle bakalım:

let count = 0
function calcSum( num1, num2 ) {
sum = num1 + num2
count = sum // yan etki yaratan kısım burasıdır
return sum
}
calcSum(3, 6)
// Output -> count = 9
const colors = ["orange", "purple"]
function favColors( color ) {
color.push("pink") // yan etki yaratan kısım burasıdır
}
favColors(colors)
// Output -> colors = ["orange", "purple", "pink"]

Bu örneklerde görüldüğü üzere her iki fonksiyon da kendi scopeları dışında mevcut olan global bir değişkene müdahale ediyor. Onu değiştiriyor. Yani yan etkiye sebep oluyor. Bu sebepten dolayı bu fonksiyonlar saf fonksiyonlar değillerdir.

Peki Kullanım Amacı Nedir ?

  1. Kodun güvenliğini artırır
  2. Hata ayıklamayı kolaylaştırır
  3. Test edilebilirliği artırır
  4. Kodun yan etkilerini sınırlar

Bahsedeceklerim bu kadardı. Keyifli bir okuma olması dileğiyle 🤗

Beni yourfrontendgirl instagram sayfasından takip etmeyi de unutmayın 🤗

--

--