Birkaç ay içinde bir meslektaşım yeni bir projeye geçecek ve ben onun projelerinden birini miras alacağım. Hazırlanmak için, Michael Feathers'ın Eski Kod ile Etkili Çalışmasını emretmiştim .
Ancak, bu kitapların yanı sıra, şu ana kadar bulduğum eski kod ile ilgili birçok soru, olduğu gibi kodun devralınmasıyla ilgilidir. Fakat bu durumda asıl geliştiriciye erişebiliyorum ve düzenli bir devir için zamanımız var.
Kod parçasındaki bazı bilgiler miras alacağım:
- Çalışıyor: Bilinen bir hata yok, ancak performans gereksinimleri artmaya devam ettikçe, çok uzak olmayan bir gelecekte bazı optimizasyonlar gerekli olacaktır.
- Belgelenmemiş: Yöntem ve sınıf düzeyinde hemen hemen sıfır belge var. Kodun daha yüksek bir seviyede yapması gereken şey, anlaşılmalı, çünkü API’sına (kara kutu olarak) yıllardır yazıyordum.
- Sadece daha üst seviye entegrasyon testleri: API (diğer bir deyişle, kara kutu) aracılığıyla diğer bileşenlerle doğru etkileşimi test eden entegrasyon testleri vardır.
- Çok düşük seviye, hız için optimize edilmiş: Bu kod tüm uygulama sistemlerinde merkezi olduğundan, çoğu yıllar boyunca birkaç kez optimize edilmiştir ve son derece düşük seviyededir (bir bölümün belirli yapılar için kendi hafıza yöneticisi vardır). / kayıtları).
- Eşzamanlı ve kilitsiz: Eşzamanlı ve kilitsiz programlamaya çok aşinayım ve aslında bu koda birkaç parça katkıda bulunduğum halde, bu başka bir karmaşıklık katmanı ekliyor.
- Büyük kod temeli: Bu proje on binden fazla kod satırı içeriyor, bu yüzden bana her şeyi açıklayamam mümkün değil.
- Delphi'de yazılmıştır: Ben sadece bunu ortaya koyacağım, ancak dilin soruya almanca olduğuna inanmıyorum, çünkü bu türden bir dilin agnostik olduğuna inanıyorum.
Ayrılışına kadar geçen zamanın en iyi nasıl harcanacağını merak ediyordum. İşte birkaç fikir:
- Makinemde oluşturulacak her şeyi edinin: Her şey, arada bir dosyayı kontrol etmeyi unutmayan, kaynak kod denetimi olarak kontrol edilmek zorunda olsa da, bu muhtemelen ilk iş sırası olmalıdır.
- Daha fazla test: Daha fazla sınıf düzeyinde birim testi yapmak istememde, değişiklik yapacağım zaman, ortaya koyduğum herhangi bir hata erken yakalanabilsin, şimdi olduğu gibi kod test edilebilir değil (devasa sınıflar, uzun yöntemler, çok fazla karşılıklı bağımlılıklar).
- Belgeye Ne aksi nedeniyle düşük seviyede / derece optimize doğa ör anlamak zor olurdu kodunda bu alanlarda belgelerine odaklanmak iyi olurdu ben başlayanlar için düşünüyorum. Korkarım ki, çirkin ve yeniden yapılanma / yeniden yazma ihtiyacı duyan birkaç şey var, ama aslında orada özleyebileceğim iyi bir sebep için yapılmış olan optimizasyonlar var (bkz. Joel Spolsky, Yapmanız Gerekenler Asla Yapma, Bölüm I )
- Nasıl belgelenir: Bence bazı nesirlerin eşlik ettiği mimari fonksiyonların bazı sınıf diyagramları ve kritik fonksiyonların sekans diyagramları en iyisi olur.
- Kim belgeleyecek: Neyin daha iyi olacağını merak ediyordum, onun belgeleri yazmasını sağlamak ya da bana açıklamasını yaptırmak, böylece belgeleri yazabiliyorum. Korkarım, onun için açık olan ama benim için açık olmayan şeyler başka türlü düzgün bir şekilde örtülmeyecek.
- Çift programlama kullanarak yeniden yapılanma: Bu, zaman kısıtlamaları nedeniyle yapmak mümkün olmayabilir, ancak belki de bazı şeylerin neden olduğu konusunda girdi sağlamak için hala etraftayken daha sürdürülebilir hale getirmek için bazı kodlarını yeniden düzenleyebilirim.
Lütfen yorum yapın ve buna ekleyin. Tüm bunları yapmak için yeterli zaman olmadığından, özellikle nasıl öncelik vereceğinize ilgi duyuyorum.
Güncelleme: Proje teslim edildiğinde bu listeyi aşağıdaki cevabımdaki kendi deneyimlerimle genişlettim .