Eski Yasayı İyileştirme Sorumluluğumuz Var mı?


64

Yazdığım bazı eski kodlara bakıyordum. Çalışıyor, ama harika bir kod değil. Şu anda bildiğimden daha fazla şey biliyorum, o yüzden onu daha iyi hale getirebilirim. Bu mevcut bir proje değil, ama mevcut, çalışıyor, üretim kodu. Geri dönüp geçmişte yazmış olduğumuz kodu iyileştirme sorumluluğumuz var mı, yoksa "kırılmadıysa, düzeltmeyin" şeklindeki doğru tutum mu? Şirketim birkaç yıl önce bir kod inceleme sınıfına sponsor oldu ve en büyük paket servislerden biri, bazen yeterince iyi olmasıydı; Devam et.

Öyleyse, bir noktada yeterince iyi çağırmalı ve devam etmeli mi, yoksa daha iyi olacağını düşündüğünüzde eski kodu geliştirmek için projeleri zorlamaya mı çalışmalısınız?


Bunu kendi zamanında mı yoksa şirketin parasıyla mı yapıyorsun?
JBRWilkinson

42
çoğu yerde ilk sorumluluğunuz şirkete değer katmaktır . Doğrudan alt çizgiye eklemeyen bir şey yapıyorsanız, başka bir şey israf edilir. Eski test edilmiş çalışma kodu test edilmiş çalışma kodudur , sadece altın kaplama alıştırması olarak daha iyi hale getirmek için ona dokunun ve şimdi test edilmemiş ve bu nedenle çalışmayan kod haline gelir , bu da sonuçta alt satırda bir değer yaratmaz.

7
Patronuna ne yapmanı istediğini sor. Büyük ihtimalle yalnız bırakmanız söylenecek. Ayrıca, kod değişiklikleri benim deneyimime göre yalnızca gerçek bir teslimatın parçası olarak yapılmalıdır. Zaman içindeki rastgele değişiklikler, hataların ortaya çıkma olasılığının çok fazla olması nedeniyle, aklınıza yeni gelen değişiklikler olmadığı için düzeltmeniz çok uzun sürüyor.

1
Dokümantasyondaki olası iyileştirmeler hakkında bazı yorumlar ekleyin ve bu konuda bırakın?
James P.,

2
Birim veya regresyon testleri yazın. Kodu değiştirmeyin, ancak kodun aşina olmamasına rağmen birinin daha sonra gelmesini ve gerekli değişiklikleri güvenle yapmasını sağlayın.
James Youngman,

Yanıtlar:


66

Hataları düzeltmek veya özellikler eklemek için bu "eski kod" da değişiklik yapmadığınız sürece, sadece bunun uğruna iyileştirme konusunda canınızı sıkmazdım. Sonunda geliştirmek istiyorsanız, yeniden düzenlemeye başlamadan önce kodu test edecek birim testlerinin yapıldığından emin olun.

Daha iyi uygulamaları öğrenmek için "eski kodu" kullanabilirsiniz. Bunu yaparsanız, yarı zamanlı bir öğrenme deneyimidir ve bu kodun şu anda serbest bırakılmış veya müşteriler / müşteriler tarafından dağıtılanları değiştirmesini beklememelisiniz.


4
Düşündüğüm şey "yazılım çürümesi" ve pragmatik programcılardan kırılan pencere teorisi ve yazılım entropisinin etkileri. pragprog.com/the-pragmatic-programmer/extracts/software-entropy
jmq

5
Zaten çalışan ve üretimde olan kodu yeniden düzenleyerek şirkete değer katmadığınız sürece, "yazılım çürüklüğünü" üstlerinize kaldırmak için gereken süreyi haklı çıkarmak zor olacaktır. Bunu sadece bu kodda aktif olarak çalışacaksanız yapın, aksi takdirde kazanacağınız yeniden düzenleme deneyiminden başka bir faydası olmaz.
Bernard,

11
@jmquigley, yazılım yalnızca kaynak kodu değiştirilirse çürür ve kırık pencereler yalnızca görüldüklerinde etkili olur. Eski bir kod temeli, dokunmaya gerek yoksa, ortamı izin verdiği sürece aynı şekilde çalışacaktır.
Péter Török,


