Bir programlama paradigması, birkaç tanımlayıcı ilkeye dayalı olarak yazılım inşası hakkında düşünmenin bir yoludur. Fonksiyonel programlama, saf fonksiyonlardan oluşan ve paylaşılan durum , değişken veriler ve yan etkilerden kaçınan böyle bir paradigmadır . Fonksiyonel programlama zorunlu olmaktan çok bildirimseldir ve nesne yönelimli programlamanın aksine, uygulama durumu saf fonksiyon aracılığıyla akar.
İşlevsel kod, zorunlu koddan daha kısa, daha öngörülebilir ve test edilmesi daha basit olma eğilimindedir, ancak dik bir öğrenme eğrisine sahip olabilir, bu nedenle öğrenmesi göz korkutucu olabilir. Umarım bu makale sizin için bazı şeyleri açıklığa kavuşturur ve Fonksiyonel programlama ve faydaları hakkında temel bir anlayış sağlar. Fonksiyonel programlamanın ne olduğunu anlamaya başlamak için bazı temel kavramları anlamakla başlamalısınız.
Öğrenilecek ilk temel kavram saf fonksiyonlardır. Saf Fonksiyonlar, güvenilir eşzamanlılık, React ve Redux uygulamaları ve Fonksiyonel programlama dahil olmak üzere çeşitli amaçlar için gereklidir. Bir işlevi “saf” yapan şeyin üzerinden geçelim:
Saf fonksiyonların dış durumdan tamamen bağımsızdır, bu nedenle paylaşılan, değişebilir durumla ilgili birçok hataya karşı bağışıktırlar. Bu bağımsızlık aynı zamanda saf fonksiyonların hareket ettirilmesini, yeniden düzenlenmesini ve kodda yeniden düzenlenmesini son derece kolay hale getirerek programlarınızı gelecekteki değişikliklere daha uyumlu hale getirir.
Paylaşılan durum, paylaşılan bir kapsamda veya kapsamlar arasında geçirilen bir nesnenin özelliği olarak var olan herhangi bir değişken, nesne veya bellek alanıdır. Paylaşılan durumla ilgili sorun, bir işlevin etkilerini anlamak için, Fonksiyonun kullandığı veya etkilediği her paylaşılan değişkenin tüm geçmişini bilmeniz gerektiğidir. Paylaşılan durumla ilgili ikinci bir sorun, Fonksiyonların çağrılma sırasını değiştirmenin bir dizi hataya neden olabilmesidir.
Fonksiyonel programlama, mevcut verilerden yeni veriler türetmek için değişmez veri yapılarına ve saf hesaplamalara güvenmek yerine paylaşılan durumu önler.
Bir hatırlatma olarak, değişmez bir nesne, oluşturulduktan sonra değiştirilemeyen bir nesnedir. Değişmez bir nesneyi değiştirmek istiyorsanız, sonraki en iyi şey yeni değerle yeni bir nesne oluşturmaktır. Değişmezlik, fonksiyonel programlamanın merkezi bir kavramıdır, çünkü onsuz durum geçmişi kaybolur ve hatalar yazılımınıza sızabilir.
Yan etki, çağrılan fonksiyonun dönüş değeri dışında gözlemlenebilen herhangi bir uygulama durumu değişikliğidir. Yan etkilere örnekler:
Fonksiyonel programlama, yazılımınızın genişletilmesini, yeniden düzenlenmesini, hata ayıklamasını, test edilmesini ve bakımını kolaylaştıran yan etkileri önler.
Fonksiyonel programlama bildirimsel bir paradigmadır, yani program mantığı akış kontrolünü açıkça tanımlamadan ifade edilir. Zorunlu kodun genellikle ifadelere, bazı eylemleri gerçekleştiren kod parçalarına dayandığı durumlarda, bildirime dayalı kod, bazı fonksiyon çağrıları, değerler ve operatörlerin bir kombinasyonu yoluyla bir değeri değerlendiren kod olan ifadeleri kullanır. Başka bir deyişle, bildirim programları akış kontrol sürecini soyutlar ve veri akışına odaklanır: ne yapmalı; nasıl abstracted alır.
Fonksiyonel programlama, paylaşılan durum ve yan etkiler yerine saf işlevleri, değişken veriler yerine değişmezliği ve zorunlu akış denetimi yerine işlev bileşimini tercih eder. Fonksiyonel programlamanın anlaşılması genellikle daha kolaydır çünkü durumu değiştirmez ve yalnızca sağlanan girdiye bağlıdır. Benzer nedenlerle, bildirime dayalı bir programı test etmek ve hatalarını ayıklamak da daha kolaydır.