Çok fazla zaman ayırma hata ayıklama


24

Dün, yaklaşık 6 hafta boyunca üzerinde çalıştığım (açık ve kapalı) bir Web projesinin v1.0 sürümünü yayınladım. Zamanımın kesin kayıtlarını yapmadım, ancak deneyimlerime göre, programlama harcadığım her zamanın yarısının hata ayıklama geçirdiğini tahmin ediyorum. 15-20 saatlik bir hata ayıklama harcamanın iyi olacağını tahmin ediyorum, bu benim için yeni bir kod yazmak veya daha önce projeyi bitirmek için daha iyi harcanan zamanın değerli olduğunu gösteriyor. Ayrıca özellikle 5 haftada üniversitede birinci sınıf öğrencisi olacağım için yardımcı olmuyor.

Mesele şu ki, tüm zamanlarını ayıklamak için harcadığım için kendimi kötü hissediyorum. Hata ayıklamak için harcadığım zaman, projemi geliştirirken oldukça aptalca hatalar yaptığımı fark etmemi sağladı, düzeltmek için çok fazla zaman harcayan hatalar oldu.

Bunun gelecekte olmasını nasıl önleyebilirim? Zamanımın% 50'sini hata ayıklamakla geçirmek istemiyorum,% 10'unu ayıklamak ve geri kalanını yeni kod yazmakla harcamak istiyorum. Bu hedefe ulaşmama yardımcı olmak için deneyebileceğim bazı teknikler nelerdir?


22
Ben birinci sınıftayken de yavaş bir kodlayıcıydım. Sadece 20 yıl ver.
İş

27
evet, sana iyi şanslar. "Eğer hata ayıklama, hataları giderme işlemi ise. O zaman programlama onları yerleştirme süreci olmalıdır." -Edsger Dijkstra
Matt

7
Bu hatalardan bir şey öğrendin mi? Yaptıysanız, bir dahaki sefere onları yapmazsınız ve bu hata ayıklama sürenizi azaltır.
Craig T

5
Buna "deneyim" denir ve bir sonraki projenizde size yardımcı olacaktır .

4
1940'ların sonlarından bahseden Maurice Wilkes şöyle yazdı: “Programlamaya başlar başlamaz, sürpriz yaptığımız programları doğru düşündüğümüz gibi almanın kolay olmadığını belirledik. Hata ayıklamanın keşfedilmesi gerekiyordu. EDSAC odası ile “merdivenlerin açılarından tereddüt eden delme ekipmanı” arasındaki yolculuğumun gerçekleşmesi, hayatımın geri kalanının iyi bir kısmının kendi programlarımda hatalar bulmak için harcanacağını tam bir güçle karşıladı. ”
Trevor Powell

Yanıtlar:


35

Yazılım mühendisliğinin Kutsal Kase'sini soruyorsunuz ve henüz kimsenin bu sorunun cevabını "henüz" bilmiyor.

Önemli olan, yaptığınız hata türlerini izlemeniz ve ardından ortak bir eğilim olup olmadığını belirlemek için bu hataların bir analizini yapmanızdır. Kök neden analizi bu tür bir iç gözlemin resmi adıdır ve web üzerinde bununla ilgili çok fazla materyal vardır.

Profesyoneller bir hata takip sistemi kullanırlar, böylece (1) neyin düzeltilmesi gerektiğini bilirler, (2) olaydan sonra neyin düzeltilmesi gerektiğini analiz ederler. Resmi olmanıza gerek yok - not defterinde bir taksit tutmak sadece sizin için iyi olabilir.

Tasarım Aşaması Hataları

Hatalarınızın çoğunun sorun bildiriminin yanlış anlaşılmasından kaynaklandığını tespit ederseniz veya sorunların çözümünde izlenmesi için yanlış algoritmayı veya yolu seçtiğinizi sürdürürseniz, tasarım aşamasında sorunlarınız olur.

Projenin başlangıcında daha fazla zaman ayırmanız ve tam olarak ne yapılması gerektiğini ve nasıl yapması gerektiğini yazmanız iyi olacaktır. Bu çalışmayı dikkatlice gözden geçirin ve asıl problemi tekrar gözden geçirin ve doğru şekilde ele alıp almadığınızı belirleyin. Başlangıçta fazladan bir veya üç saat, yolun aşağısında sizi saatlerce koruyabilir.

