Clean Code & Refactoring

Post on 18-Jul-2015

252 views 9 download

Transcript of Clean Code & Refactoring

Canan GÜMRÜKÇÜOĞLU

@topukluyazilimc / @cgumrukcuoglucanangumrukcuoglu@gmail.com

Clean Code &

Refactoring

Bir kod parçasının ne yaptığı üzerine kafa yormaya başlıyorsanız,

Kodunuza yeni bir geliştirme eklemek sizin için eziyete

dönüşüyorsa,

Bir yerde yaptığınız basit değişiklik çok farklı bir modülde hata

olarak size dönüyorsa,

Yaptığınız geliştirmeyi bir çok yere kopyalamanız gerekiyorsa,

Kodlarınız if-else’lerin içinde uzayıp

gidiyorsa,

Bad Code Nedir?

Analist – Yazılımcı Kavramı

Patron Baskısı

Sabırsız Müşteri

Değişen Gereksinimler, Kanunlar vb.

Proje Ekibindeki Değişiklikler

Analiz Eksikliği

BOP (Button Oriented Programming)

Neden Bad Code Yazarız?

Kod karmaşıklaştıkça harcanan süre artar,

Geliştirme yapmak zorlaşır,

Motivasyon düşer,

Üretkenlik düşer,

Projeye yeni dahil olan kişilerin adaptasyon süreci zorlaşır.

Bad Code Maliyeti

Kolay okunabilir,

Anlaşılır,

Tekrar kullanılabilir,

Tekrar içermezmez,

Bağımlılığı azdır,

Kolayca yeni geliştirme eklenebilir...

Clean Code Nedir?

Anlamlı değişken, sınıf ve metod isimleri kullanın.

Yapacağı işi iyi anlatan metod isimleri verin.

Metodlarınızda yapılan iş metod ismiyle çelişmesin.

İsimlendirme yaparken telafuzu kolay kelimeler kullanın.

Kısaltmalardan kaçının.

Sınıf adlarında fiil kullanmayın.

Kullandığınız programlama dilinin isimlendirme standartlarını

kullanın. (lowerCamelCase,UpperCamelCase, Hungarian

Notation...) http://en.wikipedia.org/wiki/Naming_convention_(programming)

Clean Code Nasıl Yazılır?

Metodlarınız en fazla 20 satırdan oluşsun.

Metodlarınız aynı anda tek bir iş yapsın.

Recursive metodları çok fazla kullanmaktan kaçının.

OOP mimariye sadık kalın.

Design Pattern öğrenin ve uygulayın.

Test Driven Development (TDD) yapın.

SOLID prensiplerini öğrenin ve uygulayın.

Clean Code Nasıl Yazılır?

‘Any fool can write code that a computer can understand.

Good programmers write code that humans can

understand.’

Martin Fowler

(Herhangi bir aptal bilgisayarın anlayabileceği kodu yazar, iyi

programcılarsa insanların anlayabileceği kodu yazar.)

Programın genel davranışını değiştirmeden iç işleyişini

değiştiren küçük kod düzenleme

adımlarıdır.

Refactoring Nedir?

Kod kalitesini artırmak,

Yazılım tasarımını iyileştirmek,

Kodun daha anlaşılır olmasını sağlamak,

Hata bulmayı kolaylaştırmak,

Daha hızlı geliştirme yapabilmek için...

Neden Refactoring?

Bir kod parçasının ne yaptığı üzerinde kafa yormaya

başladığınızda,

Yeni bir özellik eklemek zorlaştığında,

Tekrar eden kodlar arttıkça,

Bir sınıfta bulunan metodların sayısı arttıdığında,

Metodlardaki satır sayısı arttığında,

Değişken sayısı arttığında,

Yorum satırlarının sayısı arttığında

Ne Zaman Refactoring Yapılmalı?

Tekrar eden kodları metod haline getirin.

Birbiriyle ilişkili alan ve metodlarınızı ayrı sınıflara taşıyın.

Bir metod tanımlandığı sınıftan çok başka bir sınıfın özellikleri

tarafından kullanılıyorsa metodu bu sınıfa taşıyın.

Koşullu ifadelerinizi basitleştirin.

Metod çağırımlarınızı basitleştirin.

Farklı sınıflarda bulunan benzer metod ve özellikleri bir üst

sınıfa taşıyın.

Refactoring Nasıl Yapılmalı?

Ayrı bir zaman dilimi ayırmayın, normal

aktiviteleriniz arasında bulunsun.

Küçük adımlarla gidin.

Her refactoring işleminin başarılı

olacağının garantisi yoktur, test

süreçlerini işletin.

Resharper,

Intellij IDEA,

CodeRush,

Eclipse,

Jdeveloper,

Yardımcı Araçlar

Refactoring Öncesi

Refactoring Sonrası

Clean Code /A Handbook of Agile Craftsmanship – Robert

C. Martin

31 Days of Refactoring – Sean Chambers

(http://www.lostechies.com/blogs/sean_chambers/archive

/2009/07/31/31-days-of-refactoring.aspx)

Improving Design of Existing – Martin Fowler

Örnek Kaynaklar

Aklımda Deli Sorular :)