clean code & refactoring
TRANSCRIPT
![Page 2: Clean Code & Refactoring](https://reader034.vdocuments.mx/reader034/viewer/2022052700/55a939521a28ab340a8b484a/html5/thumbnails/2.jpg)
![Page 3: Clean Code & Refactoring](https://reader034.vdocuments.mx/reader034/viewer/2022052700/55a939521a28ab340a8b484a/html5/thumbnails/3.jpg)
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?
![Page 4: Clean Code & Refactoring](https://reader034.vdocuments.mx/reader034/viewer/2022052700/55a939521a28ab340a8b484a/html5/thumbnails/4.jpg)
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?
![Page 5: Clean Code & Refactoring](https://reader034.vdocuments.mx/reader034/viewer/2022052700/55a939521a28ab340a8b484a/html5/thumbnails/5.jpg)
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
![Page 6: Clean Code & Refactoring](https://reader034.vdocuments.mx/reader034/viewer/2022052700/55a939521a28ab340a8b484a/html5/thumbnails/6.jpg)
Kolay okunabilir,
Anlaşılır,
Tekrar kullanılabilir,
Tekrar içermezmez,
Bağımlılığı azdır,
Kolayca yeni geliştirme eklenebilir...
Clean Code Nedir?
![Page 7: Clean Code & Refactoring](https://reader034.vdocuments.mx/reader034/viewer/2022052700/55a939521a28ab340a8b484a/html5/thumbnails/7.jpg)
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?
![Page 8: Clean Code & Refactoring](https://reader034.vdocuments.mx/reader034/viewer/2022052700/55a939521a28ab340a8b484a/html5/thumbnails/8.jpg)
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?
![Page 9: Clean Code & Refactoring](https://reader034.vdocuments.mx/reader034/viewer/2022052700/55a939521a28ab340a8b484a/html5/thumbnails/9.jpg)
‘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.)
![Page 10: Clean Code & Refactoring](https://reader034.vdocuments.mx/reader034/viewer/2022052700/55a939521a28ab340a8b484a/html5/thumbnails/10.jpg)
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?
![Page 11: Clean Code & Refactoring](https://reader034.vdocuments.mx/reader034/viewer/2022052700/55a939521a28ab340a8b484a/html5/thumbnails/11.jpg)
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?
![Page 12: Clean Code & Refactoring](https://reader034.vdocuments.mx/reader034/viewer/2022052700/55a939521a28ab340a8b484a/html5/thumbnails/12.jpg)
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ı?
![Page 13: Clean Code & Refactoring](https://reader034.vdocuments.mx/reader034/viewer/2022052700/55a939521a28ab340a8b484a/html5/thumbnails/13.jpg)
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ı?
![Page 14: Clean Code & Refactoring](https://reader034.vdocuments.mx/reader034/viewer/2022052700/55a939521a28ab340a8b484a/html5/thumbnails/14.jpg)
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.
![Page 15: Clean Code & Refactoring](https://reader034.vdocuments.mx/reader034/viewer/2022052700/55a939521a28ab340a8b484a/html5/thumbnails/15.jpg)
Resharper,
Intellij IDEA,
CodeRush,
Eclipse,
Jdeveloper,
Yardımcı Araçlar
![Page 16: Clean Code & Refactoring](https://reader034.vdocuments.mx/reader034/viewer/2022052700/55a939521a28ab340a8b484a/html5/thumbnails/16.jpg)
Refactoring Öncesi
![Page 17: Clean Code & Refactoring](https://reader034.vdocuments.mx/reader034/viewer/2022052700/55a939521a28ab340a8b484a/html5/thumbnails/17.jpg)
Refactoring Sonrası
![Page 18: Clean Code & Refactoring](https://reader034.vdocuments.mx/reader034/viewer/2022052700/55a939521a28ab340a8b484a/html5/thumbnails/18.jpg)
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
![Page 19: Clean Code & Refactoring](https://reader034.vdocuments.mx/reader034/viewer/2022052700/55a939521a28ab340a8b484a/html5/thumbnails/19.jpg)
Aklımda Deli Sorular :)