Kodlama Hataları

Tasarımınız sağlamsa, ancak kodladığınız dille sürekli olarak savaşıyorsanız, kendinize kodunuzu analiz edecek ve sizi erken ve sıklıkla hata yaptığınız konusunda uyaracak bazı araçlar edinin.

C dilinde programlama yapıyorsanız, tüm derleyici uyarılarını açın, benzer bir anlam denetleyicisi lintkullanın ve valgrindgenel dinamik bellekle ilgili sorunları yakalamak için bir araç kullanın .

Eğer Perl programlama yapıyorsanız, açmak strictve warningsne yazdığını ve heed.

Hangi dili kullanıyor olursanız olun, hata ayıklama aşamasına gelmeden çok önce yaygın hataları yakalamanıza yardımcı olacak birçok araç vardır.

Entegrasyon Aşaması Hataları

İyi modülerlik uygulamalarından sonra kodunuzu geliştirirken, ayrı parçaları birbirine yapıştırmaya başlamanız gerekir. Örneğin, kodunuzun farklı bölümleri kullanıcı girişi, veritabanı etkileşimi, veri görüntüleme, algoritmalar / mantık ile ilgili olabilir ve bunların her biri birbirinden göreceli olarak bağımsız inşa edilmiştir (yani, eldeki bölüme konsantre olma eğilimindedir). her şeyle entegrasyon hakkında endişelenmek yerine).

Test güdümlü geliştirme (TDD) çok kullanışlı geliyor burada. Kodunuzun her modülü nasıl tasarlandıklarına göre çalıştıklarını doğrulayan testlere sahip olabilir. Bu testler işlemin başında veya çok erken yazılmalıdır, böylece sizi dürüst tutacak bir dizi "yardımcı" alabilirsiniz. Her şeyin birlikte çalışmasını sağlamaya başladığınızda ve bunun veya bunun nasıl uygulandığını değiştirmek veya başka bir alt sistemle etkileşime girmek zorunda kaldığınızı fark ettiğinizde, yaptığınız şeyi yaptığınızdan emin olmak için testlerinize geri dönebilirsiniz. hepsi birlikte çalışmak kodun doğruluğunu kırmaz.

Ve bunun gibi...

Yazılım mühendisliği ve pratik kodlama teknikleri ile ilgili bazı kitaplar edinin; böylece gelişimi daha az kaotik ve daha güvenilir hale getirmenin birçok farklı yolunu öğreneceksiniz. Ayrıca, sadece eski tecrübenin - sert vuruş okulundan bir derece kazanmanız - sizi de forma sokacağını göreceksiniz.

Neredeyse her şeyin kaynaştığı şey, biraz zaman ve açık sözlü çalışmanın, daha sonra geliştirme / bırakma sürecinde büyük kâr payları ile karşılanmasıdır.

Bu sorunları kariyerinizde çok erken fark ettiğiniz gerçeği geleceğiniz için iyi konuşuyor ve size başarılar diliyorum.


1
Bu harika bir cevap ama IMHO den ustaca farklı bir soruya. OP, 6 hafta boyunca bir şeyler yazmak için harcadığımı ve hata ayıklamak için çok zaman harcadığımı söylüyor. Ürününün kalitesi, bakımı, ölçeklenebilirliği hakkında henüz hiçbir şey bilmiyoruz. TDD'yi, iyi tasarımı, hata izlemeyi varsayarsak, daha az hatayla nasıl kod yazdığımızı (hata ayıklanması gereken test kodunu da içeren) nasıl hâlâ sorunum var. Uyarıları açmak, tiftik kullanmak, vb. İyi önerilerdir. Sert vuruş okulundan daha mı fazla? :-)
Guy Sirton

