Çekme isteğinde bir TODO nasıl kullanılır?


24

Bir çekme isteğindeki değişiklikleri gözden geçirdiğimde, bazen aşağıdakilerden dolayı farklı nedenlerle bulunabilecek bir "TODO" notu olan bir yorumumda yanıldım:

  • Bir problemi çözmek için kullanılan çözüm geliştirilebilir, ancak önemli ölçüde daha fazla zaman yatırımı gerektirir. Bir yazar daha hızlı bir çözüm seçti ancak daha iyi bir seçeneğin potansiyel olarak mevcut olduğuna dair bir yorum yaptı
  • yakında düzeltilmesi gereken mevcut bir hatayı gidermek için geçici bir kod var.

Bunun TODOgenellikle kod tabanının ömrü boyunca kod tabanında kaldığını bilmek, çekme isteğinde onlara nasıl tepki vermeliyim? Bundan kibarca nasıl kaçınmayı talep edebilirim veya gerçekten haklıysa, halkla ilişkiler yazarının ileride daha sonra takip edeceğinden nasıl emin olabilirim?


Geride kalan TODO'lar ekibiniz için bir problem haline geliyorsa, bir kod atamadıysanız (ya da bu yetkiniz yoksa, patronunuzdan birisini atamasını isteyin) tüm kodunuzu gözden geçirmek ve tüm TODO'ları yapmak için biraz zaman harcamak için?
nick012000

Önemli bir faktör, söz konusu TODO'nun yazar dışındaki geliştiriciler tarafından çözülebilecek nitelikte olup olmadığıdır. Diğer bir faktör de, TODO'nun riskini veya alaka düzeyini pragmatik olarak değerlendirmektir - sadece ağlayan kurt mu?
saat

Kod tabanınızda birkaç TODO olması sorun değil.
Oliver Watkins

Yanıtlar:


26

Ekibinizde / departmanınızda / kuruluşunuzda "genellikle kod tabanının kullanım ömrü boyunca kod tabanında kaldıklarını" söylediğinizde, şunları göz önünde bulundurun:

  • Senin bunu bir yere yazın DoDTODO , FIXMEbenzer etiketler kaçınılmalıdır veya.
  • Yapı kararsız otomatik olarak işaretlemek için SonarQube gibi statik bir kod analiz aracı kullanın .
  • Geçici olarak izin verin ve yalnızca sorun izleyicinizde ilgili bir bilet varsa. Sonra kod gibi görünebilirTODO [ID-123] Description ...

Benim de belirtildiği gibi açıklama , son deyimi muhtemelen sadece (bir izlerseniz örn biletler çürüsün etmediğini bir ortamda mantıklı sıfır hata ilkesini ).

Şahsen ben düşünüyorum TODOler vardır bazen makul, ama bir aşırı bunları kullanmamalısınız. Robert C. Martin'in “Temiz Kodu: Çevik Yazılım İşçiliği El Kitabı” ndan alınmıştır (s. 59):

TODOProgramcının yapılması gerektiğini düşündüğü işler ancak bir sebepten şu anda yapamayacakları işler. Kullanımdan kaldırılmış bir özelliği silmek veya bir başkasının soruna bakması için bir savunma silmek için bir hatırlatma olabilir. Planlanan bir olaya bağlı bir değişiklik yapması için başkasının daha iyi bir isim veya hatırlatıcı düşünme isteği olabilir. Bir kenara bırakacak olursak TODOolabilir, öyle değil sistemde kötü kod bırakmak için bir bahane.


2
Değişen bilet sonsuza dek birikmiş olarak kalmayacak mı? Hem TODO'ların hem de biletlerin sonsuza dek çözümsüz kaldığını gördüm.
dzieciou

5
@dzieciou mutlaka değil, ama elbette, sonsuza dek orada kalma riski de var. Ancak, bir biletiniz varsa, bu risk yalnızca bir kod yorumuyla karşılaştırıldığında büyük olasılıkla daha düşüktür. Bunun mantıklı olup olmadığı takıma / departmana / organizasyona bağlı.

13
Yapılması gereken bir politikanız varsa, geliştiriciler basitçe todo yorumunu kodun dışında bırakacak ve şüpheli hızlı ve kirli kodu içeride bırakacaktır. Kötü fikir.
RibaldEddie

