SlideShare a Scribd company logo
1 of 19
Canan GÜMRÜKÇÜOĞLU
@topukluyazilimc / @cgumrukcuoglu
canangumrukcuoglu@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 :)

More Related Content

What's hot

Os 7 Princípios do desenvolvimento Lean de Software
Os 7 Princípios do desenvolvimento Lean de SoftwareOs 7 Princípios do desenvolvimento Lean de Software
Os 7 Princípios do desenvolvimento Lean de SoftwareLucas Oliveira
 
Refactoring 101
Refactoring 101Refactoring 101
Refactoring 101Adam Culp
 
Writing clean code in C# and .NET
Writing clean code in C# and .NETWriting clean code in C# and .NET
Writing clean code in C# and .NETDror Helper
 
Clean Code summary
Clean Code summaryClean Code summary
Clean Code summaryJan de Vries
 
A Fábrica de Aviões
A Fábrica de AviõesA Fábrica de Aviões
A Fábrica de AviõesLeandro Faria
 
Como montar e facilitar um workshop de Design Sprint - Coletivo Mola
Como montar e facilitar um workshop de Design Sprint - Coletivo MolaComo montar e facilitar um workshop de Design Sprint - Coletivo Mola
Como montar e facilitar um workshop de Design Sprint - Coletivo MolaColetivo Mola
 
Teste de software - aula 01 (motivação)
Teste de software - aula 01 (motivação)Teste de software - aula 01 (motivação)
Teste de software - aula 01 (motivação)Elmano Cavalcanti
 
Refactoring: Improve the design of existing code
Refactoring: Improve the design of existing codeRefactoring: Improve the design of existing code
Refactoring: Improve the design of existing codeValerio Maggio
 
METODOLOGIA ÁGIL: Família Crystal de Cockbum
METODOLOGIA ÁGIL: Família Crystal de CockbumMETODOLOGIA ÁGIL: Família Crystal de Cockbum
METODOLOGIA ÁGIL: Família Crystal de Cockbumvanessa finoto
 
Boas práticas técnica para um código limpo (Clean Code)
Boas práticas técnica para um código limpo (Clean Code)Boas práticas técnica para um código limpo (Clean Code)
Boas práticas técnica para um código limpo (Clean Code)Rodrigo Kono
 
Ganhos e Desafios no uso do OKR na Gestão Pública
Ganhos e Desafios no uso do OKR na Gestão PúblicaGanhos e Desafios no uso do OKR na Gestão Pública
Ganhos e Desafios no uso do OKR na Gestão PúblicaTeresa Maciel
 
modelo de documento de gestão de projetos.pdf
modelo de documento de gestão de projetos.pdfmodelo de documento de gestão de projetos.pdf
modelo de documento de gestão de projetos.pdftiagoRocha693580
 
Metodologia ágil das Desenvolvimento Adaptativo Software
Metodologia ágil das   Desenvolvimento Adaptativo SoftwareMetodologia ágil das   Desenvolvimento Adaptativo Software
Metodologia ágil das Desenvolvimento Adaptativo SoftwareMarilainny Martins da Silva
 
Treinamento Agile Coach
Treinamento Agile CoachTreinamento Agile Coach
Treinamento Agile CoachSilas Serpa
 
Toplam kalite yönetimi.ppt
Toplam kalite yönetimi.pptToplam kalite yönetimi.ppt
Toplam kalite yönetimi.pptziyagunfer
 

What's hot (20)

Os 7 Princípios do desenvolvimento Lean de Software
Os 7 Princípios do desenvolvimento Lean de SoftwareOs 7 Princípios do desenvolvimento Lean de Software
Os 7 Princípios do desenvolvimento Lean de Software
 
Refactoring 101
Refactoring 101Refactoring 101
Refactoring 101
 
Writing clean code in C# and .NET
Writing clean code in C# and .NETWriting clean code in C# and .NET
Writing clean code in C# and .NET
 
Clean Code summary
Clean Code summaryClean Code summary
Clean Code summary
 
A Fábrica de Aviões
A Fábrica de AviõesA Fábrica de Aviões
A Fábrica de Aviões
 
Como montar e facilitar um workshop de Design Sprint - Coletivo Mola
Como montar e facilitar um workshop de Design Sprint - Coletivo MolaComo montar e facilitar um workshop de Design Sprint - Coletivo Mola
Como montar e facilitar um workshop de Design Sprint - Coletivo Mola
 
Teste de software - aula 01 (motivação)
Teste de software - aula 01 (motivação)Teste de software - aula 01 (motivação)
Teste de software - aula 01 (motivação)
 
Refactoring: Improve the design of existing code
Refactoring: Improve the design of existing codeRefactoring: Improve the design of existing code
Refactoring: Improve the design of existing code
 
METODOLOGIA ÁGIL: Família Crystal de Cockbum
METODOLOGIA ÁGIL: Família Crystal de CockbumMETODOLOGIA ÁGIL: Família Crystal de Cockbum
METODOLOGIA ÁGIL: Família Crystal de Cockbum
 
Boas práticas técnica para um código limpo (Clean Code)
Boas práticas técnica para um código limpo (Clean Code)Boas práticas técnica para um código limpo (Clean Code)
Boas práticas técnica para um código limpo (Clean Code)
 
Introdução a gerenciamento de projetos e PMBoK®
Introdução a gerenciamento de projetos e PMBoK®Introdução a gerenciamento de projetos e PMBoK®
Introdução a gerenciamento de projetos e PMBoK®
 
Ganhos e Desafios no uso do OKR na Gestão Pública
Ganhos e Desafios no uso do OKR na Gestão PúblicaGanhos e Desafios no uso do OKR na Gestão Pública
Ganhos e Desafios no uso do OKR na Gestão Pública
 
Code smell overview
Code smell overviewCode smell overview
Code smell overview
 
Aula - Metodologias Ágeis
Aula - Metodologias ÁgeisAula - Metodologias Ágeis
Aula - Metodologias Ágeis
 
modelo de documento de gestão de projetos.pdf
modelo de documento de gestão de projetos.pdfmodelo de documento de gestão de projetos.pdf
modelo de documento de gestão de projetos.pdf
 
Metodologia ágil das Desenvolvimento Adaptativo Software
Metodologia ágil das   Desenvolvimento Adaptativo SoftwareMetodologia ágil das   Desenvolvimento Adaptativo Software
Metodologia ágil das Desenvolvimento Adaptativo Software
 
Treinamento Agile Coach
Treinamento Agile CoachTreinamento Agile Coach
Treinamento Agile Coach
 
Toplam kalite yönetimi.ppt
Toplam kalite yönetimi.pptToplam kalite yönetimi.ppt
Toplam kalite yönetimi.ppt
 
Clean Code - Clean Comments
Clean Code - Clean CommentsClean Code - Clean Comments
Clean Code - Clean Comments
 
Değişim Yönetimi
Değişim YönetimiDeğişim Yönetimi
Değişim Yönetimi
 

Similar to Clean Code & Refactoring

GDO'suz Yazılım Geliştirme Teknikleri
GDO'suz Yazılım Geliştirme TeknikleriGDO'suz Yazılım Geliştirme Teknikleri
GDO'suz Yazılım Geliştirme TeknikleriLemi Orhan Ergin
 
Web geliştirmeye başlamak
Web geliştirmeye başlamakWeb geliştirmeye başlamak
Web geliştirmeye başlamakMurat Yüksel
 
Internet programciligi-2
Internet programciligi-2Internet programciligi-2
Internet programciligi-2major5
 
Clean Code
Clean CodeClean Code
Clean Codeierhalim
 
E-ticarette Yazılım ve Altyapı
E-ticarette Yazılım ve AltyapıE-ticarette Yazılım ve Altyapı
E-ticarette Yazılım ve AltyapıMurat Kader
 
İTÜ İşletme Fakültesi - E-ticarette Yazılım ve Altyapı
İTÜ İşletme Fakültesi - E-ticarette Yazılım ve AltyapıİTÜ İşletme Fakültesi - E-ticarette Yazılım ve Altyapı
İTÜ İşletme Fakültesi - E-ticarette Yazılım ve AltyapıMurat Kader
 
Sonraki Yazılımcıya Anlatır Gibi Kod Yazmak
Sonraki Yazılımcıya Anlatır Gibi Kod YazmakSonraki Yazılımcıya Anlatır Gibi Kod Yazmak
Sonraki Yazılımcıya Anlatır Gibi Kod YazmakMuhittin Özer
 
Developer Tools
Developer ToolsDeveloper Tools
Developer ToolsBurak Erol
 
Test Güdümlü Geliştirme ve Birim Testler
Test Güdümlü Geliştirme ve Birim TestlerTest Güdümlü Geliştirme ve Birim Testler
Test Güdümlü Geliştirme ve Birim Testlerserhatlevent910
 
