Hata düzeltme yorumlarını kod içinde tutmak iyi mi?


15

Ekibim sürüm kontrolü olarak clear-case kullanıyor. Çalıştığım proje 7-8 yıl önce başlamıyor. Projenin tüm ömrü boyunca çeşitli hata düzeltmeleri hizmet paketleri vb. Yayınladık. Sorunlar, hata izleme sistemi kullanılarak izlenir ve hata düzeltmeleri üzerinde çalışan kişilerin çoğu, START / Tarih, yazar, hata kimliği vb.İLE END bloğu.

Bunun oldukça alakasız olduğunu ve kodun dağınık ve huzursuz olmasını sağladıklarını ve iş ürününün ek yaşam döngüsü bilgilerini tutabileceğimiz check-in yorumlarının / etiketlerinin vb.

Takip edilecek en iyi uygulama nedir?

Kodun bazı yorumcuları hata hakkındaki yorumları ısrar ediyor ve hayatlarını kolaylaştırmak için düzeltmeler yapıyor. Anladığım kadarıyla, dosyaları bir görünüme eşleyerek gözden geçirmeli ve dalın değişiklik günlüğünü almalı ve gözden geçirmelidirler. Güncellenmiş kodu incelenmek üzere göndermeyle ilgili en iyi uygulamaları edinebilirsem faydalı olabilir.


3
Asıl soru NEDEN bunu böyle yapıyorlar. Bu, kaynak kontrolünden önceki çok eski bir prosedür olabilir.

@anderson - Ben tanıtıldığında clearcase kullanma konusunda doğru bir anlayışa sahip olduklarını hissediyorum. Böylece bu uygulama daha fazla takip etmiş olabilir ....
sarat

bulmayı düşündün mü?


Bunun kötü bir uygulama olduğunu söylemeyeceğim. Her neyse, yazılım kalite ölçümlerinden biri kaynak kodu üzerinden yapılan yorum yüzdesidir.
Rudy

Yanıtlar:


27

Hata düzeltmesini koda yorum olarak eklemeyle ilgili sorun, hikayenin tamamını alamamanızdır. "Bu hata blah bir düzeltme" etiketli mükemmel bir kod parçası görürsem , ilk tepki "ne yani?" Demek olacaktır. Kod orada, işe yarıyor. Kodu korumak için bilmem gereken tek şey bana ne yaptığını söyleyen bir yorum.

Daha iyi bir uygulama, SCM taahhüt günlüklerine hata düzeltme referansları eklemek olacaktır. Bu şekilde, hatanın ne olduğunu, nerede tanıtıldığını ve nasıl düzeltildiğini görürsünüz. Ayrıca, bir yayınlama zamanı geldiğinde, SCM günlüklerini kolayca ayıklayabilir ve bir hata olduğunu belirten bir madde işareti ekleyebilirsiniz ve bu hata düzeltildi. Başka bir şube veya sürüm aynı hatayı tanıtırsa, düzeltmeyi bulmak ve gerçekten aynı şeyse yeniden uygulamak kolaydır.

Bütün bunları söyledikten sonra Charles'ın cevabına da katılıyorum. Bir kod parçasının nedeni açık değilse, elbette, bakıcıya kodun bir nedenden dolayı orada olduğunu ve dikkatle ele alınması gerektiğini söyleyin.


Mükemmel cevap. Soruma birkaç puan daha ekledim. Lütfen cevabınızı kontrol edin ve güncelleyin. teşekkür ederim. BTW, Belirli bir şubeden taahhüt günlükleri almak için açık komutlarla bana yardımcı olabilir misiniz?
sarat

@Sarath Daha önce hiç ClearCase kullanmadım. Sormak için süper kullanıcıyı kullanmaktan çekinmeyin. Eminim, yardım etmeye istekli birçok insan vardır.
Dysaster

4
JIRA gibi iyi hata izleyicileri, SCM'nizin taahhüt günlüklerine bakabilir ve hatalar için bilgi çekebilir. Sadece bir hata için bir şey yaptığınızı düşünün ve hata izleyici otomatik olarak hata raporuna X'in hataya atıfta bulunduğu bir not ekler.

@Andersen - Teşekkürler JIRA kullanıyoruz. Ancak doğru kullanılıp kullanılmadığından emin olmalıyım.
sarat

@ Thorbjørn Ah, kolay anladın. CVS / Bugzilla combo (ve daha sonra SVN / Bugzilla) ile gün geri manuel olarak yapmak zorunda kaldı. Taahhütüme bugfix referansı ekle ve bugzilla'ya kesin referansı ekle. Hataya yatkın süreç ve geliştiriciler birini ya da diğerini unutma eğilimindeydi. Ancak bu bilgiler birçok durumda çok kullanışlı oldu.
Dysaster

23

Çoğunlukla kötü uygulama. Asla yapılmaması gerektiğini söylemeyeceğim. Bazen, harici bir API'de etrafta çalışmanız gereken bir hata gibi bir şeyle karşılaşırsınız. Altta yatan böcek hakkında bilmiyorsanız, etrafı saran beyin tamamen ölü gibi görünebilir. Bu durumda, koddaki hatayı belgelemek iyi bir fikir olabilir, bu nedenle iş arkadaşlarınız veya daha sonra kendiniz açık bir şekilde beyin ölü kodunu "düzeltmeye" çalışmaz.


3
Kabul. Önemli bir değer kattıklarında bu tür yorumları ekleyin. Yine de, sadece bir kolu çevirmek için yapmayın.
11:50

Güzel, bu, bazı kodların "Neden" olduğunu söyleyen yorum fikrini destekliyor. Bkz. Programmers.stackexchange.com/questions/1/…
Gabriel

