Kod yeniden kullanım felsefesi ile nasıl başa çıkılır?


10

Kendimi sürekli yeni bir projeye başlarken kodun yeniden kullanımı hakkında düşünürken buluyorum.

Kodumu ne ölçüde yeniden kullanılabilir hale getirmeliyim?
Uygulama kapsamıyla sınırlamalı mıyım yoksa proje dışında tekrar kullanılabilir mi yapmalıyım?

Bazen, kod yeniden kullanılabilirliği basit bir tasarımın önünde durabilir gibi hissediyorum. Lütfen, kodun yeniden kullanılabilirliği konusunda kendi anlayışınızı ve yaklaşımınızı paylaşın.


Yanıtlar:


21

Kodun yeniden kullanılabilmesi için çalışması gerekir. Bu, tasarımın ve (birincil) fonksiyonun, kodun yeniden kullanılmasından önce gelmesi gerektiği anlamına gelir.

Yeniden yazmayı ve zaten yazdığınız bileşenleri yeniden kullanmayı düşünmek iyidir. Ancak bazen daha hızlı olmasa da, kodu yazmak ve çalışmasını sağlamak kadar hızlı olabilir. Orijinal sorunu çözdükten sonra, kodu yeniden kullanılabilir hale getirmek için yeniden düzenleyebilirsiniz.


2
"Cümle" ilk cümlede bir yazım hatası "var" mı?

@delnan - "neydi"? :-) Yakaladığın için teşekkürler.

9

KISS ve YAGNI'yı hatırlayın:

Tasarım belgenizi hazırladıktanre-usability better to be considered sonra kodlayın . Bu, potansiyel olarak çoğaltılacak kod bölümünü / bölümlerini görmenizi sağlar.

Bu nedenle, açık bir tasarıma sahip olmadığınız zaman işinizde KISS ve YAGNI yaklaşımını uygulayın !


1

Bu benim tecrübelerime dayanıyor , ancak yine de uygulanabileceğine ve GlenH7'nin bahsettiği satırlara göre olduğuna inanıyorum .

3 şirket arasında çeşitli projeler yapıyorum. Şirketler, bazı standart uygulamalar ve çalışma metodolojisi ile birbirlerinin kızkardeşleri olmakla birlikte , birçok yönden de benzersizdir. Bununla birlikte, genellikle her projeye yeni başlıyorum ve sadece bitirmek veya ilerleme göstermek istiyorum. Sonra önceki bir proje için yazdığım bir kod veya işlevsellik parçası hatırlıyorum bir senaryoda çalışırsanız, iki şeyden birini yapacağım (zamana bağlı):

  1. En Hızlı Yöntem
    Diğer projeden önceki kodu (çok fazla zamanım yok) mevcut projeme kopyala.
  2. İkinci En Hızlı Yöntem
    Önceki kodu kopyalayın ve ortak bir kütüphaneye yerleştirin, ardından bu projeyi geçerli projeye dahil edin (ilerlemeyi kolaylaştırmak için).

    2b. Diğer (orijinal) projede değişiklikler yaparsam, yeni kütüphaneyi kullanmak için onu yeniden düzenlerim [ancak bu projeye yeniden dokunmam gerekmediği sürece bunu genellikle yapmayacağım].

Sadece dikkat edin, ortak kütüphanelerden haberdar olun. Ortak kütüphaneler bağımlılık yaratmak anlamına gelir. Bağımlılıklar başarısızlık noktaları oluşturur. Mevcut uygulamanız için biraz değiştirilmiş bir şeye ihtiyacınız olsa da, o kütüphaneyi kullanarak başka bir şeyi nasıl değiştireceğini bilmiyorsunuz.


Aynı olan dört veya beş tane varken neden bir şeyin tek bir uygulamasını kullanıyorsunuz? "En hızlı" yönteminiz yalnızca en yakın zamanda en hızlı yöntemdir.
Caleb

@Caleb: Kabul etti. Son teslim tarihlerinin sadece son tarih olduğunu zarif söylememiştim. Bir refactor sırasında aynı kodu kullanarak birden fazla projeyi tanıyacağım ve bunları kendi kütüphanelerine dağıtacağım. Ama kapıdan çıkarmam gerektiğinde, kopyala yapıştır çalışır. Aynı zamanda bu proje için değişiklik yapma esnekliği sağlıyor ve kütüphaneyi kırıp hem sağlam hem de esnek hale getirmek istediğimde bu değişiklikleri aklımda tutuyorum.
Brad Christie

1

Bazen birkaç satır kod kopyalayıp yapıştırmanın daha iyi bir çözüm olduğunu görüyorum. İnsan dilinde bile, daha önce sadece hafif bir varyasyonla söylediğiniz bir cümleyi söylemek istediğinizde, bunu varyasyon ile tekrar edersiniz, çünkü herkes için daha az sorun çıkarır.

Ancak, büyük modülünüzün desteklemediği biraz farklı bir şekilde kullanılması gerekiyorsa, sadece birkaç satırı değiştirmek için klonlamayın, çünkü hem tabanın hem de tabanın işlevselliğini genişletmek isteyeceksiniz. gelecekte klon payı. Bunun yerine, yapılandırılabilir hale getirin veya hem tabanın hem de klonun paylaştığı işlevselliği, her ikisinin de kullanacakları başka bir modüle aktarın.


0

Fazla abartma. Emin değilseniz, neyi yeniden kullanabileceğinizi görmek için yeterli proje yazana kadar uygulama kapsamına sadık kalın.

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.