Arama Sonuçları: 'Yazılım Tasarımı'

Hata Kodları mı, Hata Fırlatma mı?

Nesne yönelimli programlamada, akış zincirindeki hataların yakalanması ve yönetilmesi için metot seviyesinde temelde 2 yöntem mevcuttur. Bunlar:

1. Hata Kodları:

Basit bir örnekle anlatacak olursak,

    public class MethodResult
    {
        public MethodResult() { }

        public MethodResult(int errorCode, string errorMsg)
        {
            ErrorCode = errorCode;
            ErrorMessage = errorMsg;
        }

        public int ErrorCode { get; protected set; }
        public string ErrorMessage { get; protected set; }
        public bool HasError => ErrorCode != 0;
    }

    public class MethodResult<T> : MethodResult
    {
        public MethodResult(int errorCode, string errorMsg)
            : base(errorCode, errorMsg) { }

        public MethodResult(T data)
        {
            Data = data;
        }

        public T Data { get; protected set; }
    }

Yukarıdaki gibi bir sonuç sınıfı kullanarak tüm metot
devamı için tıklayınız...


Çok Katmanlı Mimari Nedir? Neden Kullanılır?

Çok katmanlı mimari sık kullanılan temel bir mimaridir. Özellikle basit web uygulamalarında uygulanan n-layer ve n-tier olarak farklı 2 kavrama karşılık gelmektedir. Bu iki kavram birbirinden farklıdır.

1. N-Layer:

Genelde uygulamanın 3 katmana ayrılmasıdır. Sunum (presentation), iş (business or logic), veri erişim (data access) katmanları temel katmanlardır. Sırasıyla kısaca PL, BL ve DAL diye adlandıralım. Katmanlar aynı işlem tarafından sunulmakta fiziksel olarak değil ama mantıksal olarak ayrılmış durumdadır. .Net için örnekleyecek olursak uygulamanın 3 farklı kütüphaneden (dll) den oluşması gibi, Java için ayrı package (jar) öğeleri gibi. Açık çok katmanlı mimaride; katmanlar, bağımlı olduğu diğer tüm katmanlara erişim sağlayabilir (PL>>BL & PL>>DAL gibi). Kapalıda ise her katman sadece bir sonrakine erişim sağlayabilir (PL>>BL>>DAL). Bu 3 temel katman dışında ihtiyaca ve tasarıma bağlı olarak başka katmanlar da (Facade, Controller, Proxy vb.) eklenebilir. Ayrıca tüm katmanların erişebileceği (helper, exception vb. sınıfların yer aldığı) ortak bir katman kullanımı da sık tercih edilmektedir.
devamı için tıklayınız...


Yazılım Tasarım Kalitesi Nedir? Yazılım Kalitesi Nedir? Farkları Nelerdir?

Öncelikle kalite nedir onu tanımlayalım. Bir ürün, hizmetin belirlenen veya olabilecek ihtiyaçları karşılama kabiliyetine dayanan özelliklerin toplamıdır şeklinde basitçe tanımlanır kalite. Peki bu tanım yeterli midir? Bence hayır. Kalite bakıldığında sezgisel olarak anlaşılabilen ama tanımlanması güç bir kavramdır. Yine de biz tanımlayabildiğimiz kadarı ile yazılım kalitesi ve tasarım kalitesi nedir ele alalım.

Yazılım kalitesi bir yazılımın dıştan göründüğü şekliyle ihtiyaçları karşılama kabiliyeti ve özelliklerinin toplamıdır. Yazılımın çalışma, cevap verme süreleri, kullanıcı açısından kullanım kolaylığı, görsel özellikleri, hata verme sıklığı vs. gibi kavramları dışarıdan gözlemlenen unsurlara örnek verebiliriz. Yazılım Tasarım Kalitesi ise yazılım iç özelliklerini temsil eder. Kolay anlaşılır, kolay gerçeklenebilir, kolay değiştirilebilir, kolay test edilebilir bir tasarım yüksek kaliteli bir tasarımdır. Geliştirme, test, hata giderme, bakım maliyetlerini minimuma indiren bir tasarım, yazılım tasarım kalitesinin yüksek olduğunu gösterir. Yazılım tasarım kalitesi, yazılım kalitesini büyük oranda etkilemektedir ancak tasarım kalitesi yüksek, kalitesi düşük bir yazılım veya bunun tersi de mümkündür. Soyut kavram olan yazılım yerine somut bir kavram üzerinden benzetme yapalım;
devamı için tıklayınız...


Tasarım Desenleri - Fabrika Metodu (Factory Method)

Fabrika metodu yaratıcı desen grubuna girer. Oldukça yaygın kullanılmaktadır. Amacımız, bir nesneyi tanımlamak için bir arabirim veya soyut sınıf tanımlamak ancak hangi sınıftan nesne oluşturulacağı kararını alt sınıflara bırakmaktır.

Örneğin aşağıdaki gibi soyut bir enstrüman sınıfı ve bu sınıftan türeyen bazı enstrümanları tanımlayalım.

    public abstract class Instrument
    {
        public virtual void Play()
        {
            Console.WriteLine($"{GetType().Name} played.");
        }
    }

    public class BassGuitar : Instrument
    {
    }

    public class ClassicalGuitar : Instrument
    {
    }

    public class Drums : Instrument
    {
    }

    public class ElectricGuitar : Instrument
    {
    }

    public class Keyboard : Instrument
    {
    }

Daha sonra bu enstrümanları kullanacak olan müzik gruplarını temsil edecek bir soyut sınıf oluşturalım.
devamı için tıklayınız...


SOLID Prensipleri Nedir?

SOLID prensipleri Robert C. Martin tarafından tanımlanmış ve ismini 5 ana tasarım kuralının baş harflerinden alan tasarım kuralları bütünüdür. Bu beş kuralı aşağıdaki gibi anlatabiliriz.

1. Tekil Sorumluluk (Single Responsibility):

Bir sınıfın sadece tek bir sorumluluk alanı olması gerekir. Sadece tek bir sebeple değiştirilmeye ihtiyaç duymalı ve üstüne vazife olmayan görevler üstlenmemeli. Basit bir örnek;

internal class Rectangle : Shape
{
  private readonly double _a;
  private readonly double _b;
  
  public Rectangle(double a, double b)
  {
    _a = a;
    _b = b;
  }
  
  public override double GetArea()
  {
    return _a * _b;
  }
  
  public override double GetPerimeter()
  {
    return 2 * (_a + _b);
  }
}

Yukarıdaki Rectangle sınıfı dikdörtgeni temsil etmekte ve basitçe alan ve çevre değerlerini dönen fonksiyonlar içermektedir. Aşağıdaki ShapePrinter sınıfı ise bu şeklin alan ve çevre bilgisini yazdırma görevini üstlenmiştir.

internal class ShapePrinter
{
  private readonly IShape _shape;
  
  public ShapePrinter(IShape shape)
  {
  	_shape = shape;
  }
  
  public void Print()
  {
  	Console.WriteLine($"Shape:{_shape.GetType()}, Perimeter:{_shape.GetPerimeter()}, Area:{_shape.GetArea()}");
  }
}

Nereye, nasıl, hangi formatta yazdırılacağı sorumluluğu ShapePrinter sınıfına aittir. Eğer yazdırma fonksiyonunu da Rectangle sınıfı içerisinde gerçekleştirseydik, ilerde Console ile birlikte örneğin dokümana da yazdırmak istediğimizde Rectangle sınıfında da değişiklik yapmamız gerekecekti. Halbuki bu görev Rectangle sınıfı ile ilgili değil. Bu yüzden tekil sorumluluk prensibine uymamış olacaktık.


devamı için tıklayınız...


00:00:00
Saturday 15 Jan 2017
Altın Sözler
“Zeki adamlar söyleyecek bir şeyleri olduğu için konuşurlar. Aptallar, konuşmaları gerektiği için.”
Web hosting by Somee.com