Bu birkaç kez yaptım: ilk bakışta, tamamen mantığı ("f * bu kod burada ne için?") Karşı koyar kod ama aslında çok iyi bir nedenle orada, bu yüzden insanların dikkatle basmak istiyorum o. Daha sonra, bu kodun neden herkesin hayatını kolaylaştırabileceğini açıklayan bir uyarı ekleyin . Daha sonra, birisi orijinal sorunu çözmenin daha iyi bir yolunu düşünebilirse, onlara tüm kredi, diyorum - braindead kodunun neden yerleştirildiğini ve neyi başarması gerektiğini biliyorlar, bu yüzden bir alternatif uygulamak çok daha kolay çözüm.
CVn

9

Kötü uygulama. Yorumlar güncelliğini yitirecek ve kodları karıştıracak. Bilgiler, gerekirse, SCC sisteminizin sürüm geçmişinde hala mevcuttur.


3

Kulağa kötü bir uygulama gibi geliyor. Kuruluşunuz başka bir hata izleme sistemine geçmeye karar verirse ne olur? Ürününüzü şu anda kullanmakta olduğunuz aletlere çok sıkı bağlamayın. Belirli hata kimliklerine başvurmak yerine ve kodun neden göründüğünün nedenleri belirsizdir, tasarım kararınızı koddaki yorumlarla motive edin.


Bu yanlış bir ikilik. Gerektiğinde neden tasarım yorumları ("bu yüzden xy z yaptık") ve tamamlama iletilerindeki hata kimliklerinden bahsedemiyorsunuz?
Matthew Flaschen

Yapamayacağın nerede yazıyor? VCS taahhüt mesajları değil, kod hata hatalar atıfta.
fejd

Üzgünüm, yanlış anladım. Hata kimliklerini hiçbir yere koymanın faydalı olmadığını söylüyordun.
Matthew Flaschen

Sorun değil, bu sadece cevabımın yeterince net olmadığı anlamına geliyor. :)
fejd

2

İlk tepkim, kendinizi tekrar etmeyin, bu yüzden onu koddan çıkarın ve SCM günlüklerine alın. Burada, işlevler için düzeltme yorumu, yazar adları ve dosyalar ve işlevler için oluşturma tarihleri ​​hakkında benzer bir tartışma yaptık. Geçmişte (SCM kullanılmadan önce) tüm bu bilgiler bir dosyanın evrimini yeniden inşa edebilmek için dosyalarda tutuldu.

Geliştiricilerin yaklaşık yarısı, bu bilgilerin tüm bilgileri tek bir yerde bulundurmasını istiyor (bu, SCM'deki değişiklikleri aramalarını tetikliyor). Geliştiricilerin diğer yarısı, kozada neyin değiştiğine dair ipuçlarını aramaya başlamıyor, ancak SCM'den kodda bilgiye ihtiyaç duymuyorlar. Bu yorumlarla ne yapacağımıza henüz karar vermedik. Bu, insanların çalışma şekline bağlıdır ve bazı insanlar bilinen yöntemlerini bırakma konusunda çok inatçıdır. Kod bloğunu yorumlamak ve onları sonsuza dek kodda bırakmak hakkında aynı şey.


Sanırım yorum kod SCM tarafından kontrol ve hatta taahhüt etmeyi reddetti ... Gelecekte bazı varsayımsal gün ihtiyacınız varsa, SCM geçmişinde arama 5 dakika kazanma uğruna sadece kod karmaşası ekliyor geri.
Julien Roncaglia

Anlaştık ama bunu sourcesafe'de uygulamaya çalışın: D Proje ekibimizde incelemelerle çalışıyoruz, bu yüzden şimdilik bu bloklar gözden geçiren tarafından reddedildi.
refro

Oh SourceSafe ... sen ve ekibin için üzgünüm.
Julien Roncaglia

Olma, hiç yoktan iyidir. Şu anda Subversion ile tüm yeni gelişmeler yapıldı, bu yüzden her ay sourcesafe ile daha az ilgim var.
9'da refro

1

Sadece Dyaster ve ark. JIRA'nın hata düzeltmeleriyle ilgili değişiklikleri görüntülemek için gerçekten güzel yetenekleri olmasına rağmen, bir hata düzeltmesini belgelemek için mutlak en iyi yer bir test durumundadır. Hangi hatanın giderildiğini belirten bir yorum yapılmadan kod net değilse, bu "kod kokusu" dur. Bununla birlikte, kokuyu temizlemek için zamanınız yoksa, yorum test koduna atıfta bulunmalıdır, burada kodun yaptığı şeyi neden yaptığını çok daha açık olmalıdır. Hata düzeltmesini açıklayan bir test vakası yazmak için vaktiniz yoksa, hata henüz düzeltilmedi, sadece ertelendi.


1

Ben kodun kendisi değil, taahhüt mesajlarda bugfix kimlikleri eklemeyi kabul ediyorum. Hata kimlikleri için işleme iletilerini otomatik olarak kazıyan hata izleyiciler çok kullanışlıdır.

Ayrıca, bu yorumları değiştirmenize yardımcı olması için sürüm kontrol sisteminizin suçlama / açıklama / övgü komutunu kullanabilirsiniz . Sonra, şöyle bir şey çalıştırdığınızda:

vcs blame file.ext

genellikle her satırı kimin değiştirdiğini, değiştirdiklerinde ve taahhüt kimliğini içeren yararlı bilgiler görebilirsiniz. Tamamlama kimliğinden, hata kimliğini içermesi gereken tam iletiyi alabilirsiniz.

İyi VCS sistemleri, bir satırı kimin değiştirdiğini hesaplarken boşlukları yok saymanıza izin verir.

Clear Case'in bu özellik için ne olduğunu bilmiyorum.

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.