Kafamda bana atanan üç hatadan fazlasını tutamama normal değil mi, bin satır spagetti kodunu anlayamıyorum?


19

Ben eski bir kod temeli üzerinde çalışıyorum ... mükemmel değil, ya da olmayan bir ortamda. Hayatımda gördüğüm en kötü kod tabanı değil, ama hala birçok sorun var: sıfır birim testleri; bin + kod satırı olan yöntemler; temel nesne yönelimli ilkelerin yanlış anlaşılması; vb.

Kodu korumak acıyor.

  1. Her seferinde yeniden kullanılan değişkenlerle bin satırlık kötü yazılmış bir yöntemde hata ayıklamak zorunda kalsam, tamamen kayboldum.
  2. Bazı değişiklikler veya yeniden düzenleme yaptığım uygulamanın diğer yerlerinde hataları tanıttı.
  3. Herhangi bir belge, test veya gözlemlenebilir bir mimariden yoksun ve kötü adlandırılmış yöntemlerle birleşince, kullanılabilir tüm çalışma belleğimi doldurduğumu hissediyorum. Değiştirmem gereken kodu anlamak için hatırlamak zorunda olduğum tüm diğer şeyler için yer kalmadı.
  4. İşyerindeki sürekli kesintiler beni rahatsız ediyor ve yavaşlatıyor.
  5. Hata izleme sistemi olmadan bir seferde iki veya üçten fazla görevi hatırlayamıyorum ve hafta sonu boyunca hepsini unutuyorum.

Meslektaşlarımın benzer sorunları yok gibi görünüyor.

  1. Kötü yazılmış yöntemleri benden çok daha hızlı hata ayıklamayı başarıyorlar.
  2. Kod temeli değiştirilirken yaptığımdan daha az hata getiriyorlar.
  3. Yirmi farklı dosyada binlerce satır kod okumasını gerektirse bile, kodu değiştirmek için ihtiyaç duydukları her şeyi çok iyi hatırlıyorlar.
  4. E-postalar, zil telefonları, her yerde konuşan insanlar ve onlara sorular soran diğer kişilerden rahatsız görünmüyorlar.
  5. TFS kullandığımızdan beri sahip olduğumuz hata izleme sistemini kullanmak istemiyorlar. Yapmaları gereken her işi hatırlamayı tercih ediyorlar.

Bu neden oluyor? Geliştiriciler uzun süre kötü yazılmış kodla çalışırken edinilen belirli bir beceri mi? Kötü kodla ilgili göreceli eksikliğim bu sorunlara / duygulara katkıda bulunuyor mu? Hafızamla ilgili sorunlarım var mı?


1
İş arkadaşlarınız bu kod tabanı konusunda sizden daha deneyimli mi? Ayrıca, Birim Testleri / hata izleme / vb. Aslında bir ya hep ya hiç yaklaşımı olmak zorunda değildir. Onları sorumlu olduğunuz parçalara uygulamaya başlayın.
Graham

1
Bu yüzden kapsülleme var.
Robert Harvey

Yanıtlar:


26

Evet, yapılandırılmış kişilerin yapılandırılmamış kod / ortamlardan etkilenmesi normaldir. Meslektaşlarınız muhtemelen tüm arka plan gürültüsünü filtreliyor. Bir migren hastası olarak, bir migren ortaya çıktığında çevremi filtreleme yeteneğimin büyük ölçüde düştüğünü biliyorum. İnsanlar farklılık gösterir.

Aynı şey kod için de geçerlidir, iş arkadaşlarınız muhtemelen tek bir yöntemde birden fazla soyutlama seviyesinden gelen "kod gürültüsünü" filtrelemeyi öğrendi ve kodu daha büyük işlevsellik alanlarına "ayırma" konusunda ustalaştı.

Sadece tanımladığınız gibi bir kod tabanına uyum sağlamak zaman alır. Meslektaşlarınız muhtemelen büyümek için çok daha fazla zamana sahipti ve muhtemelen "kod temelli acemiler" in dışına çıkmayan konvansiyonları, kalıpları ve yapıları seçtiler. Kaosta hayal edebileceğinizden daha fazla yapı olabilir. Meslektaşlarınızla konuşun, onlarla bir süre eşleştirmelerini isteyin ve size atanan hataları çözmek için nasıl yaklaştıklarına dair beyinlerini seçmelerini isteyin. Sizden X, Y veya Z ünitesini açmanızı istediklerinde, neden birinin, bunun ilgili olabileceğini söylediği hakkında sorular sorun.

Bin satırlık bir yöntemle kaybolmak normaldir. İyi bir katlama düzenleyicisi ile saldırın ve çeşitli parçaları gerçekten yapmadan işlevlere ve / veya prosedürlere dönüştürmek için yorumlar ekleyin. Bir şeyleri yazdırmak ve eski moda bir vurgulayıcı kullanmak da yardımcı olabilir.

Birim testleri güvenlik ağı olmadan yeniden düzenleme, kendinizi ayağa vuruyor. Yapma. Sadece yapma.

Kimse her şeyi hafızada tutmanızı istemiyor. İş arkadaşlarınız bir hata sistemine sahip olmak istemiyor veya buna ihtiyaç duyuyorsa, size atanan görevi kendi yapılacaklar listenize yazın ve görevlerinizle ilgili ayrıntılar hakkında birisiyle konuşurken / konuştuktan sonra notlar yazın.


+1 "Evet, yapılandırılmış kişilerin yapılandırılmamış kod / ortamlardan etkilenmesi normaldir."
Md Mahbubur Rahman

2

gördüğüm 3 ana nokta var:

puan 1, 2 ve 3, meslektaşlarınızın kod tabanıyla daha deneyimli olmalarından kaynaklanmaktadır, bu da tuhaflıklarını bildiği anlamına gelir. Bu, uzun süreli belleklerini hata ayıklama işlemi için kullandıkları ve doXYZ'nin aslında UVW yaptığını hatırlayabildiği, ancak asla tarihi nedenlerle yeniden adlandırılmadığı anlamına gelir. Bununla birlikte, kodlamadan birkaç ay geçmesi durumunda acınızı hissetmeye başlayacaklardır.

nokta 4 kesintilere direnmek için, acil olmayan işlerin sizi bölgeden çıkarmasına izin vermeyin , bir kesinti sonrasında tekrar işe girmesi uzun zaman alır; şirketin IM'sini meşgul olarak ayarlayın, sadece kodlamanın uzun bloklarını (tam öğleden sonra) planlamaya çalışın

nokta 5 saniye için şu anda kişisel yapılacaklar listesi olarak üzerinde çalıştığınız hatalarla bir excel sayfası oluşturun (veya IDE'nizdeki görev yönetimi yeteneklerini kullanın), bazı meslektaşlarınızın aynı şeyi yaptığını iddia etmeye hazırım


Önerileriniz için teşekkür ederiz. Not: 5. nokta için, zaten hata izleme sistemi içeren bir ürün olan TFS'ye sahibiz. Bugün onu kullanan tek kişi benim. Şirketin her geliştiricisini bilmiyorum, ancak birkaç tanesinin Excel'de veya basit bir metin belgesinde bile hata listesi olmadığından eminim.
Arseni Mourzenko

2

Bana hafıza sorunları gibi gelmiyor. İş alışkanlıklarınız / eğilimleriniz, karşılaştığınız şeye uygun değil gibi görünüyor ve kendiniz değil meslektaşlarınız hakkında çok fazla düşünüyorsunuz.

  1. Bin satır yöntemi - sadece üzerinde çalışmadıkça herkes kaybolacak. Onu almak veya geri almak daha hızlı olabilirler. Bunu tecrübe dışında değiştiremezsiniz ve belki de o zaman bile değiştiremezsiniz.

  2. Giriş hatalarını yeniden düzenleme, bu her zaman bir risktir. Bunu yapmadan önce neyi değiştirdiğinizi kapsayacak şekilde birim testi geliştirmeyi deneyebilirsiniz, ancak yönetim tarafından izin verilmeyebilir (muhtemelen değil veya zaten yapılır). Ve birim testi sihir değil, hala bir şeyleri özleyebilirler, yine de hataları tanıtabilirsiniz. Muhtemelen onlar yeniden düzenleme yapmıyorlar. Bu (1) 'e geri dönüyor, muhtemelen sadece neyin düzeltilmesi gerektiğine odaklanmaya çalışıyorlar, yani noktaya daha hızlı ulaşıyorlar, ancak daha büyük resmi kaçırıyorlar ve bu bin satır karışıklığındaki bir sonraki şeyi düzeltmek için daha uzun sürecekler.

  3. İşi yapmak için ihtiyacınız olanı oluşturun. Bu bir akış şeması veya başka bir belge oluşturmak anlamına geliyorsa, bunu yapın. İhtiyaç duyup duymadıkları ve oluşturduktan sonra kullanıp kullanmadıkları önemli değildir.

  4. Kesintiler herkesi yavaşlatır. Buna odaklanmak sizi daha da yavaşlatacaktır. Kabul edin ve mümkün olduğunca çabuk oluğa geri dönmeye çalışın.

  5. İki veya üç hatayı akılda tutmak kötü değil, üç veya dört daha iyi olurdu, ancak bunu iyileştirmeye çalışmak yerine vazgeçip not edin. Bir parça kağıt, beyaz tahta, tfs, excel, kelime veya not defteri - sadece yazın. Eminim meslektaşlarınız bunu yapar. Ya o ya da işleri rastgele düzeltmek.

Programlama mükemmel bir hafıza ile ilgili değildir ve dikkat dağıtıcı unsurları görmezden gelmekle ilgili değildir - buna odaklanmak sadece yarattığınız dikkat dağıtıcı unsurlardır.


1

CAVEAT / UPDATE: Aşağıdaki cevabı okuduktan sonra biraz fazla sert olabileceğini hissettim. Niyetim değil, tanımladığınız ortam korkunç ve çoğu insanı etkileyecek (muhtemelen daha iyi programcılar bile acı çekiyor, ancak aynı ortamdaki diğerleriyle karşılaştırılarak "daha iyi"). Cevabım, ortamın değişmeyeceği varsayılarak (olması gerekse bile) sorularınızda noktadan noktaya bir yansımadır.

Tamamen şüpheli cevap:

1) Bu, teknolojinin, uygulamanın korunmasındaki (kötü tasarlanmışsa daha fazla) ve hatta uygulamanın belirli bölümlerindeki deneyime bağlıdır. Ayrıca konsantrasyon problemlerinize de bağlıdır (4 numara)

