Tüm tuzakları listelemesem de, çoğu zaman, bir soruyu formüle etmek ve kendi kendine yeten bir soruna kutulamak çoğu zaman o kadar çok iş gerektiriyor ki, yeterince hazırladığınızda, kendi sorunuzu daha fazla cevaplamışsınızdır. Aksi takdirde alacağı zaman.
Aynı şeyi, gönderdiğim soruların>% 75'inde yaşıyorum.
Ancak, bunu yapma zahmetine girmeyen bir argüman değildir. Bu etkili bir şekilde lastik ördek hata ayıklamasıdır. Sorunuza cevap verebileceğini düşündüğünüz soruların cevaplarını buluyorsunuz ; bu, sorunu farklı insanların bakış açısıyla düşündüğünüz anlamına gelir; bu, sorunu mümkün olan her yönden düşündüğünüz anlamına gelir; Bu kusur bulmak için en iyi yoldur.
En iyi ihtimalle, kesin olarak burada cevabı düşünemediğinizi kanıtladınız. En kötüsünde, kendi soruna cevap veriyorsun. Alıntılara dikkat et, çünkü bu hiç de fena değil. Belki biraz zaman verimsizdi, ancak sorunu yavaşça çözmek, sorunu çözmemeye karar vermekten daha iyidir . Sonunda sorunu çözme daha hızlı alacaksınız.
Konuşma konusu olan mesele:
Acemi bir geliştiriciyken, ASP.Net eror sayfasını birçok kez ele aldım . Sorunun ne olduğunu bulmak için Google’a mesaj atmam gerekiyordu. doğru çözümü bulmam birkaç saat alabilir. Temel olarak kitaptaki her hatayı yaptım ve daha sonra sorunları ayıklamak zorunda kalmanın sonuçlarını ele aldım.
Şimdi, bir hata ortaya çıktığında, soruna neyin neden olabileceğinin "olağan şüphelilerini" zaten biliyorum. Zihinsel "olağan şüpheliler" listem, kariyerim boyunca en çok yaşadığım sorunlara dayanıyor. İlk önce Googling saatlerinin verimsiz bacak işlerini yapmamış olsaydım, bu zihinsel listeyi asla yapmazdım . Ama şimdi o zihinsel listeye sahibim, sorun giderme konusunda oldukça hızlıyım.
Ayrıca, parmağımı tam olarak tutamazken, özgür konuşmanın yanıtı, düşünebildiğim herhangi bir metinsel internet tartışmasıyla eşleştirilemiyor.
Burada biraz aynı fikirde değilim. İnternet iletişiminin daha az duyarlı olduğu konusunda haklısın, ama (bence) bunun senin için kötü olduğunu düşünüyorum.
Yalnız bir geliştirici olarak, lastik ördek hata ayıklama güveniyor olacaksınız. RDD'nin çalışmasını sağlayan ana unsur , lastik ördeğin sizin için olabilecek soruları önceden tahmin etmenizdir . Belli ki lastik ördeğin gerçekte söylediklerine güvenemezsin.
Yavaş mesajlaşma sistemleriyle (StackOverflow'a gönderme veya mektup yazarak iletişim kurma) uğraşırken, ilk seferinde doğru yaptığınızdan emin olmak için doğal olarak teşvik edilirsiniz. Çünkü bir hatayı düzeltmeye ihtiyaç duymak, yavaş ve zorlu bir süreç olacaktır.
Karşılaştırma yapmak gerekirse, hızlı mesajlaşma sistemlerinin (sohbet, anlık mesajlaşma) hemen bir şeyi düzeltebileceğinizi düşünün . Bir şeyi hızlı bir şekilde düzeltme yeteneği, doğru olduğundan emin olmak için insanları daha az teşvik eder.
Bu noktada dört vaka:
- Bir geliştirici olarak kendi kişisel analiz / yapılacaklar listemi oluştururken hala kalem ve kağıt kullanıyorum. Notlarımı yazarken varsayımları ve yanlışlıkları anlattığımı fark ettim, çünkü aklım "bunu daha sonra kolayca düzeltebileceğimi" düşünüyor. Bununla birlikte, kağıda yazdığınız bir şeyi düzeltmek zorunda kalmak can sıkıcıdır, satırları yazmanız ve çizgiler arasında yazmanız gerekir ve belge üzerinde çiziklerin olduğu zaman çok daha kötü görünür. Kağıda yazmak, yazmayı taahhüt etmeden önce kendimi kontrol etmemi sağlıyor . Bu, böcek üretecek kod bile yazmadan önce, birçok yanlış anlaşılmalara neden oluyor.
- Büyükannem sekreterdi (daktilo yaşı). Resmi bir belgede bir yazım hatası yapmak, tüm sayfayı tekrar yazmak zorunda kalmak anlamına geliyordu. Teyzem sekreterdir (kelime işlemcisinin yaşı). Otomatik bir yazım denetleyicisine güvenebilir ve hatalar kolayca ve en az çabayla düzeltilebilir. Şaşırtıcı olmayan bir şekilde, büyükannem teyzeme kıyasla yazım hatalarını ve yazım hatalarını önemli ölçüde azaltır.
- Kartuşlara yazdırılan eski video oyunları. Serbest bırakıldıktan sonra bir hatayı düzeltmek hemen hemen imkansızdı. Sen, bütün kartuşları yeniden yazdırmak tüm satıcıları onları dağıtmak ve gerekiyordu umut satıcıları nasılsa zaten oyunu aldım müşterileri ile temasa olabilir. Tonlarca paraya mal olacak (fiziksel üretim maliyetinin iki katı) ve hala bazı müşterilere ulaşamayacaktı. Şimdi, internet yamaları çağında, oyun geliştiricileri oyunlarını test etmeye önemli ölçüde daha az yatırım yaptıklarını gösterdiler, böylece piyasaya sürülen günlük hataları önleyebiliyorlardı, çünkü her müşteriye doğrudan bir düzeltme yapmak çok daha kolay. Hata yapmanın etkisi, olası tüm durumları test etmek zorunda kalmaya kıyasla, olaydan sonra bir avuç problemi çözmenin daha iyi olduğu bir noktaya indirgenmiştir. oluşabilecek hatalar.
- Üçüncü kattaki dairede oturuyordum, asansör kullanmıyordum ve binamdan bir ya da iki sokağı sık sık park etmek zorunda kalıyordum. Arabamdan bir şey almayı unutmuşum. Şimdi, arabamın yanında, yanımda arabamla bir evde yaşıyorum. Her zaman arabamdan bir şeyler almayı unuttum .
Buradaki temel fikir, zorlu bir değişim sisteminin insanları doğru ve gerçeği kontrol edilen değiş tokuşlar yapmaya teşvik ettiğidir . Cezanın ciddiyeti (= zor düzeltme işlemi) size hata yapmamayı öğretir.
Ayrıca, iyi tanımlanmış bir soru sormak için ayrıntıları gizlemek, hiç kimsenin düşünmediğiniz sorunları tespit etme ihtimalini ortadan kaldırır.
Bir MCVE yaptığınızda, sadece onu yaratmamalı ve soruya göndermemelisiniz. Sorunu izole edebilmeniz için önce kendiniz için yapmalısınız . Ve sonra, sorunun artık azaltılamayacağını düşündüğünüzde ve nedenini hala göremiyorsunuz; Sonra StackOverflow için geçerli bir sorunuz var.
Konuşma konusu olan mesele:
Her zaman Sandbox adlı basit bir konsol uygulaması ile çalışan ikinci bir Visual Studio'ya sahibim. Ne zaman bir teknik sorunla karşılaştığımda, sorunlu kodu sanal alana kopyalarım ve onunla oynamaya başlarım.
- Bu ayarı değiştirdiğimde ne olur?
- Kodu kısaltırsam sorunu tekrar edebilir miyim?
- Hangi ayarlar sorunu yeniden oluşturmayı mümkün kılar / imkansız kılar?
Vakaların% 90'ında sorunun nedenini buluyorum çünkü sanal alan çevre bağlamdan (veya örneğin, kodun farklı bölümleri için gelen değerler hakkındaki belirsizliklerden rahatsız edilmeden) rahatsız edici koda bakmama yardımcı oldu.
Vakaların diğer% 10'unda, StackOverflow'a gönderilecek mükemmel bir örnek pasajı olan sorunu yeniden oluşturmak için minimum kodla ayrıldım.
Son fakat en az değil, tüm sebeplerimi dünyanın sonsuzluğa bakması için tüm projemi göndermek istemiyorum.
MCVE'niz zaten elinizde olduğunda, kişisel (ya da şirket) bilgilerinde çok fazla bilgi olmamalıdır. Bunu yaparsanız, kod minimum olduğundan, daha basit bir foo / bar / baz örneğinde bir şeyleri yeniden adlandırmak kolaydır.