Yeniden, Yeniden veya Refactor?

7 Cevap php

Işte ben aslında dışarı boşaltılan üretilen ve iz bırakmadan sol danışman sonra bir PHP tabanlı web sitesi geliştirme miras. Gerçekten kod yarısı çevrimiçi öğreticiler yırtık ve eksik olma, cruft hatları binlerce var, değerli küçük yapmaktır. Bunun neredeyse hiç aslında çalışır. Böyle (akıllıca kodu ile karışmış) düzeni, (ince çıkmamış, unvalidated SQL sorguları ile tatlandırılmış) oturum yönetimi, ve birkaç diğer şeyler gibi kullanılabilir bileşenleri, çekin çalışıyorum, ama tamamen zorlamak çok zor yerine bu önemsiz. Ayrıca, ben bir Perl kullanıcı daha fazla varlık, deyimsel PHP bilmeyen, ve ben esas bakım için bu projede olmam gerekiyordu, bu yüzden yeniden her şey tekrar yerine mevcut canavar güreş sadece sürece alacak gibi görünüyor .

Bir kenara, ben tam anlamıyla olarak kötü bu kadar yazılı bir şey görmedim. Diğer insanların koduyla çalışma dünyasına beni hoş geldiniz, sanırım, ama ben bu gibi taşlar var gerçek dünyada bu yaygın değil umuyoruz:

  • // WHY IS THIS NOT WORKING
  • // I know this is bad but were going for working stuff right now...
  • // This is a PHP code outputing Javascript code outputting HTML...do not go further
  • // Not userful

Ben buradan alabilirsiniz en iyi tavsiye arıyorum. Sen benim yerimde olsan ne yapardın?

Edit: sizin hızlı ve yararlı tavsiyeler için, herkese teşekkür ederiz!

7 Cevap

Destek maliyetleri, kodu teknik borç kaldırmak sürece bağlamaya devam edecek belirten, müdürünüze sorunları açıklar. O özellikler için bir şablon, yani hedef olarak 1-1 yedeği olarak mevcut sistemi kullanılarak, en kısa sürede bir yeniden yazmak için gitmek öneririz. Geliştirme zamanının önemli bir kısmını yapmanız gereken ne bulmaktan olduğundan, bu orijinal olarak uzun sürmez. Bunun üzerine bir yetkili geliştirici olması sadece zaman bir kısmını alacak anlamına gelebilir.

Yöneticiniz işini yapsın - yedek proje üzerinde ROI hesaplamak - ve karar.

Gerçekten size aradığınız şeyin büyüklüğü ve kapsamına bağlıdır.

Iş basit ama kod kırık ise bu, özellikle kendi senaryo ile ilgili olarak, muhtemelen çok zaman sadece yeniden bir halt tasarruf edeceğiz. Sen herhangi bir eski Cruft veya kötü tasarım seçimler devralmasını olmayacaktır. Web siteleri ile ilgili olarak, sadece önemli bir çaba olmadan varolan bir site haritasını çıkarabilirsiniz çerçeveler ve / veya açık kaynak çözümleri ton vardır.

O da thedailywtf.com için kod pasajı göndererek değerli olabilir gibi yukarıdaki kod örneğinde baktığımızda, bakar. ;)

Herkes zaman zaman kötü kod devralır.

Burada ne var (Ben aslında kötü gördüm) geçmişte gördük ne oldukça klasik bir örneğidir. Ben yeniden yazmak için arzu anlamak iken (ve aslında kod TÜM bu kötü ise, bu seçeneği ciddi olarak bakıyor olmalıdır) - yöneticiniz olduğu için gitmek değil, ya da en azından hemen değil olabilir.

Her iki şekilde de, bir süre için bu ile ilgili olacak. Ben kadar olabildiğince temizlemek, ya da istiyorum - bu müşteri bakan ise - güvenlik sorunları itin. Ben kodu gönderdiniz ne şüpheli ediyorum kadar kötü ise, muhtemelen SQL enjeksiyon, artı CSRF ve XSS çat pat gibi davranır ile çevrili bulunuyor. Güvenli olması gereken her şey için bunu kullanıyor iseniz gibi, bunu "iyileştirilmesi" için iyi bir durum yapabilirsiniz.

Önceki danışman onların başının üzerine olabilir müşteriye açıklayın. Kod yönetilebilir değildir ve yeniden yazılması gerekiyor. Bu karmaşa çözmek isterseniz o maliyet sıfırdan yeniden yazmak daha olacağını açıklar. Ben daha önce bunu yaşadım. Bu çoğu zaman yeniden daha kolaydır.

Ben olgun, eski ortamda çalışmak gibi ben re-writing/refactoring uğruna üstlenmeden bir hayranı değilim. Bu güzel kodunu görmek yerine, kaynak tarihinin değişti "ne" görmek daha önemli. Bizim değişikliklerin çoğu hata raporlarına bağlı veya resmi gereksinimleri ile "değişiklik isteklerini" onaylanmıştır. Ama burada ben senin değil temelde nerede çalışır, kod bahsediyorum. Şu anda (geçmiş veya şimdiki HERHANGİ gereksinimleri,) gereksinimlerini karşılamak değil kodu ile uğraşırken Yani senin durumunda, ben devam edin ve yeniden söyleyebilirim.

Kodunu korumak. O berbat, ama uzun süre meslekte (ve idamesi ile görevli olan) daha o taş hiç göreceksiniz en kötü şey değildir gerçekleştirmek için geldim ...

Sadece ne ile çalışmayı öğrenmek, ve mümkün olduğunca çok yarar sağlar. Tabii ki, gerçekten kod etraflı değerlendirilir, ve hala sizin patron (planlı) çizelgesi sağlamak, hızlı sabitleme daha sıfırdan yazmak ve nereye gittiğini görebiliyordu sonuca varsa.

Burada basit bir cevabı eski kodu ile başa çıkmak, tüm orada çok iyi bildiği gibi, bizim sektörde en sinir bozucu şeylerden biridir ama bir şey çoğumuz çok sık tüm uğraşmak zorunda sanırım. Eğer daha fazla gitmeden önce ben tavsiye ederim ne emin projenin tam kapsamı Olması gerekenler ve desirables içine parçalayarak anlamak yapmaktır. Daha sonra ilk en önemli alanlarda daha yakından odaklanabilir. Yeniden / Refactor seçimi bakımından / sonra bu gerçekten kod kodu geleceği ne olması gerektiğini ilk etapta nedir ve nasıl kötü bağlıdır vb yeniden.