2) 1 numara ile aynı, ancak farklı bir metrik kullanıyor. Aynı cevap.

3) noteblock ve kalem. Veya bir kelime / excel belgesi. Çözmesi zor değil.

4) bu kişisel bir konsantrasyon meselesidir. Yine de, kendiniz geliştirmenin uygun olup olmadığından emin değilim.

5) bilet sistemi kullanıp kullanmayacağına programcılar tarafından değil proje yöneticisi tarafından karar verilmelidir. Fikrini sor / puanlarını göster. Eğer ona karşı ise, tekrar blok ve kalem.


Birden fazla kesintinin kötü bir çalışma ortamı olduğunu iddia ediyorum. Eğer biraz gürültü varsa, o zaman ele alınmalıdır. E-postalara gelince, onları kapatmayı öğrenin. Diyelim ki, işe başladığınızda, öğle yemeğinden sonra ve e-postanızı kontrol etmek için ayrılmadan önce 10 dakika ayırın. Sizin için kritik bir şey olmadığını bilmiyorsanız, bunları gün boyunca sürekli kontrol etmekten kaçının.
mgw854

@ mgw854 Cevabımı tekrar okudum ve istediğimden biraz daha sert görünebileceğini kabul ediyorum. Her an sorunların sadece OP'nin hatası olduğu ve çevre (hem fiziksel hem de organizasyonel) korkunç göründüğü anlamına gelmiyorum. Oradaki en iyi programcılar için bile, bu sorunların performansta ağır bir darbe aldığından eminim. Ben sadece OP aynı ortamda diğer programcılar ile var gibi hissediyorum "boşluğu" azaltma yolları işaret ediyordu.
SJuan76

0

Daha önce böyle bir durumdan geçtim ve bu deneyime dayanarak, probleminizin hafıza ile ilgili olmadığını ve aklınızda sizi stresli kılan ve odaklanmanızı engelleyen bir şey olduğunu (kesinlikle işle ilgili değil) söyleyebilirim. eldeki görevde%.

Yani ilk adım, masanızdayken zihninizi bu şeylerden temizlemek.

Bu stres de artabilir, çünkü üretkenlik açısından geride kalıyormuş gibi hissedersiniz, bu nedenle iş arkadaşlarınızla konuşmayı deneyin ve onlardan yeniden düzenleme yaklaşımları hakkında ipuçları isteyin.

Sonunda, çözdüğünüz ve / veya şu anda çalıştığınız sorunları yazmak zorundaysanız (karmaşık bir hata izleme sistemi olmak zorunda değildir) bir şeyden emin olmak daha iyidir çünkü % 100 emin olmadığınız halde notlarınızı başınızın üstünden belirtmekten

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.