Çekme istekleri büyük olduğunda daha iyi kod incelemeleri nasıl yapılır?


12

Feragatname: Bazı benzer sorular var, ancak büyük bir çekme isteğini incelerken özellikle karşılaştığınız sorunlara dokunan herhangi bir şey bulamadım.

Sorun

Kod incelemelerimin daha iyi bir şekilde yapılabileceğini hissediyorum. Özellikle 20'den fazla dosyada birçok değişiklik içeren büyük kod incelemelerinden bahsediyorum.

Belirgin yerel kod sorunlarını yakalamak oldukça basittir. Kodun iş kriterlerini karşılayıp karşılamadığını anlamak farklı bir hikaye.

Kod yazarının düşünce sürecini takiben sıkıntılar yaşıyorum. Değişiklikler çok olduğunda ve birden fazla dosyaya yayıldığında oldukça zor. Belirli bir değişiklikle ilgili dosya gruplarına odaklanmaya çalışıyorum. Ardından grupları tek tek inceleyin. Ne yazık ki kullandığım araç (Atlassian Bitbucket) çok yardımcı değil. Bir dosyayı her ziyaret ettiğimde, o anda incelenen değişiklik parçasıyla ilişkili olmadığı ortaya çıksa bile, görüldüğü gibi işaretlenir. Bazı dosyaların birden çok kez ziyaret edilmesi ve değişikliklerin parça parça gözden geçirilmesi gerektiğinden bahsetmiyoruz. Ayrıca kötü bir yolu izlediğinizde ilgili dosyalara geri dönmek de kolay değildir.

Olası çözümler ve neden benim için çalışmıyorlar

Bir çekme talebinin gözden geçirilmesi genellikle boyut problemlerini çözer, ancak sık sık eski moda değişikliklere bakacağımdan hoşlanmam.

Tabii ki, daha küçük çekme istekleri oluşturmak bir çare gibi görünüyor, ancak ne olduğu, bazen büyük bir çekme isteği alıyorsunuz ve gözden geçirilmesi gerekiyor.

Ayrıca, kodun mantıksal yönünü bir bütün olarak göz ardı edebilirsiniz, ancak özellikle kod deneyimsiz bir programcıdan geldiğinde oldukça riskli görünüyor.

Daha iyi bir araç kullanmak yardımcı olabilir, ancak bir tane bulamadım.

Sorular

  • Kod incelemelerinizde benzer sorunlarınız mı var? Onlarla nasıl yüzleşiyorsun?
  • Belki daha iyi araçlarınız var mı?

3
Bu kod incelemeleri neden bu kadar büyük? Örneğin, otomatik bir yeniden düzenleme işleminin sonucuysa, taahhüdü gözden geçirmek yerine, eski işlemi yeniden düzenlemenin tekrarlanmasının yeni taahhüdün aynı kopyasını üretip üretmediğini kontrol edip araca güvenip güvenmediğinize karar verirsiniz. Böylece, 1000 satırlık bir farkın gözden geçirilmesi aniden bir IDE'de 1 satırlık bir komutun gözden geçirilmesi ve IDE satıcısına güvenilip güvenilmeyeceğine karar verilmesi haline gelir.
Jörg W Mittag

Bunu yapabilmek için çektiğiniz varsa, kod incelemesini kolaylaştırmak için kod yazarının sorumluluğunu yapın. Bu, yazarların alakasız taahhütleri ezmek, yalnızca bir değişiklik içerecek şekilde yeniden yazmak, büyük yeniden düzenleme taahhütlerini ayırmak ve taahhütleri gözden geçirenler için anlamlı olacak şekilde sipariş etmek konusunda dikkatli olması gerektiği anlamına gelir.
Yalan Ryan

Yanıtlar:


8

Bu sorunları yaşadık ve aşağıdaki soruyu sormak bizim için iyi çalışıyor:

Halkla İlişkiler birleştirilebilen ve bağımsız olarak test edilebilen bir şey yapıyor mu?

PR'ları tek sorumlulukla (SR) kırmaya çalışıyoruz. İlk itme geri sonra millet bekar da olsa küçük bir şey bile büyük olabilir bulmak için şaşırdılar .

SR, gözden geçirmeyi gerçekten kolaylaştırır ve ayrıca beklenen uygulama hakkındaki bilgileri yayar.

Bu, daha fazla eklendikçe ve PR geri dönüş süresi büyük ölçüde azaldıkça artımlı refactörlere de izin verir!

Mümkünse SR tarafından ayrılmanızı ve sizin için işe yarayıp yaramadığını görmenizi öneririm. Bunu bu şekilde yapmak için biraz pratik gerektirir.


11

Bazen büyük çekme taleplerinden kaçınamazsınız - ancak kimin hangi sorumluluğa sahip olduğunu ayırt edebilirsiniz.

Çekme isteklerini ikna edici argümanlar olarak görüyorum. Yazar beni kodun bu şekilde görünmesi ve çalışması gerektiği konusunda ikna etmeye çalışıyor.

Tüm tartışmalarda olduğu gibi, tek bir açık fikri olmalıdır. O da:

  • bir refactor,
  • bir optimizasyon,
  • veya yeni işlevsellik.

Eğer net değillerlerse, o zaman kendileri anlamamaları için oldukça iyi bir şans var. Diyaloğu açın ve argümanlarını alt argümanlarına ayırmalarına yardımcı olun. Gerekirse, bu tamamen iyi - bu taahhütleri yeniden yaratmaları ve daha anlaşılır ve doğrudan çekme talepleri sunmaları için bile faydalıdır.

Hala büyük çekme talepleri olacak, ancak açık bir argümanla neyin uymadığını görmek çok daha kolay.

Takımlama konusunda, kuruluşunuza ve işleminize bağlıdır. BitBucket, bütçenizden, donanımınızdan, gereksinimlerinizden, mevcut işlemlerinize, iş kurallarınıza ve BitBucket'i barındırmak için zaten yaptığınız çeşitli yazılım uyarlamalarına kadar her şeye bağlı olsun ya da olmasın iyi bir araçtır. Davranışın yapılandırılıp yapılandırılamayacağını görmek için belgelere bakarak başlayabilirim, belki eklenti topluluğuna atıp (veya bunu yapmak için bir eklenti yaparak ona katılarak).


8

Tam çekme talebini değil, her taahhüdü gözden geçirin. Çekme talebini bu şekilde yaparak daha iyi anlayacaksınız.¹

Taahhütler küçükse, bu tür bir inceleme yapmak sorun olmamalıdır. Değişiklikleri taahhütler boyunca tek tek takip edersiniz ve sonunda resmin tamamını elde edersiniz. Bazen birkaç taahhütte geri alınamayacak değişiklikleri gözden geçirmeniz gibi dezavantajlar vardır, ancak bu çok fazla olmamalıdır.

Taahhütler büyükse, o zaman bu taahhütleri yapan kişi ile tartışmalısınız. Ona büyük taahhütlerin neden sorunlu olduğunu açıklayın. Diğer kişinin neden nadiren değişiklik yaptığına dair argümanlarını dinleyin: örneğin, taahhüt öncesi kancaların çok uzun sürdüğü için taahhütte bulunmaktan kaçındığını öğrenebilirsiniz, bu durumda önce bu sorunun çözülmesi gerekir.

Bir çekme talebinin gözden geçirilmesi genellikle boyut problemlerini çözer, ancak sık sık eski moda değişikliklere bakacağımdan hoşlanmam.

Bunu yaparsınız, ancak bu küçük bir sorundur ve tek bir dosyayı incelerken kodun neden değiştirildiğini anlamaya çalışırken harcadığınız zamandan sonra birkaç işlemden sonra geri alınacak olan kodu incelemek için çok daha az zaman harcamalısınız.

“Sıklıkla” belirsizdir, ancak çekme isteğinin son revizyonuna giden yolu bulamayan kodu gözden geçirmek için çok fazla zaman harcıyorsanız, iki teknik kullanabilirsiniz:

  • Tüm taahhütleri bir kez hızlıca gözden geçirin, sadece taahhüt mesajlarını okuyun. Bu şekilde, belirli bir taahhüdü incelerken, daha sonra bir yerde bir taahhüt mesajının baktığınız değişikliğin geri alındığını söylediğini hatırlayabilirsiniz.

  • Dosyanın en son sürümünü yan yana görebilirsiniz (birçok durumda büyük taahhütler için (1) dosyalar kökten farklı olabilir ve (2) dosyalar yeniden adlandırılabilir veya büyük kod blokları başka bir yere taşınarak eşleşen dosyayı bulmayı zorlaştırır).

  • Komisyon üyelerinden mantıklı olduklarında taahhütleri ezmelerini isteyin ya da bir taahhüdün bir başkasının bir kısmını geri aldığı belirli bir taahhüt mesajı sözleşmesine sahip olun ve gözden geçirmenizi aşağıdaki birkaç taahhüdü dikkate alarak yapın.


¹ Örneğin, bazı değişkenlerin yeniden adlandırıldığı bir dosyaya baktığınızı düşünün. Bu sana ne söylüyor? Bu değişikliği nasıl gözden geçirmelisiniz? Ancak, kesinleştirme taahhüdünü gözden geçiriyor olsaydınız, tek bir kesinliğin yirmi dosyada aynı değişkeni yeniden adlandırdığını görürsünüz ve yorum, uygun iş terimini kullanmak için adın değiştirildiğini gösterir. Bu değişiklik mükemmel bir anlam ifade ediyor ve gözden geçirilmesi mümkün.


1
@ JörgWMittag: Yorumunuz için teşekkür ederim. OP, güncel olmayan değişiklikler göreceği için kesin olmayan incelemeler yapmak istemediğini iddia etti, bu doğru, ancak dosya başına inceleme ile ilgili tüm sorunlara sahip olmak kadar sorunlu olmamalı. Cevabım belirsiz olduğu için özellikle bu noktaya değinmek için bir bölüm ekledim.
Arseni Mourzenko

2

Çekme isteklerinin gözden geçirilmesiyle ne yapmaya çalıştığınızı düşünün ve bir alternatif olup olmadığını görün.

Örneğin,

  • Standartlara uyulduğundan emin olun
  • Çek işlevselliği doğru
  • Kodu birden fazla kişinin anladığından emin olun
  • Gençler yetiştirmek

vs vs.

Bunlardan bazıları başka şeyler tarafından daha iyi hizmet edilebilir ve hatta nedenlerini anlamak bile çeklerinizin kapsamını sınırlamanıza izin verir.

Örneğin, eğitim için değişiklikleri önerebilmem ve tartışabilmem için her satırı kontrol edersem, bunu yaşlılar tarafından yapılan büyük bir PR'da atlayabilirim

Kodu anlamak gerekiyorsa, belki büyük özellikleri çift programlama yapmak ve standart bir denetimle kod inceleme sınırlayın.

KG'ye katmanlı bir yaklaşımınız olduğu sürece her halkla ilişkilerde her şeyi kontrol etmeniz gerekmez

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.