8
Yapılacaklar bir iletişim şeklidir. Geliştiriciler arasında. Bazen uzun süreler boyunca. TODO kelimesinin bir kod yorumunda kullanılması, belirli bir endişe için sözdizimsel şekerden başka bir şey değildir.
RibaldEddie

2
Sanırım sorun izleyiciye eklemekten bahsetmek burada önemli. Bunu yaparsanız, insanlar siz bilmeden onu tamir etmeye başlamış bile olabilir. Bir organizasyonda olduğunu gördüm; sadece insanlar hataları, refactor kodunu vb. düzeltmeyi sevdiği için sorunlar çözüldü. Bazen oldukça temiz olabilir.
Per Lundberg,

5

TODO'nun kendileri şeytan değil. Asla bir kat daha derin olmamamı ve her izleyici biletinde 1 sayıyı düzeltmeyi çok severim.

Sık sık TODO veya FIXME'i kendi ihtiyacımı istediğimi veya bir sorunu çözmek için geri gelmek istediğimi hatırlatmanın bir yolu olarak kullanırım.

Örneğin, add (a, b) çağrısı yapabilir ve add yöntemini yeniden yansıtmak için bir TODO ekleyebilirim. Şimdi ekleme yöntemi üzerinde çalışmak istemiyorum, ancak geri dönmek istiyorum.

Böylece bir çekme isteği TODO veya FIXME göreceksiniz. Örneğin, FIXME'yi, diğer sorumluluk alanlarını devraldıklarını, bunlarla uğraşmamam gerekenleri uyarmak için kullanıyorum. Örneğin, FIXME ekleme negatif sayıları kabul edemez.

Görülmeme ya da göz ardı edilme problemini çözmek için, tüm TODO FIXME ve DEGUG satırlarını listeleyen bir script kullanıyorum. Ve bu taahhüt mesajına eklenir.

Tüm TODO'lar olan 400 satırlık bir işleme mesajı yoksaymak zor. Böylece insanlar, söz konusu koda zaten dokunurken veya yeni biletler oluşturarak ve sorun kodunu bağımsız olarak düzelterek, bunları düzeltirler.

Dürüst olmak gerekirse, ayrıca her projenin kod temizleme zamanını arttırdığından eminim. Evet, 15’te fırlatmaya hazır olabilir, ancak 15’ten 30’a kadar temiz bir kod yapıyorlardı. (garip görünüyor, ancak bir ürünü yönetmişseniz, piyasaya sürülmeden önce görünürlükleri düşük olan bir işe sahip olmaya çalışırsanız, asla bunlara erişmenize izin verilmeyeceğini biliyorsunuz. Başka bir şey öncelik kazanacak.)


1
TODOKendilerinin kötü olmadığına katılıyorum , ancak bunları sık sık kullanmak benim gürültü olduğunu düşündüğüm şeydir. Ayrıca 400 satırlık bir mesajın kolayca göz ardı edileceğini düşünüyorum çünkü insanlar o kadar metni atlıyor. Ayrıca, birçok Git / VCS ön ucu (örn. GitHub), belirli sayıda karakterden daha uzun herhangi bir konu satırını keser.
beatngu13

Evet, benim açımdan bu, yaklaşık 4-5 satırda insanlar temizlemek istiyor. Böylece TODO yapmaya başlarlar. 400 satır abartıydı.
coteyr

TODO'ları taahhüt mesajına ekleme komut dosyasının nasıl çalıştığını merak ediyorum.
Simon

Bağlayabileceğiniz bir "commit-msg" kancası var.
coteyr

1

Mükemmel olmayan çekme istekleri olacak. Şu anda, mevcut zamanda "yeterince iyi" yapılabilecek bazı işler yapıyorum, ancak mükemmel değil. Bu yüzden bir çekme isteği gönderirim, TODO'yu yorumlarla koddaki doğru yerlere koyarım ve aynı zamanda "yeterince iyi" den "mükemmel" olan şeyleri değiştirmek için başka bir değişiklik isteği eklerim.

Bu yeni değişiklik talebine öncelik verilebilir ve en yüksek öncelikli madde olduğu zaman ele alınacaktır. Şu anda mükemmel olması gerektiğine karar verilirse , verilen bir sonraki şey olacaktır.

