Yerinizi kodda tutmak için iyi teknikler nelerdir?


21

Kodunuzdaki tek bir noktayı hatırlamak için yer imlerini kullanmayı biliyorum . Bununla birlikte, kişi araştırmakta oldukları kodun akışını nasıl takip eder ? Örn: Birden fazla yer imi ve bunların yapıldığı sıra.

Örnek:

  1. Hata raporu: "Çarpışmalar duvarların köşelerinde çalışmıyor"

    1. Böceğin çoğaltılması, çarpışmaması gereken çokgenlere indirgenir.
    2. Çarpışma kodu mevcut olmayan bir dev tarafından yazılmıştır. Yani soruşturma şöyle bir şey yapar:

Bir akış şeması

Soruşturma sırasında, özellikle Google gibi kod dışı öğeleri incelerken, koddaki yerlerini kaybetmesi beklenebilir ( Bu kod yoluna daha önce baktım mı? Veya Hangi kod yolunu araştırıyordum? Bu işleve , vb.) Aynısı kaçınılmaz kesintiler için de geçerli (Patron: ŞİMDİ [Uzun Süresiz Anakara Raporuna ihtiyacım var , vb.)

Koddaki yerini takip etmenin bir yolunu sağlamak için bir teknik kaynağa veya araçlara sahip olmak yararlı olacaktır.


Düzenleme : Yukarıdaki örnek, yanıtlanması gereken gerçek bir sorun olarak değil, potansiyel bir örnek olarak ifade edilmiştir.

Bu soruyu ifade etmenin başka bir yolu:

Yeni bir sistem öğrenirken, kodu öğrenme konusunda nerede bulunduğunuzu nasıl takip edersiniz? Bu , kodun neden yaptığını (hangi yorum için olması gerektiği) neden yaptığını anlamakla ilgili değil , nasıl yapıldığını anlamak (sadece kodu okuyarak öğrenilir, yorumları değil).

Yanıtlar:


14

Baloncuklar arayüzü bir kerede bir sürü kod parçasını göstererek bu sorunu çözmeye çalışır. (Googling için tarayıcınızla sıkışmışsınız). Harika görünüyor ama denemedim. Bu fikrin sürümü, Visual Studio Ultimate için bir Visual Studio uygulamasıdır.


+1 olarak bu sorun için pratik ve hazır bir çözümdür. (Aynı zamanda sadece biraz harika!)
Jess Telford

Yıllar önce kafamda icat ettiğim şeylerden biri, daha önceden var olduğunu bulmak için :( +1
phresnel

Squeak ve diğer Smalltalks'te yapabildiklerinize benziyorlar ve yeni kod tarama pencerelerini açıyorlar ve içinde istediğiniz herhangi bir yöntem / sınıfa gidebilirsiniz.
Rudolf Olah

oldukça müthiş ... İnternet gezinizin benzer bir şekilde görselleştirilmesini sağlayan küçük bir oyuncak uygulaması yaratmıştım (bağlantıları tıklattığınızda, yeni bir düğüm eklenir ve orijinale geri bağlanır). Bunu görselleştirmeyi kodlamak için uygulamayı hiç düşünmedim.
Michael Brown

12

Bahsedilen tüm harika teknolojilerin yanı sıra, eski moda A3 kağıt parçasının bu konularda mükemmel bir yardımcı olduğunu gördüm. Fikirlerinizi yazın ve onları zihin haritası tarzında düzenleyin.


Evet evet. Şimdiye kadar en iyi cevap.
Patrick Hughes,

10

Hem editörüm hem de hata ayıklayıcım, bir fonksiyon tanımına atlayabilir ve daha önce bulunduğum yere geri dönmek için bir web tarayıcısı gibi çok düzeyli bir "geri" düğmesine sahip olabilir. Bu genellikle karmaşık bir hata ayıklama akışını takip etmem için yeterlidir. Aynı zamanda çok şey yapmanıza izin veren kaynak kontrolüne sahip olmanıza yardımcı olur . Bu bana neden bir şeyi denediğimi açıklayan bir taahhüt mesajı ve işe yaramazsa değişikliği geri almanın hızlı bir yolunu veriyor. Bunun dışında, potansiyel ve araştırılmış potansiyel müşterileri listeleyen basit bir beyaz tahta benim için kalan boşlukları dolduruyor.


1
Çok pratik. Kaynak kontrolünü bu şekilde kullanmayı düşünmemiştim.
Jess Telford

Hangi editör ve hata ayıklayıcı?
John Gaines Jr.

Vim ve Green Hill'in ÇOK hata ayıklayıcısı.
Karl Bielefeldt

Visual Studio'da CTRL + - geri gitmek ve CTRL + = ileri gitmek için kullanılır.
VitalyB

Eclipse, imlecin altındaki geçerli sembolün tanımını ayrı bir panelde gösterebilir.

3

Takip ettiğim birden çok yol:

  • Bir yere yaz . İki dakika sonra toplantın var mı? Ne yaptığını ve nerede olduğunu yaz. Her zaman kod yazarken işleri yazmak için yanımda kalem ve kâğıt koyarım.
  • Yer imleri . Ayarlayabileceğim 10 numaralı yer imim var.
  • StackTrace . Geçtiğiniz tüm kod hiyerarşisini kolayca görüntüleyebilirsiniz. Editörüm ayrıca yığın izlemesini kopyalamama ve kaydetmeme izin veriyor. Editörümü bir dahaki açışımda hızlı navigasyon için üstünü yükleyebilirim.
  • Editör gezinmesi . Baz üyeye git, mirasçıya git, kullanım yerlerini bul, referansa git, ...

1

Basit çözümü kullanıyorum - bu işi bitirene kadar hiçbir şeyi kapatmayacağım. Bu genellikle 50 ya da öylesine açık pencerelerden / sekmelerden birinin içinde geri döndüğümde ne düşündüğümü hatırlatacak bir şey olduğu anlamına gelir.


Bu yaklaşımla ilgili sorun, eşzamanlı olarak birden fazla düşünce / araştırma dalını nasıl takip ettiğinizdir.
Jess Telford

1
Bunu bir sorun olarak görmüyorum - hepsi de aynı şekilde açık, ve hangi şubeye geri döndüğümün önemi yok. Bu, web tarayıcısı için IDE'den daha iyi çalışır, ancak bunun nedeni mevcut kod tabanımın gerçekten kavramsal olarak organize olmamasıdır.
Tom Clarkson

1

Gerçek bir geliştirici aracı / IDE edinin. Vi, Emacs, Eclipse veya her neyse (Seçim, en iyi olduğu tartışmalar kadar büyük, ama bu başka bir sorun) ve onu doğru kullanmayı öğren . Dont, çok gibi, sözdizimi vurgulama ile Not Defteri gibi kullanın. Kısayol tuşlarını kullanmayı öğrenin ve genel işlemler için fareye güvenmeyin (Çok yavaş). Asgari 1920x1200 büyük bir ekran verimlidir.

Benim dev aracı (yavaş ama kullanışlı isimler onları kalıcı kılan) ve isimsiz (eklemek ve silmek için hızlı) yer imleri, ileri ve geri tarama ve referans hepsi bir arada, todo ve geliştirici (kişisel ve grup çapında) eklenmiş notları kaynak kodun belirli bir satırı. Başka bir eklenti kurmak zorunda kalmadan güneşin altındaki her dili yapar.

Yarım düzine dil kullanarak bir düzine veya daha fazla 1 Milyon artı SLOC modülünden oluşan bir kod tabanı üzerinde çalışıyorum. Açıkçası, bir kerede hepsi üzerinde çalışmıyorum, bir ya da iki parçanın küçük parçalarına odaklanıyorum, ancak kodda yaptığım işe uygun olan herhangi bir noktaya birkaç hareketle gidebilirim.


Uygun bir IDE'nin en iyisi olduğuna katılıyorum. Vim'in harika işaretlerini ve etiket atlama özelliklerini kullanıyorum. Bununla birlikte, her ikisinin de sınırları vardır: işaretler tampon yereldir ve etiket geçmişi doğrusaldır. Karmaşık durumlar için, bu hala yeterli değil (bu yüzden bu soruyu soruyorum).
Jess Telford

1
Ben bir Viatürk'üm, ancak birkaç kısa komut dosyası yazmaya, VIM'i kullanmayı gerçekten öğrenmek için biraz zaman harcamak veya özellikleri ayarlanmış bir araca geçmek için biraz zaman harcayan, güç kullanıcı ellerinde bununla neler yapılabileceğini gördüm. Sizin için çalışan ve bunu öğrenmek için zaman harcayan bir yol. Bu benim amacım. Araçları öğrenmek. İyi bir esnaf aletlerini suçlamaz, yeğen iyi bir programcıdır.
mattnz

Kabul. Ben vim ile ileri düzeyde bir acemiyim (çoğu zaman düşünmeden kullanabilirim, ancak yüzeyi zorlukla çizdim), bu yüzden bilmediğim şeyler olduğundan eminim. Yine de, psr'nin vi (m) 'deki cevabı gibi bir şey yapmanın mümkün olduğunu sanmıyorum (en azından benim araştırmamdan değil).
Jess Telford

@Jess: işaretlerin mutlaka yerel olarak arabellek olması gerekmez. Büyük harf kullanan işaretler geneldir.
Dave Kirby

@DaveKirby Awesome - Vim hakkında yeni şeyler öğrenmeyi seviyorum: D
Jess Telford

1

Visual Studio ile, bir hata ayıklama oturumunda, kod akışını izlemek için 'Çağrı Yığını' penceresini kullanabilirsiniz ( Debug / Windows / Call Stackkısayolla veya kısayolla etkinleştirebilirsiniz Ctrl+Alt+c).


1
Çoğu hata ayıklayıcısında olduğu gibi. Soru, kod tabanınızın dışındaki araştırmalar da dahil olmak üzere kodunuzu el ile tararken daha fazladır.
Jess Telford

1

Hiç kimse arama grafiği çizimleri oluşturabilecek birçok araçtan bahsetmedi şaşırdım. Doxygen'i çok yardımcı olmak için buldum . Programınız boyunca doxygen kullanmak zorunda değilsiniz, sadece ilgilendiğiniz işlevleri etiketleyebilirsiniz .


0

Uber-outlineing aracı olan emacs için org modunu kullanıyorum . Bununla birlikte, kodun çağrı yığınını taklit eden ve kaynak kodunun kendisine doğrudan bağlantılar içeren bir org yazabilirim (org-store-link). Açıklayıcı metinler, web sayfalarına bağlantılar vb.

Mükemmel değil. Örneğin, ana hat yapısı herhangi bir seviyeye geri dönme nosyonuna sahip değildir, bu nedenle sadece bir yığının tersine bir yürütme yolunu izlemek zordur. Ama bulduğum kağıda diyagram çizmenin en iyi yolu bu.

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.