Bir Özellik Dalında Çalışırken Kod Kalitesini Artırırsanız


11

Kod / kamp sitesini bulduğunuzdan daha güzel bir durumda bırakmakla ilgili bu makaleyi gerçekten çok seviyorum - kod temizliğini takip etmek gerçek dünyada pratik bir yaklaşım gibi görünüyor.

Ayrıca özellik dallarını ayrı ayrı özellikleri geliştirmenin bir yolu olarak seviyorum , böylece hoşunuza gitmezse kolayca birleştiremezsiniz.

Ancak, bir özellik dalı üzerinde çalışıyorum ve bazı çirkin kod tespit, ben düzeltmek gerekir?

Düzeltmek için bir dizi aşağı taraf var gibi geliyor:

  • Şubeyi tekrar birleştirdiğimde, fark dağınık olacak, değişken yeniden adlandırma veya işlev çıkarma ile karışık olacak
  • Özellik terk edilirse, temizlik taahhüdünü (yakındaki kodun dağınık birleştirme yaparak nasıl değiştiğine bağlı olarak çalışabilir veya çalışmayabilir) seçmeniz, yeniden yapmanız veya sadece terk etmeniz gerekir.

Kapak tarafında, dosyadayken yapmazsam, şubeyi birleştirdiğimde birkaç gün içinde yapmayı unuturum.

Bu fikre dayalı olduğu konusunda uyarıldım (sadece başlığın içerdiği gerçeğini düşünüyorum should), ama bir cevap var gibi hissediyorum (kesinlikle insanlar her iki yaklaşımı da kullanıyorlar, böylece bir cevapları olmalı). Ayrıca, development methodologieskonuyla ilgili sorular konudur ve bence bir dereceye kadar görüş gerektirmektedir.



@gnat Yararlı bir okuma, teşekkürler. Bence bu bir kubbe gibi değil çünkü bu uzun bir dönem geçiren dallarla ilgili. Özellikle özellik şube dev ile yeniden düzenleme için iyi kampçı yaklaşım uzlaştırmak hakkında soruyorum.
T. Kiley

Bu, projenin içinde bulunduğu geliştirme aşamasına bağlıdır. Eğer proje makul miktarda teste tabi tutulmuşsa ve sahaya yerleştirilmişse, düzeltilmesi planlanan şeyin bir parçası olmayan herhangi bir şeyi değiştirmenin çok riskli olduğunu düşünüyorum. Birçok kişi hiçbir şeyi etkilememesi gereken şeyleri değiştiren hatalar ekledi. Proje geliştirme aşamasında ise, daha temiz kod daha iyi başlamaktır, bu yüzden muhtemelen gerekirse tüm dosyayı temizlerdim.
Dunk

Yanıtlar:


8

Bir özellik dalındaki kodu yalnızca özelliğin bir parçası olarak bu kod parçasını değiştiriyorsanız 'düzeltmeniz' gerekir.

Örneğin. 'Tavşanları yazdır' özelliği üzerinde çalışıyorum ve yazıcı kodunu buluyorum

Public class Printer(string type)
{
    If(type=="bunnies")
    {
        //print a bunny
    }
.....
}

Bunu şu şekilde değiştiriyorum:

Public class Printer(string type)
{
     PrintFunctionDictionary[type].Print();
}

Neden:

  • Kod üzerinde çalışıyorum,
  • İşlev eklemek için değiştirmem gerekiyor,
  • eklenen işlevsellik, sorunu çözmek için yeniden düzenlenmiş bir yol önerir.

Ben rastgele kod tabanının başka bir bölümünü vurmak ve bu gibi 'daha iyi yapmak' yok:

  • Diğer özellikler üzerinde çalışan insanlarla çarpışma.
  • Özelliğin geliştirilmesi için ayrılması gereken zamanı kullanın.
  • Özellik bitmezse ana ürünle birleştirilemeyen bir şubeye rastgele kod ekleyin. Benzer şekilde, özelliği geri alırsam, yeniden düzenlememi kaybederim.

1
Bunun denemek için iyi bir şey olduğuna katılıyorum ve ideal bir dünyada bu her zaman işe yarayacaktır. Bununla birlikte, gerçek dünya kodunda, durumlar genellikle daha karmaşıktır - bir özellik üzerinde çalışırken, tipik olarak kodun özellikten bağımsız olarak yeniden düzenlenmeye değer olabilecek kısımları bulunabilir. Bu kod, özelliğin uygulanmasını engelleyebilir, ancak özellikle doğrudan ilgili yöntem veya sınıflarla sınırlı değildir. Ve bir değişiklik mutlaka başkalarını rahatsız etmez.
Doc Brown