1
@Guy - Evet ... OP'nin sorusu biraz belirsizdi, bu yüzden kök sebep analizine önem verdim. Neyin yanlış olduğunu bilene kadar neyin yanlış olduğunu bilmiyorsun. Sorunlu alanları araştırmamın nedeni, onun birçok potansiyel tehlikenin farkında olmasını istemem ve sürecin her aşamasının kendi incelemesini hak etmesidir. Bildiğim kadarıyla, bir sonraki Tony Hoare olabilir, ama kör bir filin yazma becerisine sahip olan biri - farklı nedenler için farklı düzeltmeler.
unpythonic

37

Birim Testleri Yaz

Kodunuz için birim testleri yazmak, mimarlığınızı düşünmeye zorlar ve kodunuzu küçük, dikkatli bir şekilde kontrol edilebilir, test edilebilir parçalar halinde yazmaya teşvik eder. Bu, hata ayıklama çabalarınızı büyük ölçüde azaltır ve yaptığınız küçük hata ayıklama miktarı küçük, sıkıca odaklanmış kod parçalarıyla sınırlandırılır.

Ek olarak, yazdığınız testler kodunuzu "kapsayacak"; Kodda yaptığınız bir değişikliğin ne zaman bir şeyi kırdığını anlatabileceksiniz, çünkü mevcut testlerinizden biri veya daha fazlası başarısız olacaktır. Bu, hata ayıklama çabanızın genel karmaşıklığını azaltır ve kodun çalıştığına dair güveninizi artırır.

Tabii ki, yakalamak, hata ayıklama harcanan zaman şimdi test yazma harcanan olmasıdır. Ancak, onları yalnızca bir kez yazmanız gerekir ve bunları yazdıktan sonra gerektiği kadar uygulanabilir.


Birim testleri için +1 - gelişim sürecinde böceklerin daha ucuz ve daha kolay çözülmeleri daha kolay yakalanır.
Paul R

26

Hata ayıklama için% 50 (geniş anlamda) o kadar da kötü değil. İnsanlar genellikle, gerçek kodu yazdığınızdan, tasarlamak, test etmek, hataları düzeltmek, yeniden düzenlemek ve birim testleri yazmak için çok daha fazla zaman harcarlar. İşin bir parçası.

Ve dürüst olmak gerekirse, bakım programlamasında çok daha kötü - çoğu zaman, tam olarak neyin yanlış gittiğini bulmak için bir saatimi harcadım, daha sonra beş dakikayı düzeltmek için kod yazarak ve sonra her şeyi test etmek için yarım saatimi harcadım. Kodlama işleminin neredeyse% 5'i, neredeyse% 95'i kodlamaması.

Ancak hata ayıklama süresini azaltmak için yapabileceğiniz birkaç şey var:

  • Hata ayıklanabilir kodunu yazın . Bu, şu anlama gelir: uygun hata yönetimi (içine bazı düşünceler dahil edilmiş), kodunuzu izlemenizi kolaylaştıracak şekilde yapılandırarak, iddiaları, izlerini ve hata ayıklayıcının ömrünü kolaylaştıracak her şeyi yapabilir. Karmaşık çizgilerden kaçının; Birden fazla şey yapan bir çizgi bölünmeli, böylelikle içlerinden tek tek geçebilirsiniz.
  • Test edilebilir kod yazın . Kodunuzu basit fonksiyonlara ayırın (veya tercih ettiğiniz dil ne destekliyorsa); ünite testlerinde yakalanması zor olduğundan yan etkileri önleyin. İşlevlerinizi, yalıtımlı olarak çalıştırılabilecekleri şekilde tasarlayın. Çok amaçlı işlevlerden kaçının. Kenar davalarından kaçının. Fonksiyonlarınızın ne yapması gerektiğini belgeleyin.
  • Testleri yaz . Birim testlerinin yapılması, işlevlerinizin girdilerinin en azından bir alt kümesi için çalıştığını bildiğiniz anlamına gelir; Ayrıca, değişikliklerinizi hiçbir şeyi bozmadığını doğrulamak için bir sağlık kontrolünüz olduğu anlamına gelir. Ünite testinin sınırlarının yanı sıra kod kapsamı ve giriş kapsamı kavramlarını anladığınızdan emin olun.
  • Bir 'tezgah' ayarlayın . Bunu tam olarak nasıl yaptığınız, söz konusu dile bağlıdır. Python veya Haskell gibi bazı diller etkileşimli bir tercüman ile gelir ve mevcut kodunuzu onunla oynamak için yükleyebilirsiniz. Bu mükemmel, çünkü işlevlerinizi istediğiniz herhangi bir bağlamda, en az çabayla - hataları bulmak ve izole etmek için paha biçilmez bir araç olarak çağırabilirsiniz. Diğer dillerde bu lüks yoktur ve küçük etkileşimli test programları yazmaya başvurmanız gerekir.
  • Okunabilir kod yazın . Niyetinizi mümkün olduğu kadar net bir şekilde ifade etmek için kodunuzu yazmayı alışkanlık haline getirin. Tamamen açık olmayan her şeyi belgeleyin.
  • Basit kod yaz . Eğer kendi beyniniz tüm kod tabanını anlamakta zorluk çekiyorsa, o zaman basit değildir ve başka birisinin tam olarak anlayabilmesi pek olası değildir. Ne yapması gerektiğini anlamadığınız sürece kodu etkin bir şekilde ayıklayamazsınız.
  • 'Sil' düğmesine basıldığında kolay olun . Şu anda ihtiyacınız olmayan herhangi bir kod çöp kutusuna aittir. Daha sonra ihtiyacınız olursa, kaynak kontrolünden canlandırın (deneyim bunun son derece nadir olduğunu gösterir). Ne kadar çok imha ederseniz, hata ayıklama yüzeyiniz o kadar küçük olur.
  • Refactor erken ve sık sık. Yeniden yönlendirme yapmadan, yeni özellikler eklerken kodunuzu hata ayıklanabilir bir durumda tutamazsınız.

1
Ayrıca dünya problem durumunda beklediğinizden farklı davranabilir. Bu çok ince böceklere neden olabilir.

2
+1. Hata ayıklama çabalarına yalnızca% 50 harcanmanın oldukça düşük olduğunu söyleyebilirim, özellikle de yerleşik bir kod tabanında değil. Eğer bir hata atanırsa, kodun ilgili bölümlerinin tam bir yeniden yazılmasını gerektirmediği sürece (muhtemel olmayan) Toplam sürenin o kadar büyük bir kısmını sadece neyin yanlış gittiğini bulmak, sonra düzeltmeyi test etmek için harcayabilirim. Düzeltmenin kendisi genellikle hızlıdır, çoğu zaman yalnızca bir veya birkaç satır değiştirilmiş kod tutarıdır.
CVn

@ ThorbjørnRavnAndersen Cehennem evet, özellikle OP'den bahsettiği gibi Web projeleri ile. Biz yapıyoruz harika ... işte bu hafta karakter kodlamaları ile zaman
Izkata

5

Daha fazla planlama

Hata ayıklamak için iyi bir zaman harcamanız kaçınılmazdır,% 10 oldukça iddialı bir hedef. Her ne kadar hata ayıklamak ve geliştirmek için harcanan zamanı azaltmanın en iyi yollarından biri planlama aşamasında daha fazla zaman harcamak olsa da.

Bu, diyagramlardan, bir planlama panelindeki sözde koda kadar değişebilir. Her iki durumda da, geliştirme sırasında bu hataları yapmak yerine, planlamanızın ne olduğuna değinmek için daha fazla zamanınız olacak.


1
+1 çünkü hata ayıklama süremi azaltmak için bunu yapıyorum. Ben yeni bir proje başlatmak, ben o zaman, yorumlarında yapacağım her şeyi yazma geri dönüp koduyla yorum değiştirin
CamelBlues

Aynı şeyi yorumlarla yapıyorum, bu yüzden bıraktığım yeri unutmamı engellemek için daha fazla Ancak kağıda sınıf diyagramları çizmeyi ve bağımlılıklarını seviyorum. Bu bana o zaman ne düşündüğüm hakkında iyi bir fikir veriyor.
Bryan Harrington,

5

Daha dikkatli çalış