4
Bence 'rot' kodu talihsiz bir metafor. kod çürümez, eğer hiçbir şey yapmazsanız hiç değişmez. bir şey varsa, kod çalışması sertleşir - çalışırken entropiyi tanıtırsınız ve bu entropiyi, yeniden yapılandırmak için (yeniden yağlama / dövme işlemine benzer şekilde) çok fazla enerji harcayarak çıkarabilirsiniz
jk.

32

Refactor en sık değiştirmek istediğiniz kod alanlarını yeniden düzenleyin . Bu bölgeleri sık sık ziyaret ettiğiniz için, yeniden yapılandırma, onları tekrar ziyaret etmeniz gerektiğinde kod ve okunabilirlik hakkındaki bilgilerinizi geliştirir, ancak yeniden inceleme kodunun başka hiç kimsenin bakmayacağı bir şey yoktur.

Üstelik, yalnızca kod alanlarını değiştirmeniz gerektiğinde onları yeniden yapılandırmanız durumunda, yeniden yapılandırmanızın gerilemeye neden olması durumunda size geçerli bir bahane verir . Tabii ki, yeniden yapılanmalarınızı birim testleriyle örtmeye çalışın, ancak bu her zaman mümkün değildir, özellikle de eski kodla ve büyük yeniden yapılanmaların her seferinde gerileme yaratmasını beklemelisiniz.

Özellikler eklemeniz gerekiyorsa ve tasarımınız sizi yavaşlatıyor veya çoğaltmaya neden oluyorsa, yeniden düzenleyici yapın . Kod tasarladığımda, gelecekte hiçbir zaman tam olarak hangi değişikliklerin gerekli olacağını tahmin etmiyorum. Ancak, yeni özellikler eklediğimde, genellikle paylaşılan kodu yeniden düzenlemeyi bırakıyorum. Zamana, üçüncü bir özellik / yeniden düzenleme döngüsü ekledim, yeniden düzenleme işlemim zaten kendisi için para ödüyor ve paylaşılan kodum oldukça kararlı.

TLDR: Gerektiğinde refraktör, hiçbir zorunluluk yoktur.


'Yeniden düzenlemek bir gerileme neden olur' derken neyi kastettiğinizi daha açıklayabilir misiniz? Yeniden yapılandırmanın amacı, davranışını değiştirmeden yazılımınızın tasarımını geliştirmek mi? Bir örnek verebilir misin?
Manfred

3
@John: Evet, bu yeniden düzenlemenin amacı: kodu geliştirin ancak davranışı koruyun.
Bernard,

@Jevsi olmayan yeniden yapılanma işlemlerinde, özellikle yerinde herhangi bir regresyon testi olmadığında, istemeden davranış değişikliği riski vardır.
Garrett Hall

14

Yaptığın her şeyin bir bedeli var. Programlamak için sınırlı zamanın var. Programlamada yaptığınız her şeye, "Bunu yapmanın faydası nedir?" A bakmalısınız. ve "Başka bir şey yapmanın faydası nedir?"

Fırsat maliyetini hesaba katmazsanız (Başka bir şey yapmanın maliyeti nedir?), Kalite ücretsizdir. Kodunuzu geliştirmek daha iyidir. Bir şey öğreneceksin. Daha iyi çalışacak. Daha fazla satar.

Asıl soru, zamanınızla yapabileceğiniz en iyi şey nedir? Ve sonra takas yaptın.

Yazılımın daha fazlasını satacak mı?

Daha az baş ağrısının desteklenmesine neden olur mu?

Ne öğreneceksin?

Estetik olarak daha hoş olacak mı?

Şöhretinizi artıracak mı?

Kuyruğunuzdaki bu ve diğer etkinlikler için bu soruları (ve sizinle ilgili olan diğer kişileri) isteyin; bu, düzeltmeye değer olup olmadığını yanıtlamaya yardımcı olacaktır. Bu değişimler ekonominin programcılar için önemli olmasının nedenidir. Joel benden önce söyledi ve yaşlı bir akıl hocası Joel'den önce bile bana söyledi.

Veya daha basit bir cevap istiyorsanız kodu düzeltene kadar TV izlemeyi bırakın. :-)


4
Yazılım taşımayan gerçek bir örnekten ödünç almak için, bazı nakliye şirketleri çalışanlara, çeşitli nedenlerden dolayı çalışanlara kulelerini temizlemeleri ve parlatmaları için ödeyeceklerdir, çünkü çoğu zaman sürücülere / operatörlere 'kendi' ünvanıyla gurur duymaları için yardımcı olur, bu nedenle daha iyi özen gösterirler. onunla ve ona daha çok dikkat et; sorunların hızlı ve kolay bir şekilde önlenmesi. Aynı şekilde, eğer yapılacak miller varsa, kamyona binin ve sürün ve birkaç bin milden sonra (kıyıdan sahile gidiyor) temizlemekten endişe edin.
JustinC

@justinC - kesinlikle! Örneğiniz hem başka bir nedeni hem de fırsat maliyetini yansıtıyor.
MathAttack

Maliyet (veya değer , vb.) Gerçekten de doğru cevap için anahtar kelimedir. Aynı zamanda, eski kodlara dokunmak, ne kadar optimize edilmiş gibi gözüktüğü önemli değil, bir şeyleri kırabilir (değeri kaldırır) göz önüne alarak değer katmalıdır.
cregox

6

Bence kendinize kaçırılmış gibi görünen bir soruyu sorarak başlamalısınız. Kod hangi şekilde bozuk? Bu sayede, kendinize gerçekten aşağıdakileri soruyorsunuz:

  • Kod yapması gerekeni yapmıyor mu?
  • Yazılımı sürdürürken kod size sorun yaratıyor mu?
  • Kod tamamen kendi içinde mi?
  • Öngörülebilir bir gelecekte kodu herhangi bir zamanda güncellemek veya değiştirmek için planlarınız var mı?
  • İlgilendiğiniz kodu güncellemek için yapabileceğiniz sağlam bir iş vakası var mı?

Yıllar boyunca öğrendiğim bir şey varsa, bu gerçeği gördükten sonra kendinizi ikinci kez tahmin edemezsiniz. Koddaki bir sorunu her çözdüğünüzde, bir şey öğrenirsiniz ve muhtemelen çözümünüzün (veya benzer bir şeyin) yıllar önce farklı şekilde çözdüğünüz bir soruna daha iyi bir çözüm olabileceğini göreceksiniz. Bu iyi bir şey, çünkü deneyimlerinizden öğrendiğinizi gösteriyor. Ancak asıl soru, daha önce yazdığınız kodun zaman içinde ele alınması zorlaşan eski bir sorun haline gelip gelmediğidir.

Burada gerçekten bahsettiğimiz şey, sizi rahatsız eden kodun bakımı kolay mı yoksa zor mu olduğu ve zaman geçtikçe bu bakımın ne kadar maliyetli olacağıdır. Bu aslında Teknik Borç ile ilgili bir soru ve şimdi biraz cerrahi bakım kullanarak bu borcu ödemeye değer mi, yoksa borcun bir süre daha kaymasına izin verecek kadar küçük mü.

Bunlar, şu andaki ve gelecekteki iş yükünüze karşı gerçekten tartmanız gereken sorulardır ve kaynaklarınızı nereye yatıracağınız ve eski kodunuzun değerli olup olmadığı hakkında daha iyi bir anlayışa sahip olmak için yönetiminiz ve ekibinizle birlikte uzunca tartışılmalıdır. harcamak gerekebilir - hiç değilse. Değişimi sağlamak için iyi bir iş davası açabilirseniz, o zaman elbette yapın, ancak kodla düzeltmek için dürtüyle karşı karşıya kalırsanız, yazdığınız yoldan utandığınızı hissederseniz, eski kodların muhafaza edilmesi söz konusu olduğunda kişisel gurur odasına sahip. Çalışır ya da yapmaz, ya bakımı kolaydır ya da bakımı kolaydır, ve bugünün tecrübesi dün sizin için mevcut değildi çünkü hiçbir zaman iyi ya da kötü değildir.


5

Kesinlikle onu geliştirmek yok sadece onu geliştirmeye uğruna. Diğerlerinin dediği gibi (ve sağduyulu), zaman geçtikçe hepimiz daha iyi oluruz (bir miktar "daha iyi" için). Bununla birlikte, kodun (resmi ya da gayrı resmi olarak) gözden geçirilmesi, sıklıkla, gün ışığını bir daha asla görmemeyi arzu ettiğimiz parçaları ve parçaları aydınlatmaktadır.