1
her zaman ayrı bir yeniden düzenleme dalı yapabilirsiniz. Gördüğüm gibi özellik dalları temelde "özellik X bitmedi ama tüm diğerleriyle serbest bırakabiliriz" ve "özellik X serbest bırakıldı" gitmenizi sağlayan bir proje yönetimi şeyidir, bu nedenle Y özelliğinin değişmesini beklemiyoruz. Bir özelliğe yeniden düzenleme ekleyerek potansiyel olarak bu avantajları ortadan
Ewan

5

Yeniden düzenleme işlemlerinizin mevcut özellik dalınızdan "bağımsız bir şekilde yaşamasını" istiyorsanız, burada değişiklik yapmayın. Bunun yerine, ana geliştirme dalındaki yeniden düzenleme işlemini (veya ekibinizde değişikliklerin doğrudan geliştirme dalına uygulamaması yaygınsa bir "yeniden düzenleme dalı") yapın. Böylece ekibinizdeki herkes (siz de dahil) değişiklikleri üzerinde çalıştıkları etkin özellik dallarında birleştirebilir. Ancak, meslektaşlarınızdan önce izin istemeden "kod tabanının yarısı" boyunca herhangi bir küresel yeniden düzenleme uygulamamaya dikkat edin - yeniden düzenleme işlemleriniz mevcut çalışmalarına çok fazla müdahale ederse çok mutlu olmayabilirler.

İstediğiniz iyileştirmeler, kod tabanının tam olarak o özellik dalında dokunduğunuz bölümlerde yerel olduğunda ve onlara "yeni özelliğinizden" farklı bir yaşam döngüsü kazandırmak mantıklı olmadığında buradadır.


3

branchTiplerin amacı, onları idare etme niyeti sağlamaktır . Türleri gibi Eğer dallanma bir GitFlow stilini takip ediyorsanız, o zaman muhtemelen var feature, hotfix, releasevb .. bir özellik dalı durumunda, onun niyeti başka dalı (yani içine bir birleştirme kapsüllemek olmaktadır develop) söz konusu gösterileri geliştirici sorumlu birleştirme, bu özellik ne. Temizlemekte olduğunuz kod bu özelliğin bir parçası değilse değiştirmeyin.

Bunun yerine, çirkin kodun içinde bulunduğu olası en düşük dalı (büyük olasılıkla develop) ve oradan da dalı bulun . Kodu değiştirin ve bir özellik olarak birleştirilmesini önerin. Üzerinde çalıştığınız şeyde bu koda ihtiyacınız varsa ve özellikle birleştirme çakışmalarından kaçınmak istiyorsanız, o dalı SİZİN şubenizde birleştirin.

İşte farklı stratejilerin oldukça iyi bir açıklaması: https://www.atlassian.com/git/tutorials/comparing-workflows/


0

bir özellik dalı üzerinde çalışıyorum ve bazı çirkin kod tespit, ben düzeltmek gerekir?

Projenin temposuna, kodun 'çirkinliğine' bağlı olarak 'çirkin kodu' düzeltmek muhtemelen iyidir, ancak bunu özellik dalının kendisinde yapmamaya çalışın.

  • Özellik dalınız tamamen yerelse, kaydedilmemiş değişiklikleri saklar veya saklar, geliştirme dalını kontrol edin, değişikliği yapın, ardından özellik dalınıza geri dönün ve geliştirmeyi yeniden kazanın.
  • Geliştirmeyi yeniden başlatamazsanız (örneğin, özellik dalınız genel bir sunucuda), yine de ihtiyacınız varsa veya daha sonra çakışmalardan kaçınmak için geliştirmeyi erteleyebilirsiniz.
  • Bir dosyayı düzenliyorsanız ve gerçekten çirkin kodun düzeltmesini yapmak zorundaysanız ve gerçekten geliştirmeye geçemezseniz, düzeltmeyi yapabilir, düzeltmeyi yapmak için kullanabilir git add -p, yalnızca bu değişikliği taahhüt edebilir ve / itme (gerçekten, tercihen bir sonraki taahhüdünüzden sonra), bu taahhüdü şubenizdeki mümkün olan en erken noktaya taşımak için etkileşimli rebase kullanın veya geçmişinize bağlı olarak muhtemelen kiraz seçimini geliştirin.

Ben de ('düzeltmeler' değişiklikler ya da başka bir geliştirici kod standartlara uyduğundan emin olmak için yapabileceğiniz değişiklikler olduğunu 'geliştirme dalı' sabitleme 'başka bir şey yapardı. Bu yardımcı olur ...

  • düzeltmelerinizi ve özelliğinizin farklı gruplar halinde kaydedilmesi için günlüğün daha okunabilir olması,
  • kalkınmayı her zaman serbest bırakılabilir olmaya olabildiğince yakın tutmak ve
  • işin tekrarlanmasını önlemek için (aynı sorunu farklı dallarda ustaca farklı şekillerde çözen birden fazla kişi).
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.