28
Gizli Tehlike AntiPatterns Burak Selim Şenyurt Senior Software Consultant http://www.buraksenyurt.com

Gizli Tehlike : AntiPatterns

Embed Size (px)

Citation preview

Page 1: Gizli Tehlike : AntiPatterns

Gizli TehlikeAntiPatterns

Burak Selim Şenyurt

Senior Software Consultanthttp://www.buraksenyurt.com

Page 2: Gizli Tehlike : AntiPatterns

Burak Selim Şenyurt www.buraksenyurt.com

Bir Varmış, Bir Yokmuş

Page 3: Gizli Tehlike : AntiPatterns

Burak Selim Şenyurt www.buraksenyurt.com

Düşünün! Bir tasarım kalıbını veya kod parçasını nasıl

çalıştığını anlamadan kullandınız mı? Ne kadar iş kuralı varsa hepsini ara yüz' deki

kontroller arkasına gömdünüz mü? Küresel bir çözümü kullanmak yerine

problemin özel olduğunu düşünüp tekrardan yazdınız mı?

Geliştirmeye başlamak için uzun süre Analiz Dokümanı’nın çıkmasını beklediniz mi?

Bir zamanlar deneme amaçlı yazdığınız kütüphaneleri bir ürünün geliştirilmesinde doğrudan kullandınız mı?

Kernel gibi isimlendirdiğiniz ve tüm kilit fonksiyonellikleri içerisine kattığınız devasa bir sınıf geliştirdiniz mi?

Page 4: Gizli Tehlike : AntiPatterns

Burak Selim Şenyurt www.buraksenyurt.com

Düşünün! Daha önce başarılı bir şekilde kullandığınız

çözüm mimarisini sonraki ürünlerde terk etmeyi hiç düşündünüz mü?

Yıllar sonra, geliştirdiğiniz kütüphane içerisinde kalıp atıl olmuş kodlara rastladınız mı?

Bir başkasının yazdığı kod parçasını, içeriğinde biraz değişiklik yapıp kopyaladınız mı?

Kaynak kodları açık olan ve şirket içerisindeki ürünlerde kullanılan 3ncü parti bir bileşende özelleştirme yaptınız mı?

Bir servis’ den aldığınız ama yorumlayamadığınız bir hata mesajını son kullanıcıdan gizlediniz mi?

Page 5: Gizli Tehlike : AntiPatterns

AntiPattern Nedir?

#Tanım, #Andrew Koenig, #Şablon,

Page 6: Gizli Tehlike : AntiPatterns

Burak Selim Şenyurt www.buraksenyurt.com

İlk Tanım

Anti-pattern is just like pattern, except that instead of solution it gives something that looks superficially like a solution, but isn't one.

Andrew Koenig, 1995

Şöyle Yorumlayabiliriz : AntiPattern görünüşte(yüzeysel anlamda) çözüm zannedilen bir Pattern gibidir, ama aslında değildir.

Page 7: Gizli Tehlike : AntiPatterns

Burak Selim Şenyurt www.buraksenyurt.com

AntiPatterns

• İlk bakıldığında ideal gibi görünen ama zaman içerisinde geliştirilmekte olan ürüne olumsuz etkilerde bulunan, farklı kategorilerden disiplin ve yaklaşımların oluşturduğu çözümler bütünü.

• Dünün en popüler çözümü bugünün AntiPattern’ i olabilir.• Bir Pattern çözdüğünden daha fazla problem oluşturuyorsa

AntiPattern’ dir.• Bir AntiPattern, mimari kavramlar ile gerçek dünya uyarlamaları

arasındaki boşluğu dolduran köprüdür.• Tasarım kalıplarının doğal bir uzantısıdır.

Anti-Patterns | burak selim şenyurt | about.me/buraksenyurt

Page 8: Gizli Tehlike : AntiPatterns

Burak Selim Şenyurt www.buraksenyurt.com

AntiPatterns Şablonu

AntiPattern Çözümü

Koşulların Oluşturduğu Sebepler

Yeniden Değerlendirilmiş Çözüm

Belirtiler ve Neticeler

Kazanç Sonuç

İlişkili Pattern ve AntiPattern’ ler

İstisnalar

