Clean Code ve Yazılım Prensipleri: SOLID, YAGNI, KISS, DRY

Sena İrem Toka
2 min readOct 15, 2021

--

Her yazılımcının bilmesi gereken, “clean code” yazılmasına katkı sağlayan yazılım prensipleri bulunmaktadır. Öncelikle Clean Code nedir, nasıl yazılmalıdır onu inceleyelim:

Clean Code yani temiz kod kavramı, kodu yazan geliştirici dışında insanlar tarafından kolayca anlaşılabilmesi ve üzerine geliştirme yapılabilmesi üzerine kuruludur. Kodlar basitçe okunup anlaşılabiliyor, değiştirilebiliyor, genişletilebiliyor ve bakım yapılabiliyor olmalıdır. Temiz kod yazabilmek, programlamada hayati önem taşıyan bir özelliktir. Kod yazılmadan önce tasarım ve planlama aşamaları mutlaka uygulanmalıdır.

Temiz kod yazmanın genel ilkeleri arasında şunlar sayılabilir:

  • Kodu olabildiğince basit tutmak, her zaman bir problemin asıl nedeninin arayışında olmak gerekir.
  • If/else yapıları yerine polimorfizm kullanmayı tercih ederek daha anlaşılabilir bir uygulama oluşturulmuş olunur.
  • Dependency injection kullanılarak bağımlılıklar bir sınıfa dışarıdan verilir. Bu şekilde sınıf içerisinde fazladan karmaşıklık yaratacak kodlar bulunmamış olur.
  • Bir iş bir yöntemle yapılıyorsa her yerde aynı yöntemi kullanmak gerekir. Böylece uygulama içerisinde tutarlılık sağlanmış olunur.
  • Değişken isimleri olarak açıklayıcı ve arandığında kolay bulunacak isimler seçilmelidir.
  • Fonksiyonlar, her biri tek bir iş yapacak şekilde oluşturulmalıdır.
  • Yorum satırlarında yazılan koda dair açıklamalar bulunmalıdır.
  • Yazılan testler okunabilir, hızlı, bağımsız ve tekrar edilebilir olmalıdır.

SOLID prensipleri:
SRP, OCP, LSP, ISP, DIP kısaltmalarının baş harflerinden oluşan SOLID prensiplerinin amacı geliştirilen yazılımın gelecekte gereksinimlere kolayca adapte olmasının sağlanmasıdır. Yani yeni özelliklerin yazılmış olan kodda değişiklik yapılmadan eklenerek hataların ve zaman kaybının minimuma indirgenmesini sağlamaktadır.

  • SRP — Single Responsibility Principle: Bir sınıfın ya da fonksiyonun yapması gereken yalnızca bir iş olması gerektiğidir.
  • OCP — Open Closed Principle: Bir sınıfın ya da fonksiyonun sahip olduğu özelliklerin değiştirilmeden yeni özellikler kazanabiliyor olmasıdır.
  • LSP — Liskov Substitution Principle: Alt sınıfların herhangi bir değişiklik yapılmadan türedikleri üst sınıf yerine kullanılabilmesidir.
  • ISP — Interface Substitution Principle: Sorumlulukların tek bir interface (arayüz) yerine birden çok arayüze paylaştırılarak daha özelleştirilmiş arayüzler elde edilmesidir.
  • DIP — Dependency Inversion Principle: Sınıflar arası bağımlılığın olabildiğince az olması gerekmektedir, bir alt sınıfta yapılan değişiklik üst sınıfları etkilememelidir.

YAGNI: You Aren’t Gonna Need It’ in kısaltmasıdır. Kodlarımıza daha sonra ihtiyacımız olur diye düşünerek fazladan özellikler eklememiz hem kodu karmaşık hale getirecek hem maaliyeti arttıracaktır hem de ileride test aşamalarında sorunlar çıkarabilir. Bu nedenle sadece bizden talep edilen ve o anda ihtiyacımız özellikleri barındıran kodlar yazmalıyız.

KISS: Keep It Simple Stupid’in kısaltmasıdır. Kodların olabildiğince sade, basit ve anlaşılır ve gerçekten ihtiyaca yönelik özellikleri öne çıkararak yazılması gerektiğini savunur. Aynı zamanda diğer insanlar tarafından da anlaşılabilmesi için oldukça önemli bir prensiptir.

DRY: Don’t Repeat Yourself’in kısaltmasıdır. Yapı olarak aynı işi yapan birden fazla kod bloğunun olmaması gerektiğini savunan prensiptir. Kodların aynı zamanda bu şekilde yeniden kullanılabilmesi de sağlanır. Daha geliştirilebilir ve sürdürülebilir olmuş olur.

--

--