Takımlarla Yeniden Adlandırma, Yeniden Düzenleme ve Değişiklikleri Kırma ile İlgili En İyi Uygulamalar


10

Ekip ortamlarında yeniden düzenleme ve yeniden adlandırma için bazı En İyi Uygulamalar nelerdir? Bunu birkaç senaryoyu aklıma getiriyorum:

  1. Yaygın olarak başvurulan bir kitaplığa, başvuruda bulunan herhangi bir kitaplığa veya projeye bir sonlandırma değişikliği eklemek üzere yeniden düzenlenirse. Örneğin, bir yöntemin adını rastgele değiştirme.

  2. Projeler yeniden adlandırılırsa ve çözümlerin güncellenmiş referanslarla yeniden oluşturulması gerekir.

  3. Proje yapısı klasörlerin tanıtılması ve mevcut proje veya çözümlerin yeni yerlere taşınmasıyla "daha organize" olarak değiştirilirse.

Bazı ek düşünceler / sorular:

  1. Bunun gibi değişiklikler mi yoksa ortaya çıkan acı mı, yapının kötüye gittiğinin bir göstergesi mi?

  2. Bir değişiklikle ilgili hataları düzeltmek için kim sorumluluk almalıdır? Bir geliştirici bir değişiklik yaparsa, etkilenen projelere girip bunları güncellemekten sorumlu olmalı mı yoksa diğer geliştiricileri uyarmalı ve bir şeyleri değiştirmelerini istemeli mi?

  3. Bu planlanmış bir temelde yapılabilecek bir şey mi yoksa mümkün olduğunca sık yapılması gereken bir şey mi? Eğer bir yeniden düzenleme çok uzun süre ertelenirse, uzlaştırmak giderek daha zordur, ancak aynı zamanda başka bir yerde meydana gelen değişiklikler nedeniyle bir yapıyı sabitlemek için 1 saatlik artışlarla harcama yapar.

  4. Bu resmi bir iletişim süreci midir, yoksa organik olabilir mi?


1
Yapıyı her kırdıklarında herkese 1 dolar tahsil edin ... Dikkatsiz hataları ne kadar engellediğine şaşıracaksınız.
Berin Loritsch

+1 çünkü yorumunuz 3 mükemmel ve farklı cevaba ilham verdi.
Carl Manaster

Yanıtlar:


13

Listelediğiniz senaryoların her biri "yayınlanmış API / kod" kategorisine girer. Bunu düzeltmek zordur, bu yüzden bir şey hafifçe değiştirilmemelidir. Bunun yerine, planlanan değişiklikleri ilgili tüm taraflarla önceden görüşmelidir. En azından teknik kadar politik bir konudur.

Bu nedenle Martin Fowler'ın bir numaralı tavsiyesi arayüzlerinizi (proje adları ve yapıları) erken yayınlamamaktır .

Ancak, zaten yapıldıysa ve düzeltilmesi gerekiyorsa, muhtemelen diğer tarafların bozulmasını en aza indirmek için gerekli değişiklikleri mümkün olduğunca az adımda yapmaya çalışmak daha iyidir. Bu, orijinal yeniden düzenleme kavramından oldukça uzak, ama iyi bir nedenden dolayı.

Ayrıca, mümkünse, mevcut yöntemi yeniden adlandırmak yerine yeni yöntemi (mevcut yöntemi kullanımdan kaldırırken) eklemeyi düşünün . Bu, istemci kodunun bozulmamasını sağlar ve kodlarını en son API ile uyumlu olacak şekilde güncellemeleri için bir geçiş süresi sağlar. Dezavantajı, API'nizi karmaşık hale getirmesidir. Durum yalnızca geçici olsa da, kullanımdan kaldırılmış API yöntemlerini güvenle kaldırabilmeniz uzun sürebilir (Java sınıf kitaplığı durumunda, yıllar).


Başkaları tarafından yazılan kodu yeniden düzenlerken Martin Fowler'in (aksi halde iyi) tavsiyelerini kullanamazsınız. Ayrıca, yöntemleri reddeden geliştiricinin, geçiş sürecini hızlandırmak için çok sinir bozucu olmadan meslektaşlarına zaman zaman yeni yöntemleri kullanmasını hatırlatması gerektiğini düşünüyorum. Java sınıf kitaplığında kullanımdan kaldırılan yöntemlerin her zaman geriye dönük uyumluluk için var olacağı izlenimi altındayım, ancak yanlış olabilir.
11:47

@blizpasta, söz konusu API'nın sahip olduğu müşteri sayısına bağlıdır. Aynı departmanda yarım düzine varsa, tartışma ve tartışmalar, normal şartlar altında geçişin tamamlanması birkaç ay sürebilir. Tüm dünyada milyonlarca kullanıcınız ve milyarlarca LOC istemci kodu varsa, evet, büyük olasılıkla bu kullanımdan kaldırılmış yöntemleri asla kaldırmayacaksınız.
Péter Török

5

İki adımda yeniden düzenleme yaparak bu sorunları neredeyse her zaman önleyebilirsiniz. İlk adımda, yeni kodu tanıtın ve eski kodu kullanımdan kaldırın. Tüm takımlar yeni koda geçtiğinde eski kodu silin. Bu tekniği ayrıca tek bir modülü kademeli olarak yeniden düzenlemek için de kullanıyorum. Bu şekilde test çalıştırmaları arasında değiştirilmesi gereken kod miktarını sınırlayabilirim.


2
Bunu yaptığımda, genellikle yeni kodu çağırmak için eski kodu değiştirmeyi başardım. Bu bir saplama yöntemi haline izin verir ve eski yöntem istemcileri için (umarım) geliştirilmiş kodu sağlar.
BillThor

4

Bunun, testleri çalıştıran bir yapı sunucusuna sahip olmanın başlıca nedenlerinden biri olduğunu unutmayın.

Belirli bir programı kıracak bir şey olursa, mümkün olan en kısa sürede size söylenir ve suçluyu avlayabilir ve ayrıntılar hala tazeyken sorunları çözebilirsiniz.

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.