Page 9: Gizli Tehlike : AntiPatterns

Burak Selim Şenyurt www.buraksenyurt.com

AntiPattern ReçetesiName: The Blob

Also Known As: Winnebago and The God

Class

Most Frequent Scale: Application

Refactored Solution Name: Refactoring of

Responsibilities

Refactored Solution Type: Software

Root Causes: Sloth, Haste

Unbalanced Forces: Management of

Functionality, Performance, Complexity

Anecdotal Evidence:

"This is the class that is really the heart of our

architecture."

Page 10: Gizli Tehlike : AntiPatterns

Örnekler

#GoldenHammer, #ReinventingTheSquareWheel, #CopyPasteProgramming, #LavaFlow, #BoarAnchor, #CargoCultProgramming, #SphagettiCode, #ErrorHiding, #AnalysisParalysis, #VendorLockIn, #DeadEnd, #GodObject, #MagicPushButton, #OverEngineering

Page 11: Gizli Tehlike : AntiPatterns

Burak Selim Şenyurt www.buraksenyurt.com

Golden Hammer - Methodological

Anti-Patterns | burak selim şenyurt | about.me/buraksenyurt

Favori bir çözümün evrensel anlamda kabul gördüğünü varsaymak.

Page 12: Gizli Tehlike : AntiPatterns

Burak Selim Şenyurt www.buraksenyurt.com

Reinventing the Square Wheel - Methodological

Anti-Patterns | burak selim şenyurt | about.me/buraksenyurt

Var olan bir çözüm yerine ondan daha kötü olan özel bir çözüm üretme hatasına düşmek.

Page 13: Gizli Tehlike : AntiPatterns

Burak Selim Şenyurt www.buraksenyurt.com

Copy-Paste Programming - Methodological

Anti-Patterns | burak selim şenyurt | about.me/buraksenyurt

Daha generic bir çözüm üretmek yerine var olan kodları kopyalayarak geliştirme yapmak.

Page 14: Gizli Tehlike : AntiPatterns

Burak Selim Şenyurt www.buraksenyurt.com

Lava Flow - Programming

Anti-Patterns | burak selim şenyurt | about.me/buraksenyurt

Lüzumsuz veya düşük kaliteli kodları, kaldırma maliyetlerinin yüksek olması veya ön görülemeyen sebepler nedeniyle barındırmaya devam etmek.

Page 15: Gizli Tehlike : AntiPatterns

Burak Selim Şenyurt www.buraksenyurt.com

Boat Anchor - Programming

Anti-Patterns | burak selim şenyurt | about.me/buraksenyurt

Her hangi bir amaçla kullanılmayan bir sistem parçasını tutmak/unutmak.

Page 16: Gizli Tehlike : AntiPatterns

Burak Selim Şenyurt www.buraksenyurt.com

Cargo Cult Programming - Programming

Anti-Patterns | burak selim şenyurt | about.me/buraksenyurt

Desen ve metodları ne/nasıl/niçin olduğunu anlamadan kullanmak.

Page 17: Gizli Tehlike : AntiPatterns

Burak Selim Şenyurt www.buraksenyurt.com

Spaghetti Code - Programming

Anti-Patterns | burak selim şenyurt | about.me/buraksenyurt

Özellikle kod yapılarının kötü kullanılması nedeniyle güç anlaşılır programların oluşması.

Page 18: Gizli Tehlike : AntiPatterns

Burak Selim Şenyurt www.buraksenyurt.com

Error Hiding - Programming

Anti-Patterns | burak selim şenyurt | about.me/buraksenyurt

Kullanıcıya yakalanan bir hata ile ilişkili ya hiçbir şey gösterilmemesi ya da anlamlı bir mesaj verilmemesi.

Ayrıca Stack izlerini Exception’ ın ele alındığı sürede silinmesi ve hata ayıklamaya engel olunması.

Page 19: Gizli Tehlike : AntiPatterns

Burak Selim Şenyurt www.buraksenyurt.com

Analysis Paralysis - Organizational

Anti-Patterns | burak selim şenyurt | about.me/buraksenyurt

Bir projenin analizine orantısız ölçüde yüksek efor harcamak.

Page 20: Gizli Tehlike : AntiPatterns

Burak Selim Şenyurt www.buraksenyurt.com

Vendor Lock-In - Organizational

Anti-Patterns | burak selim şenyurt | about.me/buraksenyurt

Bir sistemin, dışarıdan sağlanan bir bileşene aşırı bağımlı olacak şekilde yazılması.

Page 21: Gizli Tehlike : AntiPatterns

Burak Selim Şenyurt www.buraksenyurt.com

Dead End – Software Development

Anti-Patterns | burak selim şenyurt | about.me/buraksenyurt

Ticari bir yazılımın modifiye edilmesinin oluşturduğu bakım yükü.

Page 22: Gizli Tehlike : AntiPatterns

Burak Selim Şenyurt www.buraksenyurt.com

God Object – Object Oriented Design

Anti-Patterns | burak selim şenyurt | about.me/buraksenyurt

Tasarımın tek bir parçasının-ki burada kastedilen bir sınıftır- çok fazla sayıda fonksiyona konsantre olması.

Page 23: Gizli Tehlike : AntiPatterns

Burak Selim Şenyurt www.buraksenyurt.com

Magic PushButton – Software Design

Anti-Patterns | burak selim şenyurt | about.me/buraksenyurt

Soyutlama kullanmadan arayüz üzerinde doğrudan uygulama mantığı kodlamak.

Page 24: Gizli Tehlike : AntiPatterns

Burak Selim Şenyurt www.buraksenyurt.com

OverEngineering – Project Management

Anti-Patterns | burak selim şenyurt | about.me/buraksenyurt

Bir projeyi gereğinden daha karmaşık ve güçlü hale getirmek için kaynak harcamak.

Page 25: Gizli Tehlike : AntiPatterns

Kategorilendirme#SoftwareEngineering, #SocialAndBusinessOperations, #SoftwareDesign, #ObjectOrientedDesign, #Programming, #Methodological, #ConfigurationManagement, #Organizational, #ProjectManagement, #Analysis

Page 26: Gizli Tehlike : AntiPatterns

Burak Selim Şenyurt www.buraksenyurt.com

Software Design

Object-Oriented Design

Programming

Software Engineering

MethodologicalConfiguration Management

Abstraction inversionAmbigous viewpointBig ball of mudDatabase-as-IPCGold plantingInner-platform effectInput kludgeInterface bloat

Magic pushbuttonRace HazardStovepipe System

Anemic domain modelBaseBeanCall superCircle-ellipse problemCircular DependencyConstant interface

God ObjectObject cesspoolObject orgyPolergeistsSequential couplingYo-yo problem

Accidential complexityAction at a distanceBlind Faith

Boat anchorBusy waitingCaching failure

Cargo cult programmingCoding by exception

Error hidingHard code

Lava flowLoop-switch sequenceMagic numbersMagic stringsRepeating yourselfShotgun surgerySoft code

Spaghetti codeLasagna Code

Copy and past ProgrammingGolden HammerImporability factorNot invented hereInvented herePremature OptimizationProgramming by Permutation

Reinventing the square wheelSilver bulletTester driven development

Dependency hellDLL hellExtension conflictJAR Hell

Anti-Patterns | burak selim şenyurt | about.me/buraksenyurt

Page 27: Gizli Tehlike : AntiPatterns

Burak Selim Şenyurt www.buraksenyurt.com

Organizational Project Management Analysis

Social and Business Operations

Analysis ParalysisCash cow

Design by commitment

Escalation of commitment

Management by perkele

Management by objectives

Moral hazard

Mushroom management

Stovepipe or Silos

Vendor lock-in

Avalanche

Death march

Groupthink

OverengineeringSmoke and mirrors

Software bloat

Bystander apathy

Anti-Patterns | burak selim şenyurt | about.me/buraksenyurt

Page 28: Gizli Tehlike : AntiPatterns

Burak Selim Şenyurt www.buraksenyurt.com

Kaynaklar

AntiPatterns: Refactoring Software, Architectures, and Projects in Crisis

www.AntiPatterns.com

The Patterns Handbook: Techniques, Strategies, and Applications (SIGS Reference Library)

Anti-Patterns | burak selim şenyurt | about.me/buraksenyurt