Anti Patterns

Merhaba arkadaşlar bugün basitçe anti-pattern lerden bahsedeceğiz. Anti-pattern ilk bakışta doğru gibi gözüken fakat zamanla daha büyük sorunlara yol açan, genelde günü kurtardığımızı sandığımız, anlık çözümlerdir. Anti-Pattern olarak belirtilen kategorize edilmiş birçok çözüm vardır. Bunları görebileceğiniz kaynakları aşağıda paylaşacağım. En çok bilinen anti-patternleri ise basit tanımlamalar ile açıklamaya çalışacağım.

Overengineering

Bir sorunun olduğundan çok daha fazla complex hale getirerek basit bir çözüm yerine karmaşık bir çözüm uygulamaya çalışmaktadır.

over-engineering
over-engineering

Lava Flow

Önceden yazılmış, yazılma amacı belli olmayan kodların (deneme, yanlış kullanım vs.) projede uzun süre taşınmasıdır. Bu kodlara genelde çalışan uygulamayı bozmamak korkusu ile dokunulmaz. Fakat bu kodları uzun süre taşımanın maliyeti daha fazla olabilir.

Spaghetti Code

Genelde büyük yapıyı, gelecekteki geliştirmeleri düşünmeden, süreç odaklı anlık olarak yazılan kodların bir süre sonra bir Spaghetti gibi karışık, okunması zor hale gelmesidir.

Hard Coding

Uygulamada ki değişkenlerin, configlerin doğrudan manuel olarak kod içerisinde belirtilmesidir. Hard coding arttıkça kod okuma maliyeti, deployment maliyeti, geliştirme maliyeti artacaktır.

Golden Hammer

Daha önceden güvendiğimiz bir çözümü, problemler için sürekli kullanmaya çalışmak. Problemlere göre çözümler üretilmelidir.

hammer-anirudh-unsplash
hammer-anirudh-unsplash

Boat Anchor

Kullanılmayan kütüphane/metodun ileride kullanırız düşüncesi ile saklanmasıdır. İhtiyacımız olmayan kod parçacıklarını temizlemeliyiz.
(Bkz : YAGNI)

Copy/Cut-Paste Programming

Yeni bir çözümle uğraşmak yerine başka biyerde hali hazırda kullanılan kodu üzerinde düşünmeden kopyalanarak kullanılmasıdır.

God Object

Tek bir nesnenin bir çok değişken, metot içermesidir. Genelde bu gibi yapılar binlerce satıra ulaşır.

Cargo Cult Programlama

Belirli şablonları, patternleri ne işe yaradığını, nasıl çalıştığını anlamadan sırf kullanmış olmak için kullanmak.

Reinventing the Square Wheel

Hali hazırda hesaplanmış, standart haline gelen çözümler yerine custom çözümler hazırlamaya çalışmak.

Kaynaklar

https://en.wikipedia.org/wiki/Anti-pattern
https://sourcemaking.com/antipatterns/software-development-antipatterns
https://www.geeksforgeeks.org/6-types-of-anti-patterns-to-avoid-in-software-development/
https://en.wikibooks.org/wiki/Introduction_to_Software_Engineering/Architecture/Anti-Patterns
https://medium.com/geekculture/anti-patterns-in-software-development-that-you-should-avoid-780841ce4f1d
https://www.buraksenyurt.com/post/AntiPatterns-Ders-Notlarc4b1m

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir