Komisyonlar arasında çok uzun süre beklediğimde ne yapmalıyım?


100

Ben yaramazdım ... Çok fazla "kovboy kodlaması" yeterli taahhütte bulunmadım. Şimdi, burada çok büyük bir taahhüdüm var. Evet, başından beri uğraşmalıydım, ama şimdi çok geç.

Ne daha iyi?

  1. Değiştirdiğim her şeyi listeleyen çok büyük bir taahhütte bulunun
  2. Dosyalarda birden fazla düzeltme, değişiklik, ek yöntem adı vb. Olduğundan derleme yapamayacak olan daha küçük birimlere ayırmayı deneyin.
  3. Yalnızca uygun taahhütler için dosyaların kısmen geri alınmasını sağlayın, ardından yeni değişiklikleri geri alın.

Not: Şu an itibariyle bu projede çalışan tek programcı benim; Bu yorumların herhangi birine bakacak olan tek kişi benim, en azından daha fazla programcı işe alınana kadar.

Bu arada: SVN ve Subclipse kullanıyorum. Bu değişikliklerden herhangi birini yapmadan önce yeni bir şube oluşturdum.

Daha fazla bilgi : Bu duruma ilk bakışta nasıl girdiğimle ilgili ayrı bir soru sordum: Bir uygulamanın yapıştırıcısını yeniden yazmak için nasıl hazırlanılır


2
Hangi sürüm kontrol programını kullanıyorsunuz? Birçoğunda, düzenlemelerinizi "kalçalar" da, yani bir dosyanın modlarını istediğiniz gibi gruplamanızı ve bir dosyanın modlarını birkaç değişiklik grubuna dağıtmanızı sağlayan değiştirilmiş satır grupları halinde düzenlemenizi sağlayan modüller bulunur. Örneğin, mercurial "raf" uzantısına sahiptir. Elbette, her bir değişiklik grubunun derlenip derlenmediğini kontrol etmelisiniz. Her şeyin zahmete değip değmeyeceği size ve dükkanınıza kalmış.
alexis,

6
En azından şubeye bak, böylece değişikliklerini kaybetmezsin.
Rory Hunter, 15

2
Kendine soruyu sormaya devam edebilir ve daha uzun süre bekleyebilir, ya da aslında yarattığı karışıklıkla uğraşabilir ve başa çıkabilirsiniz ... Ve sonra ... bir daha yapma!
haylem

40
# 1, affetmek için dua et, ve sonra ileri git ve daha fazla günah işlemeyeceğim :)
Peteris

5
Kendinize sormanız gereken en önemli soru şudur: "bunun tekrar olmasını önlemek için kötü alışkanlıklarımı nasıl değiştiririm". Günde en az bir kere değil, daha iyi bir şekilde işlem yapmak için hiçbir neden olmamalıdır .
Doktor Brown

Yanıtlar:


52

Cevap vermek için, gelecekte bu taahhütlerin sonuçlarını nasıl kullanacağınızı kendinize sormalısınız. En yaygın nedenler:

  • Bir hatanın hangi sürümde kullanıldığını görmek için.
  • Belirli bir kod satırının neden mevcut olduğunu görmek için.
  • Başka bir dalda birleşmek için.
  • Bir müşteri veya test edicinin bu sürümde gördüğü bir sorunu gidermek için önceki bir sürümü kontrol edebilmek.
  • Bazı parçaları bir sürümden dahil edebilmek veya hariç tutabilmek.

İlk iki neden, değiştirilen kodun her satırı için eşit derecede geçerli olan bir giriş mesajı oluşturabildiğinizi varsayarak, büyük bir girişle de yapılabilir. Tek programcı sizseniz, daha küçük birlikler sizin birleştirmenizi kolaylaştırmayacaktır. Gönderilmemiş değişikliklerin yalnızca bir kısmıyla bir sürüm yapmayı veya test etmeyi planlamıyorsanız, son iki neden geçerli değildir.