Şimdi, sorunuz: "Kibarca bundan kaçınmayı talep edebilir miyim ya da gerçekten haklıysa, halkla ilişkiler yazarının gelecekte daha sonra takip edeceğinden nasıl emin olabilirim?" Tarif ettiklerimde, bu oldukça tuhaf görünüyor. Geç nakliye ve yeterince iyi olan nakliye arasında seçim yapabiliyorsam, o zaman karar vermek sizin kararınız değildir. İsterseniz ürün müdürünüze sorabilirsiniz. Ve "PR yazarının takip edeceğinden emin ol"? Eğer bir ekibiniz varsa, o zaman bunun sisteminize girdiğinden emin olmalısınız ve umarım ekibiniz, kayıtlı olan şeylerin kaybolmaması için yeterince iyi bir şekilde organize edilmiş olmalı ve daha yüksek öncelikli bir şey olmadığında sonunda birileri bunu düzeltecektir. Unutma, bu bir takım çalışması.


1

Projeniz kaynak kodunda bekleyen öğeleri TODOyorumlarla izliyorsa, izin vermeniz gerekir.

TODOÇekme isteğindeki bir yorumun varlığı sizi rahatsız ediyor. Kaynak kodda bekleyen öğelerin izlenmesinin kötü bir fikir olduğunu söylemelisiniz. İşler bu şekilde kaybolma veya yok sayma eğilimindedir. Şimdi, bir "çalışma çatalına" çekme isteği hakkında konuşuyorsanız, durum farklıdır. Bir "çalışma çatalı" tam da bu - devam eden bir çalışma. Ancak bunun gibi bir çatal genellikle çekme isteği gerektirmez. Burada önerilen "Ev Kuralları", ana dal için çekme talepleri içindir .

Ev Kuralları # 1 - Master , tüm girişlerden sonra günlük olarak yapıldığı için master için tüm taahhütleri test etmeye hazır olmalıdır . Bu taahhütler ayrıca gereken ek testleri de içermelidir.

Eğer TODOaçıklama yoktur kod bitmiş değil, ya testler bitmedi, veya kod kod yerel değil, bir çekme isteği işlemek aittir o, herhangi bir şekilde test için hazır değil çünkü. Hazır olunca beni ara.

Kural 2 - Açık konulara ilişkin tüm bilgiler konu izleyicide saklanır. Hepsini. Notlar, karalamalar, ağrılar, her neyse.

Eğer TODOaçıklama açık bir konuya ilişkindir ve bu soruna yönelik gerçek bir düzeltme değil, bu bilgiler sorun izleyicide aittir. Bu şekilde, bir sorun kapatılmadan önce, sorunun gerçekten çözüldüğünden emin olmak için gerekirse tüm bilgiler gözden geçirilebilir ve doğrulanabilir.

Kural # 3 - Beklemedeki proje görevleriyle ilgili tüm bilgiler öncelik sırasına aittir (veya bunun için sisteminizin adı ne olursa olsun).

Açıklığa kavuşturmak için, bekleyen bir proje görevi, belirli bir önceliğe sahip olan projede yapılması gereken bir şeydir, ister bir bilet bileti oluşturmadan önce keşfedilen bir kusur, isterse belirli bir tasarım gereksiniminin uygulanması veya bu gereksinimin gerekli bileşenleri.

Eğer TODOyorumdur yeni kod bekleyen bir görevi etkileyecek veya ihtiyaçlar yeni kod uygularken hangi, ardından bilgi öncelik kuyrukta ait olduğunu, ya üzerinde keşfedildi baktım kod temeli başka bir şey işaret etmek orada söylemek Mevcut görev veya yeni bir görev.

Kural # 4 - Öneriler Fikir Kutusuna (ya da her neyse) aittir.

Eğer TODOyorumunuz, tasarım veya yazılım uygulanmasında bir değişiklik öneren bilgilerdir projenin fikri kutusuna ait olduğunda veya "vNext" veya "Tasarım Notları", ya da her ne bu tür bir şey için var olduğunu.

Kural # 5 - TODOKaynak kodda yorumlara izin verilmez. SÜRESİ.

Bu kurala sadık kalırsanız, herhangi bir şeyi takip eden biri için endişelenmenize gerek kalmayacaktır.

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.