Temelde kırılmayan, güvensiz veya kullanımdan kaldırılmış bir / EOL listesindeki özelliklere bağlı olan kodu geri alma ve iyileştirme sorumluluğumuza inanmamasına rağmen , geçmişte bu durumda yaptığım bazı şeyler :

  • Ekipte gerçekten geriye dönüp kod geliştirmeyi kuran insanları, bir beyin temizliği veya hoş, ısırık büyüklüğünde bir başarı hissi veren bir görev olarak tanımlayın ve programda düzenli olarak yapmaları için zaman ayırın. Bir takımda bu tür insanlardan her zaman en az birine sahip oldum ve bu yaklaşım aynı zamanda hepimiz moralsiz veya moralsiz bir dönemdeysek morali de artırabilir.

  • Bir öğrenme alıştırması için temel olarak kullanın. Stajyerler, öğrenciler veya takımın yeni / küçük üyeleri için, eski kodun takımın kıdemli üyelerinden yönlendirilerek yeniden düzenlenmesi, onlara yeni takım üyeleriyle iletişim kurma, sistem hakkında daha fazla bilgi edinme ve yazma alışkanlığı kazanma fırsatı verir. birim testlerinin güncellenmesi ve sürekli entegrasyonla çalışmak. Bu alıştırmanın rehberlikle yapıldığını ve kodu daha iyi hale getirmek için mevcut standartlara / normlara uymadığı için açıkça bir alıştırma olarak çerçevelendirildiğine dikkat etmek önemlidir .

Yani, bunu düzeltmek için sorumluluk yok, ama bu eski şeyler gerçekten yararlı olabilir. Ve birim testleri ve CI senin arkadaşların!


4
Bir acemiye kötü kod verilmesi , proje yönetiminin en kötü anti-paternidir , onu görür ve doğru olduğunu düşünür ve çoğaltır, kötü kod, bunun gibi kötü tavsiyeler nedeniyle bir kanser gibi yayılır.

1
@ JarrodRoberson Daha açık bir şekilde ne yapmam gerektiğini söylediğin için teşekkürler; Bunu, özellikle öğrenme deneyiminin bir parçası olarak yaptığımı ve bir danışmanla çalıştıklarını not etmek için cevabımı düzenlemiştim. Bu, baştan sona bir durum değil.
jcmeloni

Hala insanların “Özellikle de acemilere - stajyerlere ve öğrencilere ver” ifadesiyle ifade edildiğini düşünüyorum . ve orada anlama için okumayı bırak. Üst düzey bir üye ve XP stilini programlayan genç bir çiftle başladığı yerde ya da onun gibi bir şeyle ifade edilmişse, o kadar da kötü olmayabilir. Altın kaplama yönleri ile ilgili problemlerim var ve onları ilk kurşun noktasından değiştirmek adına bir şeyler değiştirme riski de ekledim.

1
Kod incelemeleri, kötü kodun sürüm kontrolüne girmesini engellemek içindir , olaydan sonra zayıf kodu belirlemek için değil, geç saatlere kadar sürmektedir.

@JarrodRoberson Belirsizliğimle ilgili sorunları ve maalesef potansiyel olarak yanıltıcı bir dili işaret ettiğiniz için teşekkür ederiz; Daha fazla düzenleme yaptım ve şu anda orada olanların yanındayım.
jcmeloni

2

Şart değil. Bununla birlikte, kod bakımı yapıyorsanız ve daha iyi olabilecek bir şeyin üzerine yanarsanız, bir regresyon oluşturmadığınızdan emin olmak için uygun birim testlerini yaptırmanız koşuluyla, durumu değiştirebilirsiniz.

Eğer böyle bir test yapılmazsa ve tam olarak olması gerektiği gibi davranacağından emin olamazsanız, yalnız bırakmaktan daha iyi olursunuz.


4
Ben ekleyecektim "ve eğer değişmesi planlanan programa fazla zaman
katmayacak

2

Bir mühendis açısından, daha fazla geliştirilemeyecek hale gelinceye kadar eski kod üzerinde çalışmak istediğimden eminim. Ancak bunun için bir iş davası var mı? Günün sonunda, kod, iş yerinizin kârlılığına, sonuç satırına katkıda bulunmak için var. Değilse, sadece bırakın.