Bu "bir kez iki kez kes ölç" yazısının eşdeğeridir:

  • Dikkatiniz dağılmış ya da yorgun hissediyorsanız kod yazmayın.
  • Temiz ve şık bir çözüme sahip olmak için problemi düşünmek için yeterince zaman harcayın. Basit çözümlerin problem yaşama olasılığı daha düşüktür.
  • Tüm dikkatinizi bu göreve verin. Odak.
  • Hata aramaya çalışmak için kodlamadan hemen sonra kodunuzu okuyun. Öz kod incelemesi.
  • Kodlama ve test arasında çok fazla beklemeyin. Acil geri bildirim iyileştirme için önemlidir.
  • Genellikle hatalara neden olan şeyler yapmaktan kaçının. Okuma kodu kokuyor .
  • İş için doğru araçları seçin.

Bütün bunlar, hiçbir şeyin kusurları tamamen ortadan kaldırmayacağını söyledi. Bunu bir yaşam gerçeği olarak kabul etmeniz gerekiyor. Bu gerçekler göz önüne alındığında kusurlar, örneğin birim testi. Ayrıca bunu “sonsuza dek sür” (yani analiz-felç) anlamına gelmez. Bu denge bulmakla ilgili.


4

Diğer cevaplar, söylemek istediklerimin çoğunu zaten kapsıyor, ancak yine de size (vahşice dürüst) görüşümü vermek istiyorum:

Temel olarak, önemsiz olmayan yazılım çalışması için, zamanınızın büyük çoğunluğunu bakım ve hata ayıklama için harcamayı bekleyin. Olgun bir üretim yazılımı sistemi üzerinde çalışıyorsanız ve zamanınızın% 80-90'ından daha azını bakım ve hata ayıklama için harcıyorsanız, iyi gidiyorsunuz!

Açıkçası, "bakım" ve "hata ayıklama" arasındaki ayrım biraz özneldir. Yalnızca "hataların" yayımlandıktan ve kullanıcıların onlardan şikayetçi olduktan sonra bulunan kodla ilgili bir sorun olduğunu mu düşünüyorsunuz? Yoksa bir şey ekledikten sonra kodunuzla ilgili yanlış giden her küçük şey (kendi yayın öncesi test aşamalarınızda bulunur)? Önemsiz olmayan bir yazılım sisteminde (kullanım modellerine bağlı olarak) biri diğerinden çok daha büyük olabilir. Ancak, her durumda, oyuncak "Merhaba dünya" programından daha büyük bir şeyin programlanmasının nedeni budur - çok fazla bakım ve hata ayıklama. Hatta bazı insanlar " ilk kod satırından sonra her şeyin" bakım modu "olması beklenmeli

TL; DR: Basitçe bana gelince önemsiz olmayan yazılım sistemlerinin nasıl bir programladığına dair gerçekçi olmayan bir resme sahip olabilirsiniz. Çabaların büyük çoğunluğu ince toparlama, bakım, yeniden yakma, hataların giderilmesi ve genel olarak "hata ayıklama" (bakım) altında yapılacak işleri yapmakta (en azından çok genel anlamda) tamamen yeni bir iş yapmak yerine, yeni kod yazıyor.


2

Ne yaptığınız ve hangi teknolojileri kullandığınız konusunda özel detaylar olmadan özel teknikler vermek zor. Fakat gerçekten iyi kodlayıcılar bile test ve hata ayıklama için çok zaman harcıyor.

Çok fazla hata olmadan iyi kod yazma deneyimi. Hata yaparsınız, sonra düzeltirsiniz, daha sonra hataların ne olduğunu ve bunları doğru yapmak için ne yapmak zorunda kaldığınızı hatırlarsınız ve bir dahaki sefere aynı hatayı yapmazsınız. Ve daha kolejde bile değilseniz ve daha az hata yapmanın yolları hakkında ciddi olarak düşünmeye başlıyorsanız, kesinlikle oyunun önünde olduğunuzu söyleyebilirim.


1
Hatalarından ders almayanları gördüğüm insanları şaşırtıyor (ya da öğrendiklerini hatırlamaya çalışmaktan rahatsız ediyor). Ve bir şey suratına büyük bir şekilde patladıktan hemen sonra arkasına döner ve bir sonraki projede aynı şeyi yaparlar.
HLGEM


1