Küçük taahhütler yapmanın başka nedenleri de var, ancak bunlar değişimlerin ortasındayken ve o zaman geçmişte kaldı. Bu nedenler bir hatayı ya da deneysel bir değişikliği geri almayı kolaylaştırıyor ve büyük korkutucu birleşme olmaksızın meslektaşlarınızla eşitlenmeyi kolaylaştırıyor.

Durumunuzu tanımladığınız gibi anladığım kadarıyla, bu noktada taahhüdünüzü bölmenin hiçbir yararı yok gibi görünüyor.


Mükemmel cevap! Küçük işleri yapmadığım için daha az pişmanlık duymama rağmen, mümkün olduğu kadar verimli bir şekilde iyi davranışa geri dönebilmek için ne yapmam gerektiğine dair kendimi daha iyi hissediyorum.
durron597,

1
Başka bir şey hakkında 3 ve 5 sırayla şimdi yapmak herhangi bir iş onları, buna izin olmasıdır olabilir aslında gerek kadar bekleyin ve daha sonra aynı işi yapmak. Gelecekte biraz daha zor olacak, çünkü yaptığınız hafızanız kayboldu. Ama sonra tekrar, muhtemelen asla ihtiyacınız olmayacak.
Steve Jessop

Tecrübelerime göre, kodun neden orada olduğunu bir hikaye anlatmak için sürüm kontrol yorumlarına güvenmek zahmetli ve kırılgandır (örneğin, neden 1 ve 2). Bir şubeyle birlikte SVN kullanıyorsanız, taahhüt tarihi zaten birleştiğinde kaybolur (git gibi daha modern şeylerle daha iyi olursunuz). Yani bunlar IMHO en iyi yorumlarla sunuluyor.
Hans-Peter Störr

1
@hstoerr - Subversion 1.5 veya daha yenisindeyseniz, birleştirme sırasında --reintegrate seçeneğiyle geçmişi koruyabilirsiniz.
Dustin Kendall

1
git add -p buradaki en iyi arkadaşın. Bu özelliğe aşık oldum. Bu şekilde kodlama standart değişikliklerimi ayrı taahhütlerde yapabilir ve ilgili kod değişikliklerini izole edebilirim.
Spidey

39

Sanırım ne yaparsanız yapın derleme yapmayacağınızı bildiğiniz kodları kontrol etmekten kaçının .

Üçüncü seçeneğinizin uygun olduğunu düşünüyorsanız, bu işlemin yapılacağının kesin bir sistem oluşturmayacağından emin olduğunuz sürece, bunu yapmanın iyi bir yolu olabilir. Aksi takdirde, büyük olanı yap. Çirkin, ama basit, çabuk ve bitiyor. İlerlemek, daha sık taahhüt etmek .


Seçenek üç mümkündür ancak son derece zaman alıcı olacaktır. Sanırım ben sadece seçenek 1 yapacağım
durron597

3
Birini "ne yaparlarsa" yapmaktan kaçınmaya zorlayacak bir özellik dalında (veya benzeri) derlenmeyecek veya derlemeyecek olan taahhüt kodunun olumsuz yönleri nelerdir? Gerçekten korkunç herhangi bir komisyonun başkaları tarafından önlenebileceğini hayal ediyorum, bu da ilk etapta onlardan kaçınmamın tek gerçek nedenidir (elbette, taahhütlerin serbest bırakılmamasını varsayarak ).
Kenny Evitt

3
"Derlenmeyecek kod kontrol önlemek" sadece paylaşılan kod tabanı / şube için de geçerlidir. Tek kişilik bir projede veya tek kişilik bir geliştirme dalında, değişikliklerinizi VC'ye eklemenizin daha önemli olduğunu, bu yüzden bir şey kaybetmemeniz gerektiğini düşünüyorum.
Stephen C

3
@StephenC, çünkü git-bisect gibi araçları kırar. Kod her zaman derlerse / çalıştırılırsa ve her zaman derlerse bir regresyon bulmanız gerekiyorsa, sadece ikili arama yapabilirsiniz (kod yığınında gerileme varsa, daraltmak yerine okumak için büyük bir değişiklik bıraktığınızdan bahsetmeyin) aşağı).
Maciej Piechotka

@ MaciejPiechotka - Açıkçası, özel şubelerinizde özel araçlar kullanmanız gerekiyorsa ve bu kodun derlenebilmesi gerekiyorsa, o zaman bunu yapın. Ancak bu tek kişilik bir proje / şube için tipik değildir.
Stephen C

19

Sık, küçük ve anlamlı taahhütler vermenin en önemli nedeni, kodun tarihinin anlaşılmasına yardımcı olmaktır. Özellikle, anlaşılabilir farklılıklar oluşturmak zorsa, kodun nasıl değiştiğini anlamak çok zordur.

Seçenek 1 , yaptığınız değişikliklerin geçmişini engeller, ancak aksi takdirde herhangi bir soruna neden olmaz.

Seçenek 2 , muhtemelen seçenek 1'den biraz daha az bir şekilde yaptığınız değişikliklerin geçmişini engeller, ancak taahhütlerin farklı olduğunu varsayarlar ya da başka bir şekilde bağımsız bir şekilde birleştirilebileceğini varsayarlarsa, kendiniz veya başkaları için başka sorunlara neden olabilir. Bu seçenek 1 yerine tercih edilmesinin güçlü bir pratik nedeni olmadığı sürece, bu ondan daha az idealdir.

Seçenek 3 en iyisidir, diğerleri eşit olmakla birlikte, başka bir yerde tanımladığınız gibi, bunu yapmak "aşırı" miktarlar gerektiriyorsa veya başka önemli maliyetler gerektiriyorsa, bu masrafları beklenen avantajlara göre ölçmeniz gerekir. temizleyici taahhütleri oluşturma.

Sağladığınız bilgilere göre, 1. seçeneği tercih ederim. Belki de değişikliklerinizi yapmanızı isteyen hatırlatıcılar ayarlamalısınız?

Prototip ve Yeniden Yazım

Özellikle tek programcı olma konusundaki notunuz ve nispeten yeni bir kod temeli üzerinde çalıştığınıza dair şüphem ışığında akılda tutulması gereken bir diğer husus, zaman zaman değişiklik yapma konusunda farklı alışkanlıklar geliştirmenin iyi olacağıdır. Var olan kodu korumaya veya genişletmeye karşı yeni kod prototip oluşturuyor. Muhtemelen ikisi arasında çok keskin bir bölünme yoktur, ancak bunun hala yararlı bir ayrım olduğunu düşünüyorum.

Yeni bir kod prototip yaparken, değişikliklerinizi ne zaman, kesinlikle bir branşta, ama belki de ayrı bir projede kaydetmek istediğinizde karar verin. Ya da belki de sadece tamamen dış sürüm kontrolü dışında çalışmak. Bunun yerine, düşündüğünüz çeşitli hipotezlerin veya tasarımların uygulanabilirliği hakkında kanıt toplamaya odaklanabilirsiniz. Genellikle farklı araçlar kullanarak küçük prototipler yazarım, örneğin Visual Studio for C # kodu yerine LINQPad.

Belirli bir hipotezi veya tasarımı onayladığınızda, ana projenizde, ideal olarak bir dalda yeniden yazın ve değişikliklerin doğası hakkında başkalarının (geleceğiniz dahil) anlaşılmasına en iyi yardımcı olacak küçük, anlamlı taahhütler verin. Yapıyorsun


1
İyi cevap; Kenny, prototipleme hakkında daha ayrıntılı bilgi vermek için iyi bir makale veya başka bir bilgi tabanına sahip misiniz? Prototip versiyonum "not defterinde veya beyaz tahtada eskiz"
durron597

@ durron597, kafamın üstünden (hatta aranacak) herhangi bir bağlantı düşünemiyorum. 'Prototipleme' fikrinin yeni olabileceğini bile düşünmediğim yeterince yorumlanmış (ve dinamik olarak derlenmiş) programlama dilleri ile oynadım! Ve o kadar çok C, C ++ ve Java programı yazdım (tekrar tekrar) bunun çok nadir olacağını düşündüm ya da en azından bazıları için yeni.
Kenny Evitt

12

Tek makul cevap bagajı asla kırmamak olsa da , bazen mümkün değildir. Örneğin, çok fazla şey yaparsanız svn kararlılığı kırabilir (belki bir seçenek veya bir özellik, emin değilim). Böyle özel durumlarda, sadece adet olarak kontrol edin. Tek bir programcı olduğunuz için kimseyi rahatsız etmeyecek.

Bu nedenle, seçenek 1'e giderdim. Mümkün değilse seçenek 2'ye.

Seçenek 3 çok çaba gerektirir ve buna değmez.


1
veya derleme yapmayan sürümleri "DOESN'T COMPILE" olarak etiketleyin
ratchet freak

2
@ ratchetfreak: Etiketler bagajda "yorumlar" olarak çalışmadığından SVN'deki bir "etiket" çok yardımcı olmaz sanırım.
Doktor Brown

@DocBrown Bunu taahhüt mesajına eklemek istemiştim
cırcır ucube

5
@ ratchetfreak Bunu "PART X / N: ABC’de kontrol - DOESNT COMPILE"
BЈовић

Seçenek 3 fazla çaba gerektirmez. Başka cevap kullanarak hızlı ve kolayca nasıl yapılacağını açıklar git add --patchve git stash. Durum sadece eski kaynak kontrol araçları ve bilgi nedeniyle zor görünüyor.
Ron MacNeil

7

Dosyalarda birden fazla düzeltme, değişiklik, ek yöntem adı vb. Olduğundan derleme yapamayacak olan daha küçük birimlere ayırmayı deneyin.

Kendimi benzer bir durumda bulduğumda şu tekniği kullandım:

  1. Yalnızca belirli bir özellik ile alakalı kodu ekleyin: git add --patch
  2. Diğer tüm değişiklikleri saklayın: git stash save --keep-index
  3. Testleri çalıştır / derlemeyi dene
  4. Her şey yolunda giderse değişiklik yap, gitme

SVN'ye aşina değilim, bu yüzden bunun sizin durumunuza uygulanabilir olup olmadığını bilmiyorum, ancak temel aynı olmalı - küçük kod bölümlerini ayırın ve ayrı ayrı test edin.


Bunu sevdim ama ne yazık ki yapılacaklar listemdeki pek çok şeyden biri (bir şirketteki tek teknik adam olduğunuzda çok fazla şey var) SVN'den git'e geçmek ve henüz bu konuda henüz bir şey yapmadım. .
durron597,

1
Kullanacak kadar düşük olmadığım için --patch, daha önceki çalışma durumlarına ulaşmak ve bunları işlemek için çeşitli düzenleyici bölmelerde Geri Al'ı kullanıyorum. Sonra bir sonraki işlem için tekrar yaparım. Yapılmayan bir durumda koda küçük eklemeler yapma cazibesi nedeniyle, bu işleme başlamadan önce her zaman bir yedekleme yapıyorum!
joeytwiddle

Git ile aynı zamanda taahhütten önce etkileşimli olarak ekleyebilirsiniz (add -i) ve taahhütlerinizi bağımsız olarak onaylamak için daha sonra şubeye dalın.
riezebosch

3

Seçenek 4 hakkında: Deponuzun şu anki durumunu geçici bir yerde yedekleyin, reponuzu orijinal durumuna geri getirin, yaptığınız tüm değişikliklerin bir listesini yapın (geçici yedeklemeye hala bakabilirsiniz), ardından el ile yeniden uygulayın (ve derleyin ve sınama!) onları ayrı ayrı taahhüt eder.

Bu daha kolay olmalı, çünkü kodu zaten yazdınız, geçici yedeklemenizden hangi parçaları kopyalayıp yapıştıracağınızı bulmak biraz.

Her değişikliği temiz bir şekilde yeniden uyguladığınızda ve böylece taahhütlerin kendine yeten, küçük ve derlendiğinden emin olduktan sonra, geçici yedeklemeyi silebilirsiniz ve her şey neredeyse aynen (taahhütlerin zamanı / tarihi hariç) olacaktır. En başından beri doğru yapsaydın olurdu.


Bu sadece seçenek 3'ü yapmanın bir yoludur. Muhtemelen en iyi yol, doğru, ama yine de oldukça zaman alıcı.
durron597

Büyük bir taahhütte bulunduğumda 149 satır Ekleme / Silme / Gönderme mesajı vardı. Bunu yapmak için en az yarım gün.
durron597,

@ durron597 Katılmıyorum, bunun # 3'ten farklı olduğunu düşünüyorum. 149 satır ile ilgili olarak, net bir taahhüt geçmişine ne kadar değer veriyorsunuz? Yarım gününü harcamakta fayda var mı? Her neyse, diğer yöntemlerin hangi hattın hangi taahhüdün olması gerektiğini bulmasını gerektirmeyeceği için, 149 hattından herhangi bir şekilde geçmek zorunda kalacaksınız. Zamandaki fark az olacaktır.
Superbest

Heh. Versiyon kontrolünü kullanacak kadar deneyimli biriyim, ama kıçımı kurtarmış olacak kadar tecrübeli değilim :) O yüzden ne demek istediğimi anlıyorsan, bir şeyler yapmak için pratik sebepler hala biraz akademik.
durron597

Tüm depoyu yedeklemek zorunda değilsin . Bir "yedekleme" işlemi yapabilir ve ardından HEAD ile geri alabilirsiniz git reset HEAD~. git reflogDaha sonra ihtiyacın olduğuna karar verirsen , taahhüdün devam edecek . Sıfırlama işlemini yapmadan önce, "yedeklemeye" bir ad vermesi için bir şubeyi bile çatallayabilir (ve ardından çalışma koluna geri dönebilirsiniz). İhtiyacınız yoksa şubeyi daha sonra silin. Düzenleme: Üzgünüm OP svn açık olduğunu fark etmedi!
joeytwiddle

3

Tek programcı sensin; Sadece yaptığınız işin önemli parçalarını ayrıntılandıran tek bir büyük kontrol yapın.

Yaptığın şeylerin "parçalarını" geri alma ihtimalin var mı? Değilse, kesinlikle seçenek 1 ile devam edin.

Bir sürüm kontrol sistemine kodu kontrol etmenin birkaç nedeni vardır. Bunların hepsi, tek geliştirici olduğunuzda, güvenlik etrafında döner - yani, batırırsanız, makine ölür veya her neyse, her zaman bu son kontrol noktasına geri dönebilirsiniz.

Projeye daha sonra gelen bir programcının derleme yapmayan bir sürüme geri dönmek istemesi olası değildir. Yani, IMHO, seçenek 2 delilik.

Seçenek 3, böyle bir zaman havuzuna benziyor, patronunuz olsaydınız ve bunu yaparken saatlerinizi boşa harcadığınızı görürsem, zamanınızın değeri hakkında sizinle biraz konuşacağım.

Yinelemek için: Kodunuzdan kontrol ederek makinenizde arıza olması durumunda poponuzu kapatıyor / kurtarıyorsunuz. Her şey, tek kişilik bir takımda, vitrin.


1
Geri alma, küçük taahhütleri kullanmanın tek nedeni değildir. Özellikle iyi bir sebep bile değil. Asıl sebep, değişimin ne zaman ve neden ortaya çıktığını görebilmek ve bilinmeyen kaynaklı bir sorunla karşılaştığınızda sorun gidermeyi kolaylaştırmaktır. Nihayetinde kesinlikle projeye gelen başka bir programcı , en azından ara sıra onu "WTF" ye dönüştüren ve ilk yazıldığı veya en son değiştirildiği yerdeki taahhüdüne geri dönen kod satırlarıyla karşılaşacaktır. Eğer bu taahhüt 500 şeyi değiştiren dev bir taahhüt ise, tarihten faydalı bir bilgi almak mümkün değildir.
Aaron,

Bu arada, bu yüzden Git'i kullanan ekipler genellikle birleştirme işlemlerinden nefret ediyorlar ve bunun yerine yeniden talep ediyorlar / talep ediyorlar; birleştirme kesinti bisectve sık sık sorunları yalıtmak için kullanılan diğer teknikleri, çünkü çok fazla değişiklik büyük bir taahhüt içine girmiştir.
Aaron,

1
Kişisel düzeyde, bir kod tabanını kökten değiştirmeden, büyük bir taahhütte bulunmamanız gerektiğine katılıyorum .. bu noktada zaten dallanmış olmalısınız. Ancak, esasen bağlantısı kesilmiş çalışan ve şimdi doğru olanı yapmaya çalışan tek bir programcı hakkında konuşuyoruz. Bu durumda büyük bir taahhüdün tercih edileceğine inanıyorum.
Mart'ta

1
@Aaronaught 3 ay sonra kendinizin 'başka bir programcı' olabileceğini ekleyeceğim.
Maciej Piechotka

1
Ayrıca, mimari değişimler ya da diğer "yıkıcı" değişiklikler için uygun bir strateji olarak dallanmaya katılmamalıyım. Bu sadece birleştirme çatışmalarının kabusuna ve birleşme sonrası hatalara yol açar. Uzun vadede, büyük değişimi daha küçük, geriye uyumlu değişikliklere bölmenin bir yolunu bulmak ya da en kötü senaryoda, ne Fowler, Humble ve geri kalanlarının Şubeyi kullandıklarını kullanmak çok daha az acı vericidir. Soyutlama ile (aslında hiç bir dal değil). Bu stratejilerin her ikisi de küçük ve odaklanmış taahhütleri ima eder.
Aaron,

2

Benim kuralım: Ciddi bir kod incelemesi olmadan giriş yapmak yok. Kendi başıma değilim, ben kodunu kendim incelemeniz gerekir, ancak edecektir gözden geçirilmelidir. Başka birinin gözden geçiremediği bir miktar kod değişikliğine sahip gibi görünüyorsunuz, bu nedenle kendiniz inceleyemezsiniz (kendi kodunuzu incelemek daha zordur ve daha fazla disiplin gerektirir, çünkü otomatik olarak kendi kodunuzun doğru olduğuna dair yanlış bir varsayımda bulunursunuz ).

Herkesin tamamen kırılmaz kuralı: Asla oluşturmayan bir kodu kontrol etmeyin ve çalışmayan bir kodu kontrol etmekten asla kaçının.

Çözüm: Değiştirilen kodunuzu kopyalayın, orijinal noktaya geri dönün. Her seferinde bir değişikliği orijinal kodla birleştirin, inceleyin, test edin, kontrol edin. Açıkladığınız programlama yöntemiyle, bu tür ciddi hataları bulmak zorundasınız.

Kendinizi iyi programlama alışkanlıkları geliştirmek için iyi bir yoldur.


Bu, mantıksal olarak yukarıdaki Git-temelli cevapla ( git add --patchve git stash) aynı şeydir ve modern DVCS'lerin kolayca idare edebileceği ancak eski sistemler yapamayacağı bir senaryoya güzel bir örnektir.
Ron MacNeil

1

Bence çok fazla endişeleniyorsun. Tek programcıysanız ve üzerinde çalışacağınız belirli bir sayfanız yoksa, o zaman tamamen işiniz tamamen size kalmış demektir. Büyük bir taahhütte bulunduğunuz için kimsenin sizi cezalandırmayacağını farzediyorum. Bu nedenle, karşılaşacağınız tek sorun, taahhütnamedeki bireysel dosya değişikliklerini geri alamamak gibi teknolojik. Şu anda yalnızca repo kontrolünü elinde tuttuğunuzdan, bu da çok büyük bir endişe olmamalıdır.

Pragmatizm ile dogmatizm arasında çizilen bir çizgi var. Yaptıklarınız bir takımda iyi bir fikir olmaz ve muhtemelen ileriye tekrar edilmemelidir, ancak sizin durumunuzda sadece büyük bir taahhütte bulunacağım.


1
Bu, önceki 12
cevapta

-1

Sorun, taahhütler arasındaki uzun gecikmelerde değil, kodu çok uzun bir süre boyunca uyumsuz durumda tutmanızdır. Öncelikle, 'uzun' tanımınız nedir? Bazı insanlar için geçiş durumu için 5 dakika çok fazla, ancak bazıları derleyici çalıştırmayı denemeden kodlarını günlerce parlatabilir.

Aslında önemli değil - önemli olan kodunuzun kontrolünü kaybetmeniz, kodunuzun yönetilemez hale gelmesidir. Bu normaldir, sadece teknolojik borcunuz olduğu ve yeniden yapılanmayı düşünmenin zamanı geldiği anlamına gelir. Yani sinirli misin? Kodunuzu derlemiyorsunuz, ünite testleriniz bile yok mu? Bu durumda refactoring hakkında nasıl düşünebilirsiniz? Telaşa gerek yok. "Kovboy kodunuzu" bitirin ve temizlemeye başlayın. İdeal olarak bazı testler yazmaya çalışın. Bunun için zamanın yok mu? Tamam, küçük geliştirmelerden başlayın.

Bazı değişiklikler test gerektirmez. Değişkenin ismini daha uygun bir şekilde değiştirin, tekrar eden kodu ayrı bir işleve, vb. Taşıyın ... Kodunuz hakkında daha iyi bir fikir edineceksiniz. Bundan sonra daha büyük değişiklikler yapabilirsiniz. Yine, mümkünse testler yazmaya çalışın. Kodunuzu yönetilebilir hale getirin.

Bundan sonra, bir sonraki değişimin sizi "çok uzun" (ne anlama geldiğini) almadığını göreceksiniz.


2
Kodu uzun bir süre boyunca uyumsuz tuttuğunu söylemedi. Depodaki kod uzunca bir süredir değiştirilmemiş, ancak yine de derlenebilir. Çalışma kopyasındaki kod sık sık güncellendi ancak işlenmedi. Sorudaki hiçbir şey kodunun yeniden düzenleme gerektirmeyeceğini önermiyor - "kovboy kodlama" burada gerçek kod kalitesine değil, SCM iş akışına atıfta bulunuyor
Idan Arye,

@IdanArye Asıl sorudan ...Try to break it into smaller commits that likely won't compile...: Kodunuzu taahhüt etmenizi engelleyen bir şey varsa, bu kodun yönetilmesi zordur. "Taahhüt" işinizi sürdürmenin yollarından sadece biridir. Daha aşırı bir durum düşünebiliriz - "kaynak dosyayı kaydetmemi engelleyen bir şey varsa". Öyleyse ne olabilir? Sanırım kendi değişikliklerinden korkuyorsun. Neden olabilir? ...
Anladın

2
Bana göre daha fazla iş yapmasını engelleyen şey tembellikten ibaret değildi.
Idan Arye,

@IdanArye Her sayımda haklısın. Bu artı ayrı bir konu olan yeterli TDD yapmamak.
durron597,

@AlexT, iki hatayı düzelttiğiniz bir senaryo düşünün ve bunlardan biri yeni geliştirilen bir metot gerektirir. Düzgün şekilde işliyor olsaydınız, bir hatayı düzeltir, kabul eder, sonra diğer hatayı düzeltirsiniz. Yapmazsanız, o zaman taahhütte bulunduğunuzda, aynı uygulamada her iki değişikliği de eklemeniz gerekir veya onaylanan sürümün yeni yöntem çağrısına sahip olmaması haricinde, ikinci değişiklik için ilk hata düzeltmesini yapmanız gerekir. derleme yapmaz
durron597,
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.