Büyük bir uyarı var, eğer kodu geliştirerek, bir böceğin oluşmasını engelleyecekseniz, (büyük Y2K toplarını burada düşünerek ..) Kesinlikle daha yukarı birisine, belki de işletme müdürünüze getiririm. ve kodu geliştirmenin sonuçlarını tartışır.


2

Bana gelince, soru yeniden ifade edilip genelleştirilebilir: “Bu somut kod parçası şimdi iyi çalışıyorsa, neden birileri daha fazla kaynak harcamalı (zaman, para, zihinsel vb.)? Bu bir kaynak israfı değil mi? ?"

Her zaman eski bir kod bulduğumda, önemli görünen bazı şeyleri düşünüyorum.

  1. Ne için değişiklik yapacağım?
  2. Bu kodu desteklememe gerek var mı? Ne kadar sürede olabilir (yakın / uzak gelecek)?
  3. Bu kod çalışmak için yeterince rahat mı? (Şimdi)
  4. Yaptığım tüm değişikliklerin güvenli olduğundan emin olabilir miyim? Farklı testler genellikle bu soruyu cevaplamaya yardımcı olur.
  5. Kod değişikliği sırasında hata yaparsam hangi sonuçları karşılayabilirim? Değişikliklerimi hızlı bir şekilde geri almak mümkün mü? Bu zaman kaybı olur mu?
  6. ...

Aslında kendine çok soru sormalısın. Bunların tam ve nihai listesi yoktur. Cevapları yalnızca siz ve muhtemelen ekip arkadaşlarınız bulabilir.

PS Kodu çok sık tekrar yazma eğiliminde olduğumu fark ettim, oysa arkadaşım ve takım arkadaşım el değmeden bırakma eğiliminde. Çünkü bu sorulara farklı cevaplar veriyoruz. Ve onlara çok yanlış cevap verdiğimizi söylemeliyim ... çünkü geleceği tahmin edemiyoruz.


2

Microsoft'un pencereleri güncellemesi gerekiyor mu? Tüm * nix Distros'un gelişmeye devam etmesi gerekiyor mu? Veya daha pratik bir örnek, herkes hala 1970'lerin otomobillerini kullanıyor mu?


1

Normalde ikinci kez daha iyi kod yazabilirsiniz; alan adı hakkında başlangıçta yazarak daha fazla şey öğrendiniz.

Yeniden değerlemeye değip değmeyeceği konusunda basit bir cevap yok. Genelde, a) sizin için iyi bir öğrenme alıştırması olmadığı sürece yapmamalısınız veya b) uzun vadede daha iyi kodla zaman kazanacaksınız. Unutmayın ki her değişiklik hatalara yol açar.

Bir yan not olarak, birim testlerini şiddetle savunurum. Özellikle otomatik dinlendirmelerle açıkça belirtilen mevcut bir davranışa sahip değilseniz yeniden taramayı yapmak çok kolaydır.


1

Bugün alabileceğimiz en iyi kodu yazma sorumluluğum olduğuna inanıyorum. Bu, geçmişte öğrendiklerimizi kullanmak ve tasarımımızda kısa yollara girmeyi reddetmek anlamına geliyor. Eğer program baskıları bir şeyin kesilmesine neden olursa, yazılımın kalitesinin bile göz önünde bulundurulması gerektiğine inanmıyorum;

Şimdi çalışıyorsanız ve etkileşime girmeniz gereken kodu şu anda yazabildiğiniz düzeye kadar yazmıyorsa, o zaman kontrollü bir yöntemle yapabiliyorsanız düzeltmeniz makul olacaktır. Ben şahsen (neredeyse herkes?) Herkes gibi (bu şekilde her şeyi değiştirip dua etmesini sağlar) ve yeterince kötü bir şekilde ısırmaya başladım. Martin Fowler'in konuyla ilgili tartışmalarını ( kitabını ya da birçok makalesinden birini ) incelemeyi öneririm . Süreç hakkındaki mevcut düşüncelerin çoğuna ilham vermiş görünüyor.

Elbette bazen kodu istediğiniz gibi temizleyemeyebilirsiniz. Joel Spolsky, kodunuzu yeniden düzenlemek için neden birkaç hafta ayırmak isteyebileceğiniz konusunda bir makale yazdı. Buradan okuyun ve evet, biraz eski, ancak bilgilerin hala alakalı olduğunu düşünüyorum.

umarım bu yardımcı olur


