Loose Coupled ve High Cohesion

Merhaba Arkadaşlar,

Bir süredir hem iş yoğunluğum hem de özel hayatımda ki bir kaç işten dolayı yazı atamamıştım, artık bugünde bir blog yazısı hazırlamazsam kendimi rahatsız hissetmeye başlayacaktım. O yüzden artık yeni bir yazı paylaşmanın vakti geldi dedim ve yazı planıma baktım.

Aslında daha çok yeni teknolojilerden ve uygulamalardan – tabi ki işe yarayan ve faydalı olduğunu düşündüğüm – bahsetmeyi seven bir insanım fakat temel bir kaç bilginin de hatırlanması gerektiğini fark ettim. O yüzden bugün birkaç kavram hakkında basit ve kısa bir yazı okuyacaksınız.

Öncelikle bu yazım Yazılım Terimleri yazı serisi ile bağlantılı bir yazıdır, orada ki paylaşımları da okumanızda fayda var.

Const ve Read-Only: Const ve read only kavramları tanımlama yaparken kullanılan anahtar kelimelerdendir.  Read-only, tahmin edebileceğiniz gibi sadece okunabilir anlamı katmaktadır. Class seviyesinde tanımlanır ve değeri runtime (çalışma zamanında) verilebilir. Tanımlandığı anda veya bulunduğu classın Constructor (yapıcı method diye klasik bir çeviri yapalım 😀 ) yapısı içerisinde değer ataması yapılabilmektedir. Değişken,-obje, read-only olarak tanımlandı ise sonradan değeri değiştirilemez. Değeri yalnızca yukarıda anlatıldığı gibi tanımlama anı ve constructor içerisinde belirlenir.

Const kelimesi ise sabit olarak kullanılır. Yani “bu değişkenin değeri her yerde budur” demek için tanımlanır. Sabitler(Consts), sınıf(Class) seviyesinde tanımlanır ve tanımlama anında değeri atanmak zorundadır. Yani, Compile time (derleme anında) sabitlerin değeri bellidir. Sabitler aynı zamanda static olduğu için iki anahtar kelime beraber kullanılmaz.

Sealed: Sealed kelimesine nadirde olsa rastlamışsınızdır diye tahmin ediyorum. Peki bu kelime ne ifade eder?  Sealed kelimesi en basit haliyle “Bu sınıftan kalıtım/miras alınmasın” demek için kullanılır.

Veee geldik iki önemli kavrama: Cohesion (Yapışkanlık) ve Coupling(Bağlaşım-Bağımlılık)

Coupled

Evet bu iki terim bize ne ifade ediyor? Bu iki terim bir programın nasıl olması gerektiği ile ilgili bir teori ifade etmektedir. Coupling kavramı, nesnelerin birbirleri ile olan bağımlılıklarını ifade etmektedir. Bir program “Loose Coupled – Gevşek Bağlı” olmalıdır (Solid prensiplerindendir) derken aslında bahsedilen, bir değişiklik yapılmak istendiğinde bundan etkilenecek sınıfların/nesnelerin minimum olmasıdır.

Yani ben sadece “Yazı Yazmak” ile alakalı bir işlem yapmak istiyorsam, bu işlem sadece “Yazı Yazmak” ile ilgili olan kısımları etkilemelidir.

Cohesion, kavramı yapışkanlık olarak çevrilebilir. Hatırlarsak Solid prensiplerinden ilki Single-Responsiblity kavramıdır. Yani her classın / modülün yanlızca bir görevi olmalıdır. Cohesion kavramıda burada devreye girmektedir. Bir Classın – methodun içindeki değişkenler, objeler bir amaca hizmet etmeli ve ortak bir görevi olmalıdır.

Yani “Yazı Yazmak” methodu içerisinde yazı yazmak ile ilgili olan kavramlar olmalı, “Kitap Okumak” ile ilgili olan kavramlar başka bir class/modül içerisinde yer almalıdır.

İyi bir program Loose Coupled ve High Cohesion yani gevşek bağımlı ve yüksek yapışkan (Çevirince bir garip oldu ama olsun 😀 ) olmalıdır.

Evet arkadaşlar bir yazının daha sonuna geldim. Bir kaç önemli, hatırlanması gerektiğini düşündüğüm kavramdan kısaca ve basitçe bahsetmeye çalıştım. Umarım faydalı olmuştur. Yeni yazılarda görüşmek dileğiyle kalın sağlıcakla…

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir