'Kod çarpıklığı' nedir?


11

Scala'daki O'Reilly kitabında, kodun kopyalanmasının şu şekilde yaratıldığını okudum:

... kod bloat, sürdürülebilirlik ve eğrilik sorunları oluşturur ,

Çarpıklık kelimesinin bağlamda açık bir tanımını göremiyorum. Kopya yapıştırma sorunlarının farkındayım, ancak onları 'eğriltme' kelimesine sığdıramıyorum. Bu bir O'Reilly kitabında kullanıldığından, dolaşımda gerçek bir programlama terimi olduğunu tahmin ediyorum.

İşaretçi var mı?

Yanıtlar:


19

En geleneksel tanımında çarpıklık, hizalama dışı (paralel değil) anlamına gelir. Açıkçası kod kopyalandığında ve yapıştırıldığında iki kopya aynı ve paraleldir. Bu bir değişmez değil. Bir kopyada yapılan değişikliklerin diğer kopyaya yapılması garanti edilmez (dikkatsizlik veya cehalet nedeniyle). Şimdi, iki farklı yerde eğrilmiş iki kod sürümü var (artık aynı değil). Bu, davranış bir yerde değil başka bir yerde çalışıyor gibi göründüğünde garip hatalara yol açabilir. Kodunuzu KURU tutun (tekrar etmeyin).

DÜZENLEME / EKLEME: Kopyalama ve yapıştırma dürtüsüne sahipseniz, yapmanız gerekenden büyük olasılıkla paylaşılan bir üst sınıfa (nesne yönelimli) veya bir çeşit dahil edilen yardımcı program işlevine (işlevsel) kopyaladığınız kodu soyutlamanızdır.


İyi bir açıklama için +1. Ayrıca bazı katarsis için - Sabitlenmesi gereken tam olarak bu tür bir problemle yüzlerce ve yüzlerce satır kopyala kodu içeren bir kod tabanı ile uğraşmak zorundayım.
KChaloux

2

Hiç oyun çocuk olarak oynamak Telefon? Bilirsiniz, her insanın sıradaki bir sonraki kişiye bir cümle fısıldadığı ve sonunda, son kişi cümleyi yüksek sesle söyler ve herkes orijinalinden ne kadar farklı olduğuna güler. Bu çarpık. Kodu kopyalayıp yapıştırdığınızda, bir veya daha fazla kopyada kaçınılmaz olarak küçük değişiklikler yaparsınız. Ve aynı kodu ne kadar sık ​​kopyalayıp yapıştırırsanız, değişiklikler o kadar fazla oluşturulur ve kod orijinalden eğrilir. Her biri sadece birkaç karakterle değişen yüzlerce kopya ve yapıştırılan blok ile kod gördüm, korumak neredeyse imkansız. Kendinizi bir kod bölümünü kesip yapıştırmak istediğinizi düşünüyorsanız, muhtemelen en azından kendi işlevine koymayı düşünmelisiniz.


3
Farklar değildir neden kopyala-yapıştır yaparak. Kopyala ve yapıştır işleminden sonra olanlara neden olurlar.
Stephen C

1
Oldukça doğru, ancak kod kopyalanıp yapıştırılmasaydı farklar olmazdı.
Jim Nutt

Bu iyi bir örnek, ama analoji konseptten sapmış . Benzer şekilde, macun farklı bir kopya oluşturur, gerçek konseptte ise kopya aynıdır, ancak senkronize değildir, bu nedenle çarpıklığa neden olur.
Sundeep
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.