1

Eski kodu yeniden düzenlemenin / iyileştirmenin programcının kendisini tanımladığını hissediyorum. Bir yıl önce yazdığınız kodu geliştirmek istemeniz yalnızca ilerlemenizi gösterir ve uygulamayı daha iyi hale getirirse ve geliştirmek için yeteneğiniz, zamanınız ve onayınız varsa, bunu yapın.


1

Daha iyi / gelişmiş, çok eksenli bir karşılaştırmadır. Daha hızlı, daha küçük, daha kaynak verimli, daha okunaklı, daha faydalı bilgiler, daha kesin sonuçlar, daha esnek, daha genel, daha fazla sistemde çalışabilir, ayrı bir ürüne bağımlılığı ortadan kaldırabileceğinizi düşünüyor musunuz?

Şirketiniz neden yeni kod yazmak veya başka bir kod parçasını yeniden yazmak yerine, bu kodu yeniden yazmak için zaman harcamak zorunda kalıyor?

Fırsatın ortaya koyduğu şekilde iyileştirmeler yapmalısınız, ancak fırsat, ya zaten kod üzerinde çalışıyor olmanız ya da değişikliği yapmak için bir iş nedeni belirlemiş olmanız anlamına gelir.

Üretime bir değişiklik yapmak, sıfır olmayan şeyleri kırma şansını doğurur (ünite ve fonksiyonel testler yalnızca bu şansı azaltır, ortadan kaldırmazlar) ve yalnızca beklenen fayda riski aştığında yapılmalıdır.

Dikkate alınması gereken başka nokta hangisidir - bu değişikliği üretime mi yoksa basitçe geliştirme koluna mı itiyorsunuz? İki senaryo için çubuk tamamen farklıdır. Yalnızca geliştirme dalına giriyorsa ve asla üretime geçemiyorsa, fırsat temel olarak bir nedenden dolayı koda bakıyorsunuz demektir ve bunu yapmak zaman alıcı değildir. Eğer bir itme gerçekleşirse, gerektiği gibi gözden geçirilebilir ve o zaman izinsiz olarak kabul edilirse bırakılabilir . Öte yandan, şimdi üretime gidiyor, yukarıda belirttiğim gibi, bu değişikliğin maliyete değip değmeyeceğini göz önünde bulundurmalısınız: zorlamak için harcanan zaman ve yeni kodu kullanmanın yararları.


Üretime itilmesi amaçlanmayan üretim kodundaki değişiklikler? Ancak kalkınma dalında tutulur? hı. Bunu kabul edeceğimi sanma. Sadece daha sonraki gelişmeleri karmaşıklaştırmaya ve birleştirmeye hizmet edecektir, çünkü hiç kimse, değiştirilmesinin gerekip gerekmediğinden veya üretime yönelik diğer değişikliklere uyulmamasından emin olmayacaktır.
Marjan Venema

@MarjanVenema: Geliştirme durduğunda, tüm dallar aynı olmalıdır. Daha sonra geliştirilebilecek, ancak geliştirilmeyecek bir şey görürseniz, geliştirme dalında geliştirin ve geliştirmenin devam etmesini ve yeni bir adım atılmasını bekleyin.
jmoreno

Ah, tamam anlıyorum. Bana göre bu, daha sonra üretime yönelik olduğu anlamına geliyor. Sorun takip sisteminizde eşlik eden bir sorun olduğundan emin olmadıkça ve bu, test uzmanları / qa departmanının da "iyileştirmeler" inizden etkilenmesini sağlamadığınız sürece oldukça risklidir. Aksi taktirde, diğer değişikliklerle birlikte sürdüğü gibi, denenmemiş üretime gireceklerdir.
Marjan Venema

@MarjanVenema: Belki de hemen üretime itmek niyetinde olduğumu söylemeliydim. Değişimin asla prod'a itilmeyeceğinden eminseniz, değişikliği yapmayın. OTOH ise, kararsızsınızdır, ancak değişiklik kolayca yapılır ve zaten oradasınızdır ... değişikliği yapın. İzleme ve test gelince, bunun "gerektiği gibi gözden geçirilmesi" ile kapsanması gerekiyordu.
jmoreno

hmm, üzerinde çalıştığım şeyle doğrudan ilgili olmadığı sürece değişikliği yapmamayı tercih ederim. Ve, konu başına bir branşımız olduğu için, bir şeyin ne zaman üretileceğini her zaman bilirim. Ayrıca, yapılan herhangi bir değişikliğin test edilmesinin gerekli olduğunu, "sadece" gerektiği gibi gözden geçirilmediğini gerçekten hissediyorum. İnsanların neyi oluşturduğuna dair değerlendirmeleri farklıdır ve ikinci bir göz çifti asla yanaşmaz. Sonra tekrar, çoğunlukla değişikliklerin istemcilere geri döndürülen sonuçları etkileyebileceği sunucu tarafı kodunda çalışıyorum. Müşteri tarafı kodunda yapılan değişiklikler için risk değerlendirmesi muhtemelen çok daha ileri düzeydedir.
Marjan Venema

1

Kuralların iyi bir kuralı, kodun ne yaptığını anlamak için zaman aldıysanız ve bu süre iyi seçilmiş bazı yeniden yapılanmalar tarafından ileri sürülecekse azaltılabilirse, o zaman işin ve ekibinizin ihtiyaçlarına cevap veriyor olmanızdır. bu adımları atıyorum.

Kod, analizinizden fayda sağlamazsa, alan adları kodun amacını açıklamazsa ve yöntemler okunabilir parçalara ayrılmazsa, işletme değerli bir şey kaybetti: anlama durumunuz. Visual Studio ve ReSharper gibi araçlarla, bu tür yeniden yapılandırmalar güvenli, mantık açısından nötr ve gelecekteki geliştirici üretkenliğinde ve güveninde potansiyel olarak büyük değer taşıyor.

Bob Martin Amca'nın dediği gibi, "Kampı her zaman bulduğundan daha temiz bırak."


1

Bu, şirketinizdeki yönetime sormanız gereken bir soru.

Geri dönüp eski kodda değişiklik yapmak için gerekli zamana ve kaynaklara sahip misiniz?

Bir QA ekibinin TEST'inin kırılmadığından emin olmak için neyi değiştirdiğini belirlemek için zamanınız ve kaynaklarınız var mı?

Bir hatayı düzelten bir modülde olacağımdan önce bu tuzağa düştüm ve bir ya da başka birinin yazdığı kodu görmedim ya da inelegant oldum, değiştirdim ve başa çıkmamdan daha fazla sorunla karşılaştım. düzeltmem gereken görevimi.


0

Değişir.

Söz konusu kod gerçekten kırılmışsa, kaçınılmaz olarak bir noktada yüzeye çıkacak hatalar içerecek şekilde (örneğin, bir noktada taşacak ve kötü sorunlara neden olacak bir sayaç), o zaman bunları düzeltmek için çaba gösterebilirsiniz - ama eğer yapın, yeni hatalar ortaya koymaktan kaçınmak için ilk önce olası tüm önlemleri alın: dokunduğunuz her şeyi kapsayan anlamlı birim testleriniz olduğundan emin olun, tüm değişikliklerinizi yetkili bir kişi tarafından gözden geçirin, iyice test etmek için ısrar edin, eskilere geri döndüğünüzden emin olun herhangi bir zamanda sürüm, üretime girmeden önce tüm verileri yedekleyin, önce bir kabul ortamına dağıtın ve gerçek kullanıcılar tarafından test edilmesini sağlayın, vb. Ayrıca, devam etmeden önce onay almak isteyebilirsiniz: hata gerçekten bir saatli bomba ise ve menajerin biraz yetenekli,onu düzeltmenize izin vermesi için ikna edebileceksiniz (ve onay alamazsanız, o zaman belki de bu yanlış olduğunuzu gösteren bir işaret).

OTOH, şikayetiniz sadece kod zarafeti eksikliği ise, o zaman ona dokunmaya cüret etme. Uzun süredir üretimde sadık hizmet veriyordu, kodu değiştirmek sadece sizi tatmin edecek, ancak herhangi bir değer katmayacak ve her değişiklik gibi, bir şeyi bozma riskiniz de var. Bilmeseniz bile, zamanınız değerlidir (kelimenin tam anlamıyla: yaptığınız iş için para alıyorsunuz, bu nedenle zamanınızın her dakikası paraya mal oluyor) ve gerçek bir değer katmadığınızdan, böyle bir değişiklik şirket ve proje için net zarar.

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.