Tasarım nedir?

Tasarımı kısaca açıklamak gerekirse, bir programı hayata geçirebilmek için tasarım prensipleri kullanılarak oluşturulan yapıdır.
İyi bir tasarım yapmak, bir program için büyük ölçüde önemlidir ve onun sürdürülebilirliğinin garantisidir de diyebiliriz.

 

İyi bir tasarım yaparken tıpkı Object Oriented Programming’in amaçlarında var olan Reusability, Extendability, Maintainability ve Readability kavramlarına uymaya özen gösterdiğimizde, uygulamamızın bir nevi hayat sigortasını da sağlamış oluruz.

Bu kavramlardan kısaca bahsetmek gerekirse:

  • Reusability (Tekrar kullanılabilirliği arttırmak, zaman kazanmak)
  • Extendability (Bir nesnemizi genişletebilmek için mevcut yapımızı yıkmamak)
  • Maintainability (Uzun zaman sonrada gelişmelere açık olması yani yukarıda bahsettiğimiz uygulamamızın hayat sigortasının olması ve sürdürülebilir olmasını sağlamak)
  • Readability (Okunabilir kod yazmak)


İyi bir tasarım yapmaktaki amacımız nedir?

Bu soruya ise aslında yukarıda OOP’nin de temel amaçlarından olan kavramları tanımlarken yanıtlamış olduk.
Özetle geçmek gerekirse, uygulamamızın geliştirile bilirliğini arttırmak ve esnekliğini sağlamaktır diyebiliriz.


Kötü tasarımın belirtileri nelerdir?

Kötü tasarıma neden olabilecek başlıca 3 unsur gösterilir.

  • Rigidity (Esnemezlik) Yeni eklentilere ve gelişmelere açık olmamasıdır.
  • Fragility (Kırılganlık) Yapılacak olan bir değişikliğin, başka kısımları etkilemesi.
  • Immobility (Sabitlik) Geliştirilen modüllerin tekrar kullanıma uygun olmaması

Sistemin genişletilebilir olmaması ve bunun beraberinde binlerce satırlık sınıflar, kendini tekrar eden metotlar ve Unit testlere (özellikle tightly coupled yüzünden) elverişli olmaması da en büyük sebeplerden birkaçıdır.

Hiçbir tasarım prensiplerine uyulmamasının da kötü bir tasarım belirtisi olduğu gibi yerli yersiz kısımlarda da bu prensiplere uydurulma çabası ile atılan taklalarla over architecture’a kaçılması da kötü bir tasarım belirtisidir.

Bu makalemizde tasarım nedir, iyi tasarımın belirtileri ve kötü tasarımın belirtilerini ele almış olduk. Gelecek makalelerimde ise başlıca tasarım prensiplerini örneklerle anlatıyor olacağım. 🙂

 

 

Gökhan Gökalp

View Comments

  • Merhaba, "yerli yersiz kısımlarda da bu prensiplere uydurulma çabası" kısmına bir örnek vermeniz mümkün mü?

Recent Posts

DevEx Series 03: Laying the Azure Focused Platform Foundation for an IDP with ASO and KRO

In the first two parts of this DevEx series, I tried to show how golden…

3 hafta ago

DevEx Series 02: From Catalog to Copilots. Boosting Backstage with MCP Server

In the first part of this DevEx series, I tried to explain Platform Engineering and…

5 ay ago

DevEx Series 01: Creating Golden Paths with Backstage, Developer Self-Service Without Losing Control

As an architect involved in platform engineering and DevEx transformation within a large-scale organization for…

6 ay ago

Event-Driven Architecture’larda Conditional Claim-Check Pattern’ı ile Event Boyut Sınırlarının Üstesinden Gelmek

{:en}In today’s technological age, we typically build our application solutions on event-driven architecture in order…

1 yıl ago

Containerized Uygulamaların Supply Chain’ini Güvence Altına Alarak Güvenlik Risklerini Azaltma (Güvenlik Taraması, SBOM’lar, Artifact’lerin İmzalanması ve Doğrulanması) – Bölüm 1

{:tr}Bildiğimiz gibi modern yazılım geliştirme ortamında containerization'ın benimsenmesi, uygulamaların oluşturulma ve dağıtılma şekillerini oldukça değiştirdi.…

2 yıl ago