Nesne tabanlı programlamaya giriş
Nesne tabanlı programlamaya girişNesne tabanlı programlamaya giriş
Nesne tabanlı programlamaya girişErol Dizdar
 
Analist Eğitimi - Tüm Bölümler - [535 Slides]
Analist Eğitimi - Tüm Bölümler -  [535 Slides]Analist Eğitimi - Tüm Bölümler -  [535 Slides]
Analist Eğitimi - Tüm Bölümler - [535 Slides]Erol Bozkurt
 

Similar to Clean Code & Refactoring (20)

Sunum tdd
Sunum tddSunum tdd
Sunum tdd
 
ERP Projelerinde Özelleştirme
ERP Projelerinde ÖzelleştirmeERP Projelerinde Özelleştirme
ERP Projelerinde Özelleştirme
 
PhpSpec ve TDD
PhpSpec ve TDDPhpSpec ve TDD
PhpSpec ve TDD
 
Design Patterns in PHP
Design Patterns in PHPDesign Patterns in PHP
Design Patterns in PHP
 
GDO'suz Yazılım Geliştirme Teknikleri
GDO'suz Yazılım Geliştirme TeknikleriGDO'suz Yazılım Geliştirme Teknikleri
GDO'suz Yazılım Geliştirme Teknikleri
 
Web geliştirmeye başlamak
Web geliştirmeye başlamakWeb geliştirmeye başlamak
Web geliştirmeye başlamak
 
Internet programciligi-2
Internet programciligi-2Internet programciligi-2
Internet programciligi-2
 
Clean Code
Clean CodeClean Code
Clean Code
 
E-ticarette Yazılım ve Altyapı
E-ticarette Yazılım ve AltyapıE-ticarette Yazılım ve Altyapı
E-ticarette Yazılım ve Altyapı
 
İTÜ İşletme Fakültesi - E-ticarette Yazılım ve Altyapı
İTÜ İşletme Fakültesi - E-ticarette Yazılım ve AltyapıİTÜ İşletme Fakültesi - E-ticarette Yazılım ve Altyapı
İTÜ İşletme Fakültesi - E-ticarette Yazılım ve Altyapı
 
Sonraki Yazılımcıya Anlatır Gibi Kod Yazmak
Sonraki Yazılımcıya Anlatır Gibi Kod YazmakSonraki Yazılımcıya Anlatır Gibi Kod Yazmak
Sonraki Yazılımcıya Anlatır Gibi Kod Yazmak
 
Developer Tools
Developer ToolsDeveloper Tools
Developer Tools
 
Test Güdümlü Geliştirme ve Birim Testler
Test Güdümlü Geliştirme ve Birim TestlerTest Güdümlü Geliştirme ve Birim Testler
Test Güdümlü Geliştirme ve Birim Testler
 
Bdd
BddBdd
Bdd
 
Visual Studio Developer Tools
Visual Studio Developer ToolsVisual Studio Developer Tools
Visual Studio Developer Tools
 
Nesne tabanlı programlamaya giriş
Nesne tabanlı programlamaya girişNesne tabanlı programlamaya giriş
Nesne tabanlı programlamaya giriş
 
Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven Development
 
Design Patterns
Design PatternsDesign Patterns
Design Patterns
 
Temel ABAP eğitim kılavuzu
Temel ABAP eğitim kılavuzuTemel ABAP eğitim kılavuzu
Temel ABAP eğitim kılavuzu
 
Analist Eğitimi - Tüm Bölümler - [535 Slides]
Analist Eğitimi - Tüm Bölümler -  [535 Slides]Analist Eğitimi - Tüm Bölümler -  [535 Slides]
Analist Eğitimi - Tüm Bölümler - [535 Slides]
 

Clean Code & Refactoring

  • 1. Canan GÜMRÜKÇÜOĞLU @topukluyazilimc / @cgumrukcuoglu canangumrukcuoglu@gmail.com Clean Code & Refactoring
  • 2.
  • 3.  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?
  • 4.  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?
  • 5.  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
  • 6.  Kolay okunabilir,  Anlaşılır,  Tekrar kullanılabilir,  Tekrar içermezmez,  Bağımlılığı azdır,  Kolayca yeni geliştirme eklenebilir... Clean Code Nedir?
  • 7.  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?
  • 8.  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?
  • 9.  ‘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.)
  • 10.  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?
  • 11.  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?
  • 12.  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ı?
  • 13.  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ı?
  • 14.  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.
  • 15.  Resharper,  Intellij IDEA,  CodeRush,  Eclipse,  Jdeveloper, Yardımcı Araçlar
  • 18.  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