Gerçekten, hata ayıklamayı azaltmak için daha derinlemesine planlayarak önden yükleyebilirsiniz. Daha üniversiteye gitmedin mi? Sanırım ortaokul-geç kolej sınıflarında göreceksiniz ki, çok iyi bir şekilde folilerinize ışık tutabilecek yazılım geliştirme yaşam döngüsünün ayrıntılarını ele alacaksınız.

İşverenime açıklamaya çalıştığımda, kod bakımını ve teknik desteği azaltmanın en iyi yolu, kodunuzu önceden kapsamlı bir şekilde planlamak için zaman harcamaktır.


1

Test odaklı geliştirme , hata ayıklama süresinin azaltılmasına yardımcı olabilir:

  • çok sayıda küçük, odaklanmış testin olması, birisinin başarısız olması durumunda, soruna neden olabilecek sadece küçük bir kod miktarı olduğu anlamına gelir.
  • Küçük adımlarla çalışmak (başarısız bir test yazarak ve ardından başarılı kılmakla), aynı anda bir göreve odaklanabildiğiniz anlamına gelir. Bu, şu anki testi geçmiş yapmaktır.
  • Bir test geçişi yaptıktan sonra yeniden yapılanma, kodunuzu açık ve anlaşılır tutmaya teşvik eder - sorun yaşanması durumunda takip etmenizi kolaylaştırır.

TDD kullanıyor olsanız bile, hata ayıklayıcısını kullanmanız gerektiğinde hala zamanınız olur. Bu olduğunda, hata ayıklama oturumuna neden olan senaryoyu yeniden oluşturmak için bir birim testi yazmaya çalışmalısınız. Bu, eğer bu sorun tekrar ortaya çıkarsa, test başarısız olduğunda hızlıca yakalanacağını ve testin, soruna neden olan kod alanı için bir işaretleyici olarak işlev görmesini ve hata ayıklama ihtiyacını azaltmasını sağlayacaktır.


1

Programlamada hata ayıklama kaçınılmazdır, ancak buradaki anahtar kodunuzun hata ayıklaması kolay mı değil mi? Sadece basit bir şeyi ayıklamak için saat harcamanız gerekiyorsa, kod mimarinizde gerçekten yanlış bir şey olmalı.

Temiz kod yazmaya alışmalı ve kopya yapıştırma kodu ve uzun yöntemler yazma vb. Gibi kötü alışkanlıkları gidermelisiniz.

Ayrıca, zaman zaman kodunuzu tekrar gözden geçirmelisiniz. Martin Fowler'in kitabını okumanı öneririm: Yeniden düzenleme: Mevcut Kod Tasarımını Geliştirme


1

Diğerleri test ve kod incelemesinden bahsetti. Bunların her ikisi de son derece yararlıdır ancak önemli bir farkı vardır - bunları gerçekleştirmek için en iyisidir. Test, kodun orijinaline yazmaya çok yakın bir yerde yapılır, bu nedenle, işleri neden belirli bir şekilde yaptığınızı daha kolay hatırlayabilir ve test başarısız olduğunda sorunu daha çabuk bulabilirsin. Diğer taraftan, kod incelemesi biraz sonra yapılması daha iyidir. Mükemmel bir hatırlama olmadan koda bakmak zorundasınız, böylece hakkında düşündüğünüz ancak girmediğiniz detayları açıklığa kavuşturmazsınız. Kodunuzun net olmadığı yerleri fark etmek istersiniz. Kodun ne yaptığını anlamak zorunda kalmadan birazcık çaba harcamak istiyorsun. Sorunla ilgili edindiğiniz her yeni bilgiyi veya diğer kod veya yeni tekniklerle etkileşimleri uygulayabilmek istiyorsunuz. Temel olarak,

Tüm bunlar yine de sorunuza teğet. Daha az hata ayıklamak için daha az zaman harcamak için, neden en başta hata ayıklamanız gerektiğini anlamanız gerekir. Sorunu yanlış anlamak, araç ve teknolojileriniz hakkındaki bilgileri eksik tutmak ve "gerçek veriler örnek verilerle eşleşmiyor" haline gelmek için sadece sorun türleri farklı şekillerde ortaya çıkacak ve farklı teknik ve uygulama türlerine ihtiyaç duyacak gelecekte.

Yapacağım son nokta deneyim. Bunu elde etmenin kolay bir yolu yok, sadece zamanı koymak zorundasınız. Tecrübe kazandıkça daha az zaman harcayacaksınız çünkü başlangıçta daha iyi kod yazacak, sorunları daha erken fark edecek ve bir sorunun kaynağının ne olabileceği konusunda daha iyi bir sezgi geliştireceksiniz. Devam et, kariyerinde sürekli olarak büyüyeceksin.


0

Yukarıda verilen büyük cevaplar, ancak doğrudan kimseden söz edilmedi

OKUYUN OKUYUN OKUYUN OKU et ve nauseam şirketinde ...

Ne kadar çok bilirseniz, o kadar az şey bilmiyorsunuzdur. Biraz klişe ama yine de temel gerçek.

Yukarıdaki ipuçlarını izledikten ve hataları analitik olarak belgelendikten sonra, sınıflandırmaya çalışın ve ilgili literatürü okuyun.

Tasarım kararı mıydı? Tasarım desenleri hakkında bilgi edinin.

Çerçeve veya dil konusundaki bilgi eksikliği miydi? Şunu kemiklendir!

vb

Bir (canlı) geliştiricinin asla kaçamayacağı iki şey vardır: değişim (BT'deki tek sabit) ve RTFMing ...


0

Birim testleri ve iddialar

Mümkünse, kodunuzu yalıtımlı olarak test edilebilecek küçük parçalara ayırın. Ancak bu her zaman pratik değildir. Bazı işlevsellik parçaları oldukça karmaşık girdilere dayanır. Bazıları, ekrana çizim yapmak gibi otomatik olarak doğrulanamayan bir şey yapar. Bazen determinizm olmama söz konusudur, vb.

İyi birim testleri yazamadığınızda, bir sonraki en iyi şey varsayımdır. Birim testleri önceden belirlenmiş bazı girdiler için doğru cevabı bulup bulmadığınızı kontrol ederken, gerçek dünyadaki girdiler üzerindeki ara adımların sağlamlığını kontrol ettiğinizi iddia eder. Kodunuzda hata varsa, belirsiz bir hata iletisiyle sorun olmaktan çok, sorunun köküne yakın ve net bir hata mesajı ile hızlı bir şekilde başarısız olacaktır. Ayrıca, belge varsayımlarını kabul eder ve kodunuzu daha okunabilir hale getirir.


0

Bir projeye başladığınızda, kaç alternatif yaklaşımı tanımlarsınız?

Her biri için artıları ve eksileri olan iki ila dört farklı yaklaşımınız var mı? Daha sonra aralarından mantıklı bir seçim yapar mısın?

O zaman, en önemlisi, basitliği çok önemli olarak ağırlıklandırıyor musunuz?

Sormamın sebebi, benim deneyimlerime göre kod hacminin ve böylelikle hataların (performanstan bahsetmemek) sayısının, bir tasarım yaklaşımı ile bir başkası arasındaki büyüklük sırasından daha fazla değişebileceğidir. Oldukça deneyimli insanların yaptıklarını görmem, gereğinden fazla kodu olmayan işleri yapmak.

Tamamen yetkinler ve tüm veri yapı algoritmalarının, nesne yönelimli dillerin özelliklerinin ve benzerlerinin farkındalar, ancak kodları sanki yok gibi görünüyor , çünkü problemleri dikkatlice kullanıyorlar ya da hiç kullanmıyorlar onları gerektirmez.


0

Bir hatayı her düzeltişinizde, aynı hatayı tekrar yapmaktan kaçınmak istersiniz. Bunu yapmak için aşağıdakileri yapabilirsiniz:

  • Aşağıdakileri içeren bir kusur kayıt günlüğüne yazın :

    • kusur tipi
    • kusurun enjekte edildiği faz
    • kaldırıldığı aşama
    • tamir zamanı
    • sorunun açıklaması ve düzeltilmesi
  • Yazdığınız kod stilini normalleştirmek için bir stil kılavuzu kullanın.

  • Güvenli kodlama kurallarını kod inceleme sürecinize entegre edin

  • Kontrol akışını ve verileri görselleştirin

Referanslar

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.