En düşük tahmin edilen programlama aracı [kapalı]


35

İyi programcılar metin editörleri, IDE'ler, hata ayıklayıcılar, sürüm kontrol sistemleri vb. Gibi programlama yaparken çok yardımcı olan birçok harika araca sahibiz. Bazı araçların işi bitirmek için "olması gereken" araçları olması gerekir (örneğin derleyiciler) .

Hala her zaman çok yardımcı olan araçlar var, ancak yine de çok fazla dikkat çekmiyorlar, örneğin çeşitli nedenlerden dolayı, örneğin, serbest bırakıldıklarında, zamanlarının ilerisindeydiler ve şimdi daha da az unutuldu.

Eğer bir aracı programlama ne tür sizce en hafife biri? Cevabını motive et.


3
Beynimiz mi? - -
Trufa

Tamam, kim Lisp girişini eklemek ister? * sırıtış *
Mark C

Yanıtlar:


70

Bir lastik ördek. Evet gerçekten.

http://en.wikipedia.org/wiki/Rubber_duck_debugging

Lastik ördek hata ayıklama , lastik ördek ve lastik ördek testi , yazılım mühendisliğinde hata ayıklama kodu yöntemine atıfta bulunmak için kullanılan gayrı resmi terimlerdir. İsim, adsız bir uzman programcının her zaman masasında bir lastik ördeği tutacağı ve kendisini ördeğe açıklamaya zorlayarak kodunu hata ayıklayacağı muhtemel kıyamet hikayesine referanstır.

Bir programcı, bu işlemi kullanmak için, bir lastik ördek gibi cansız bir nesneye kod açıklar, yanlış bir kod parçasına ulaştıktan ve açıklamaya çalıştığında, programcının hatayı fark edeceği beklentisi ile açıklar. Kodun ne yapması gerektiğini açıklarken ve gerçekte ne yaptığını gözlemlerken, bu ikisi arasındaki herhangi bir uyumsuzluk ortaya çıkar ...


6
Bunu her zaman kocamla yapıyorum. Sadece programlama kabiliyeti dağılmış bir teknik destek görevlisi olarak söylediklerimin% 60'ını anlıyor ama beni anlamadığım% 40'ı açıklamaya zorluyor. Çalıştığı günlerin sayısı gerçekten oldukça etkileyici.
Ethel Evans

1
Sen gülersin. Bir iş arkadaşım vardı aslında onun masasında lastik ördek var.
Berin Loritsch 11:11

57
Denedim ama lastik ördekim soruna odaklanamadı. Programlamaya gerçekten ilgi duyan düzgün nitelikli bir lastik ördek nerede bulabilirim?
Steve314

3
Günlüğümü bunun için kullanıyorum. Bazen bu konuda kendimle uzunca tartışmalar yapıyorum. Bazen ne demek istediğimi anlayabilmeyi isterdim. Bunu bir dergiye yazmak bazen daha sonra yardımcı olur, üzerinde çalıştığım kodu yazan aptalın ne düşündüğünü merak ettiğimde.
Lars Wirzenius

1
@Steve: Japon araştırmacılar üzerinde çalışıyorlar ama yakınlarda olduklarını sanmıyorum: youtube.com/watch?v=3g-yrjh58ms
Rei Miyasaka

42

Kalem ve defter.

  1. Elektriksiz çalışır.
  2. Taşınabilir.
  3. Toplantılarda sıkıldığınızda doodle açık / kapalı
  4. Yararlı bilgileri saklayın.
  5. Yazılırsa, insanlar buna daha çok önem veriyorlar.
  6. Diğerleri okuyabilir ve öğrenebilir.

Büyük şirketlerin eski günlerinde, mühendislere ve teknisyenlere, sabit disklerimizdeki çeşitli dosyalarda yazma eğiliminde olduğumuz her şeyi yazacakları boş mühendislik defterleri verilecekti. Defterler doldurulduğunda güvenli ve yangına dayanıklı bir depoya gönderilirdi. Herhangi birinin bu notlara erişmesi gerekiyorsa not defterlerini kontrol edebilirler.
oosterwal

3
Ruslar bir kalem kullandılar.
Meslek

@Job Hah, hala bir şişe mürekkep kullanıyorum! (... Eh, sadece hat için, ama yine de. :))
Mateen Ulhaq

Peki ya Tablet PC'ler?
Mateen Ulhaq

1
@Job:… ve votka!
Spoike

38

Düz metin dosyalarındaki günlük çıktılarını veya verileri karşılaştırırken farklı araçlar kullanılmıyor gibi görünüyor. Ya da belki bu sadece bir niş? Büyük program yürütme günlüklerini karşılaştırmak ve değişen bir veya iki ayrıntıyı tam olarak belirlemek için hata ayıklamak için çok yararlı ve yararlı görünüyor.

Performans profili oluşturma araçlarının özellikle de kritik bir bottelneck'e bastığınız zaman olması çok iyidir, ancak çok az insanın onlara aşina olduğu görülüyor (ve bu kategoride bir dereceye kadar kendimi kabul ediyorum).

İyi XML araçları hayati önem taşır - bir düzineden fazla satır veya katları şemadan fazla XML dosyasıyla çalışıyorsanız. Bazen, diğer editörlerin sağladığı vurgulamanın temel sözdiziminden daha fazlasına ihtiyacınız vardır. Ayrıca XML ile çalışırken, XSL öğrenmek çok faydalı olabilir. Çoğu zaman uygulamanın kodunda birçok satırda yapılan basit bir XSL dönüşümünde neler yapılabileceğini görüyorum. Gerçi netleştirmek için: Ben am değil düşündüren kendisi XML bir "hafife programlama aracı" dır; Ben değeri öneriyorum iyi XML editörler gördüğüm kadarıyla göz ardı edilmektedir.


1
++ Kesinlikle difftakdir edilmez. Profilleme konusunda, faydalı olmaları gerektiğini düşünmekte yalnız değilsin, ama sen nasıl olduğunu bilmiyorsun. Şuna göz at.
Mike Dunlavey

Evet, aslında bir profil oluşturma aracı öğrenmeyi düşündüm, ama asla başaramadım
Anto

23
Profil oluşturma için +1, diff araçları için +1, XML araçları için -1. Bazı insanlar, bir sorunla karşı karşıya kaldıklarında, "biliyorum, XML kullanacağımı" düşünüyorum. <Problem:Worsening> <Problem:TimeDescription>Now</Problem:TimeDescription> <Problem:Posessive>they have</Problem:Posessive> <Problem:Quantity>many, many</Problem:Quantity> <Problem:WorseningDescription>more problems</Problem:WorseningDescription></ProblemWorsening>
Mason Wheeler

2
@Mason: Sevimli XML.
Mike Dunlavey,

10
@Mason Wheeler: Ben XML önermek vermedi bir şekilde sorunları çözmek için bir araç, ben önerdi İyi XML Araçları - Ne zaman var , XML ile çalışma yapın bu konuda çok iyi bir editör / araca sahip olun. Xpath sorgularını, şema doğrulamasını, dönüşümü, değer ve yapı karşılaştırmasını (sanırım özel bir türden fark aracı) çalıştırabilen bir şey vb. daha da kötüsü (btw XML kodunu beğendim;)).
SinirliFormsDesigner ile

37

Düzenli ifadeler

Onlar sadece çok faydalıdır. Günlük dosyaları arasında arama yaparken, metinleri ayrıştırırken vb. Yardımcı olurlar. Sadece son derece kullanışlıdır.

Bunları kullanmayan kaç kişinin tanımadığını garip buluyorum çünkü onlarla ilgili bir öğrenme eğrisi var. Çoğu zaman insanların işleri zor yoldan yaptıklarını görüyorum (Not: regex'ten önce işleri zor yoldan yaptım), basit bir regex çabucak halledebiliyordu.


8
Normal İfadelerin, doğru uygulandıklarında harika olsalar bile İsviçre çakısı olmadığını unutmayın.
Anto

10
Son derece yararlı - ancak çoğu zaman kötüye kullanıldı, şifreli erişilemez kodlara yol açtı. Eski “şimdi iki problemin var” demenin gerçekte bir temeli var.
Steve314

4
RegExes İsviçreli bir ordu bıçağı: Pek çok hızlı iş için yeterli bir araç olmasına rağmen, muhtemelen bütün bir evi inşa etmek için doğru araç değildir.
JasonTrue

4
Hmm, nedense her zaman aldım regex küçümsenmekten çok uzaktı. Sık sık, insanların döngü için basit bir bölünmenin yeterli olacağı bir regex'e ulaştığını ya da regex'lerin cevap olmadığı durumlarda (örneğin, xml / html ayrıştırma) görüyorum.
MAK

Her iki olguyu da gördüm: Regex? Bu şeyler burada okunamaz / yavaş / uçsuzlaştırıcıdır ve "Bir regex ile ayrıştırmanın en iyi yolu nedir (tamamen normal olmayan dilbilgisi ekleyin)?"
JasonTrue

24

Takım arkadaşların. Ateşli bir fikir peşindeyken ve ekibinizi dahil etmeyi unuttuğunuzda, neden işe yaramayacağına veya neden daha iyi olabileceğine ilişkin kaygılarını veya fikirlerini asla duymazsınız.

Bunu söylüyorum, çünkü programlamanın insanların mükemmel fikirleriyle köşelerde yaptıkları antisosyal bir şey olduğunu düşünmek kolaydır. Bunu düşünen insanlar fikirlerin / projelerin batmasına / yüzmesine yardımcı olmada takımların ve takım arkadaşlarının değerini küçümsüyor.


İyi takım arkadaşları asla değer alamazlar. Çoğu yazılım ve donanım yapabilir.
Anonymous Type

19

Google. Daha önce çözülmemiş ve belgelenmemiş çok az sorun var. İyi ayarlanmış bir Google sorgusu herkese çok zaman kazandırabilir.


13
İyi bir araç ama en azından artık küçümseme diyeceğimden emin değilim, (belki de 9 ya da 10 yıl önce kabul etmiş olurdum).
SinirliFormsDesigner ile

12
Üzgünüm, ama Google hafife alınmış? En azından Google abartılıyor :)
eestein

2
Biliyorum biliyorum! Ancak hafife alındığını söylememin gerekçesi, aynı fikirde olacağınızdan şüphelendiğim bir durumdur: StackOverflow'ta sorulan soruların en az% 75'i Google ile kolayca karşılanabilir, değil mi? Açıkçası, eğer birçok insan kullanmıyorsa, bir dereceye kadar hafife alınmaktadır. Gerekçem hatalıysa cevabımı silerim.
Adam Crossland

3
@Adam Crossland:% 75 nazik davranıyor. Bundan daha yüksek olduğunu düşünüyorum.
S.Lott

1
@adam @ s.lott bu nedenle, Google’ın düzgün kullanılmadığı anlamına geliyor. Bununla katılıyorum. Google’ın düzgün bir şekilde nasıl yapılacağını bilen insanlar bu kadar çok soruya cevap verebilirdi (sorulması gerekmez). Saygılarımızla.
eestein

16

Uzakta ve uzakta "darboğazları" bulmak için en önemsiz araç bir hata ayıklayıcıda Ctrl+ Cveya "Duraklat" düğmesidir.

Son paragraf edin bu yazı ve bu yazı ve bu yazıyı başlayanlar için.

Pek çok kez “Program çok yavaş! Bunun hakkında ne yapabilirim?” Adlı bir profilci denedim (eğer yaptıysa), ama ne yazdığını anlamadım. " Tahminler sadece budur. Her zaman yaptığım ve diğerlerinin de yaptığı şey, devam ettirmek, kesmek ve çağrı yığınını incelemek. Sorun gerçekten kötüyse, tombala , tam önünüzde. Sorun sadece ılımlıysa, bunu birkaç kez yaparsınız. Birden fazla örnek üzerinde ortaya çıkan, kaçınabileceğiniz bir şey, düzeltebileceğiniz bir darboğazdır.

Evet, bu aşırı oylama, ama işe yarıyor.


Bir kişi kör aletleri küçümsememelidir. Açıkçası bu her zaman doğru cevap değildir, ama olabilir. Gerektiğinde gerçek bir profiler tarafından rafine edilmek için, birinci dereceden bir yaklaşım olarak adlandırın.
Kristof Provost

@Kristof: Bunu düşünmek çok cazip ve ele alamayacağı sorunlar var ve numunelerin elde edilmesinin kolay olmadığı durumlar var, ancak profilerler Zoom gibi belirli bir tür hariç, bu davaları da idare edemiyorlar. ve hatta o zaman bile sizi problemin tamına götürmek anlamında daha iyi değillerdir.
Mike Dunlavey

@Kristof: İşte rastgele duraklatma türünün sorunu iyi değil - zamanla bir anlık görüntü alır ve araştırırsanız, yaptıklarının nedenini söyleyemezsiniz. Örnek: mesaj odaklı işlem; mesajın nereden gönderildiğini veya neden veya ne sıklıkla gönderildiğini söyleyemezsiniz. Başka bir örnek: mesajların değiştirildiği asenkron protokoller ve her zaman diğer adamı bekliyoruz gibi görünüyor. Senkron işlem için profilciler daha iyi ölçebilir, ancak rastgele duraklatma bulmakta daha iyidir .
Mike Dunlavey,

14

Sizce en çok küçültülen program hangisidir? Cevabını motive et.

Derleyici

Çoğu insan, seçtikleri derleyicinin ne yaptığını anlamak için zaman ayırmaz. Sadece kodu çalıştırılabilir bir program haline getirdiğini hissediyorlar ve bu gidebildiği kadarıyla. Modern olanların çoğunda, içine ihtiyaç duyacağınız şeyi yapması için besleyebileceğiniz çeşitli yapılandırmalar vardır. İşte bir örnek olarak, ofisinizdeki devlerin yarısının uyarıyı nasıl hata seviyesi olarak ayarlayacağına dair hiçbir fikrim yok (aslında bir tane varsa). Hata ayıklama sembolleri çıktısı almak için ne gibi seçenekleriniz var? Hangi optimizasyonları (veya hangi seviyede) yapmak istiyorsunuz? Liste devam ediyor.


3
@Kevin: ve derleyicinin sizin için kontrolleri yapmasını sağlamak için kod yazmanın yollarını eklerdim (statik olarak yazılmış diller için). Çoğu aygıt, raf türlerini (string gibi), herhangi bir tür bilgiyi temsil etmek için kullanır; burada ilgisiz veriler için basit ama uyumsuz türler tanımlayabilirler ve argümanları geçerken derleyicileri karıştırmazlardı.
Matthieu M.

@Matthieu M Bu da iyi bir nokta. Birçok insan size yardım etmenin kolay yollarını unutur.
kemiller2002

3
Her derleyici uyarısı değerli bir hediyedir. Görmezden gelme! Daha fazlasını iste! -Werror zorunlu olmalı.
Kristof Provost

@Kristof: -pedantic -Wall -Wextra -Werror... o zaman bir şey inşa etmek zor olsa da: p
Matthieu M.

Belki sadece benim, ama "devs yarısı" ne hata ayıklama sembolleri hakkında ne bilmiyorum "abartı değilse, oldukça göz korkutucu.
kizzx2

10

Beynin. Diğer araçların onsuz pek bir anlamı olmazdı.


4
Madeni daha çok zaman zaman hizmetsiz kıldım.
David Thornley

3
"daha çok ya da daha az unutuldu": -S

5
Bence hafife alınmış. Çok fazla insan her zaman kısayollar arar, böylece düşünmeleri gerekmez. Sağduyu ve mantık yerine geçmez ve araçlar bunun yerini alamaz.
jnevelson

2
Jonathan ile aynı fikirdeyim, beyin genellikle hafife alınıyor. Aslında, çok fazla programcı, kutunun dışına çıkmak yerine zaman zaman ısmarlama (ucuz ve kirli, sınıf atmak) bir test çantası ve eldeki sorunu araştırmak için bir test aracı yazmak yerine, bildikleri birkaç numaraya güveniyor. Bir çok kez geliştiricilere, düşünce durumlarının ötesine geçme ve problemlerini birkaç sorudan fazla çözmeyecek araçlar verdim.
asoundmove

1
Bazı yorumlar fikrimi değiştirmeme neden oldu, +1 :)
Anto

10

İyi yaşlı:

print

Bazen bir hata ayıklayıcı, profil oluşturucu veya bir UML akış şeması yararlı olabilir. Bazen seni deli ediyorlar. Her zaman kodumun, yaptığımı düşündüğümde yaptığım şeyi yaptığından emin olmak için baskı ifadelerini (veya izlemeyi veya NSLog veya ne olduğunu) kullanmaya başladığımı düşünüyorum.


Bunun dile ve hata ayıklayıcısına bağlı olduğunu düşünüyorum. Bugünlerde en iyi IDE'lerin popüler diller için sunduğu hata ayıklayıcı türleri, işleri basılmış açıklamalardan çok daha kolay hale getiriyor.
Billy ONeal

8

Düz eski senaryolar ... ne kadar yeni nesil dil geliştirirsek geliştirelim, hala büyük ölçüde senaryolara güveniyoruz, ayrıca günlük işlerin çoğu birkaç satırlık komut dosyası yazarak elde edilebiliyor.


1
Bakın .. Buna katılmıyorum. Evet, komut dosyaları bazı görevleri otomatikleştirebilir. Ancak çoğu zaman, spagetti'nin büyük bir zirvesi haline geldikleri noktaya kadar duyu noktasının çok ötesine götürülürler.
Billy ONeal

1
Doğru, büyük betikler bakmak için korkunç ve biri bunun için perl veya python kullanabilir. Yine de küçük işler yapmakta hala başarılılar.
Gaurav Sehgal,

@Billy Python kullanın. Spagetti sorunu çözüldü :)
Evan Plaice



5

Perl ve diğer betik dilleri. Agent Ransack gibi GUI araçları için biraz fazla karmaşık olan işler için idealdir.


1
Onların hafife alındığından emin değilim ...
Anto

3
Kesinlikle hafife alınmış ... özellikle Perl. Bu bir lang. işlerin basit sloganı ile çok iyi tasarlanmış ... bu yüzden, sadece yapılması gereken hızlı işler için paha biçilemez.
Rook

@Rook: 100'den fazla operatöre sahip bir dilin nasıl "basit" sayılabileceğinden emin değilim. Faydalı, muhtemelen. Ama "basit" değil.
Billy ONeal

@Billy - Basit, güçlü dışlamaz. Hesap makinelerini basit buluyorum. Maden üzerindeki 300 fonksiyonun yarısının ne yaptığını bilmiyorum, ama bu sadeliği azaltmıyor.
Rook

4

Hızlı, sık ve güvenli yeniden düzenlemeye izin veren klavye kısayolları. Bazı tuşlara basıldığında değişkenlerin, yöntemlerin, sabitlerin veya sınıfların nasıl çıkarılacağını (veya satır içi vb.) Öğrenmek, kodlama biçimimi temelden değiştirdi. Maliyet az olduğu zaman sadece sık sık (yani yeterli) yeniden yönlendirirsiniz, bu nedenle bu kısayolları yapmak, doğanın gereği kadar iyi kodu yazmak ve sürdürmek için esastır.

Genel olarak, iyi araçlar (IDE / editör) kullanın ve sağladıkları özelliklerden en iyi şekilde nasıl yararlanabileceğinizi öğrenin.

Birim test ve TDD, kodunuzu test edilebilir tutmak ve yeniden yapılandırma korkusunu önlemek için gelecek.

Bunları kullanın; DRY prensibine uyan ve kendi kendini belgeleyen, doğru ve doğru bir şekilde kod yazabilirsiniz.


4

Birim testi aşağıdaki avantajları sunar:

  • Geliştiriciler kodun ilk müşterileri olur. Bir böcek ne kadar hızlı yakalanırsa, düzeltmesi o kadar ucuz olur. Hatalar bir kurulum, kurulum veya dağıtımdan önce yakalanabilir .
  • Test etme, koddaki bakış açınızı değiştirir. Tasarım açık mı? Köşe kasalarını idare ediyor mu?
  • Hawthorne Etkisi , bir ekibin kalite / test metrikleri yayınladığını ilan ederek kaliteyi artıracaktır.
  • Testler kaynak kontrolüne alınmasa bile, yeni araziyi keşfetmek ve öğrenmek için harika bir yol olabilir.
  • Daha az hataya karşı yüksek olasılık!

4

Kod üreteçleri

Kod üreticileri, basit bir tanımdan büyük miktarda verimli ve hatasız kod oluşturabilir. ORM tipi kullanımlar veri erişim sınıfları oluşturmak için en belirgin olanıdır, ancak daha birçok potansiyel kullanım vardır.

Kod oluşturma desteği, hem programcı hem de çerçeve bakış açısıyla henüz başlangıç ​​aşamasında görünüyor, ancak daha fazla göreceğimiz bir şey olduğuna inanıyorum. In .NET Eğer uğraşmaya başlayabilirsiniz CodeDOM şeyler.


Kod üreteçleri yazmayı severim, doğru olan en kolay şey değil, ama çok kullanışlı.
Zachary K

3

Kullandığım AgentRansack ağır. Binlerce dosyayı çok hızlı bir şekilde aramak muazzam bir yardımdır. Bana zaman kazandırdı, ama onu tanıyan ya da kullanan çok fazla programcı bilmiyorum.


3

Biçimsel Yöntemler.

http://www.amazon.com/Discipline-Programming-Edsger-W-Dijkstra/dp/013215871X

http://www.amazon.com/Science-Programming-Monographs-Computer/dp/0387964800/ref=pd_sim_b_1

Onların önemini abartmak zor. Her döngü ve her if ifadesi bir çeşit "kanıt" gerektiren bir fikir olarak başlar. Çoğu programcı bu kanıtı çoğu zaman kafalarında yapar. İf ifadesinin ne yaptığını ve açıkça - mantıklı ve mantıklı bir biçimde - seçimlerin ne olduğunu ve seçimlerin neden eksiksiz, tutarlı ve özel olduğunu soruyorsunuz.

Ama bazıları sadece rastgele tahmin ediyor gibi görünüyor. Daha fazla yardıma ihtiyaçları var ve resmi yöntemler ihtiyaç duydukları türde yardım olabilir.

Kod için sadece cebir (ve hesap). Çok karmaşık veya karmaşık bir şey yok.


Bunları basit şeyleri düzeltmek için sık sık yararlı buldum, böylece daha karmaşık şeyleri ayıklarken ona güvenebilirim. Tecrübelerime göre, resmi yöntemler, basitçe sınama hatalarını ortadan kaldırarak yalnızca kolayca teste yakalanan göze çarpan bariz olanları bırakıyor.
David Thornley

3

Sandalyeyi güneş ışığında hızlı bir şekilde hareket ettirmek ve temiz havaya bırakmak gibi fiziksel tasarım desenleri beynimizi en üst düzeyde sıkıntıya sokar.


3

Peki bu Half Life 2 (en sevdiğiniz oyunu buraya yerleştirin). Eğer bir sorunum olursa çözemem, en sevdiğim oyunla oynamayı bırakıp oynamaya başladım ve aniden çözüm aklımda belirdi. Dürüst olmak gerekirse, bu bir oyun veya onun gibi bir şey değil, başka bir şey yapmaktır . İnsanları saatlerce sorun olmadan çözmeden görüyorlar ve yapmaları gereken tek şey beynini kısa bir süre için çevrimdışı duruma getirmek.


3

Yığın Taşması - Sıkıştığınızda hızlı uzman yardımı

profesyonel ve meraklı programcılar için soru-cevap sitesi. Q&A sitelerinin Stack Exchange ağının bir parçası olarak sizin tarafınızdan kurulup çalıştırılır. Sizin yardımınızla birlikte, programlama hakkındaki her soruya ayrıntılı cevaplar içeren bir kütüphane oluşturmak için birlikte çalışıyoruz ...


+1, ancak artık gerçekten küçümsenmiyor
MAK

4
belki fazla abartılmış, ya da en azından aşırı kullanılmış
Anto

3

Not Defteri / TextPad / basit metin düzenleme programları olduğunu düşünüyorum . Herkesin IDE açılmasını gerektirmeyen ve sadece hızlı bir düzenlemeye ihtiyaç duyan hızlı bir düzeltmeye ihtiyaç duydukları bir zamanı vardır. Ve tüm bilgisayarlarda bir çeşit basit metin düzenleme programı var.


2

Varlıklar ve iyi bir alwaysAssert()işlev. IMHO, bunlar ünite testlerinden daha önemlidir, çünkü ünite testleri sadece test etmeyi düşündüğünüz özel durumlarda hatalar bulabilir. Aynı programcı kodu ve testleri yazarsa, muhtemelen her ikisinde de aynı davaları kaçıracaktır. Dahası, bazen birim testi pratik değildir, çünkü bileşenlerin ve / veya üzerinde çalıştığı verilerin çalıştığı ortam, üzerinde durulan bir test durumunun ortaya çıkması için çok karmaşıktır.

Varlıkların güzelliği varsayımları belgeleme ve onları inanılmamış girdiler üzerinde test etme yeteneklerinde yatmaktadır . Bu varsayımlardan herhangi biri yanlışsa, kodunuz "çalışmak" yerine yüksek sesle başarısız olur, ancak çok yanlış sonuçlar verir. Aynı zamanda, sorunun kökenine iddiada bulunmadığından daha yakındır. Uygulamada, bir kod parçası hakkında yeterli varsayımları açıkça belirtirseniz ve bu varsayımların tümü doğruysa, kod genellikle doğrudur.

Atılganlara dair yaygın bir yakınma, onların kapatılabileceği yönündedir. IMHO her dilde veya standart kütüphanede alwaysAssert(), aynı şeyleri yapan assertancak kapatılamayan bir işlev veya kaba bir eşdeğer olmalıdır. Bu, varsayımların kapatılmasının faydalarının önemsiz olduğu, performans dışı kritik kod alanlarındaki varsayımları kontrol etmek için kullanılabilir.


Kabul. Ancak ne yazık ki basit ama etkili, bunun gibi araçlar çoğu zaman önemsizdir.
Peter Mortensen

2

F1 tuşu. - Tanımadığınız programlar ve üzerinde çalıştığınız programlar için kullanışlıdır. (Büyük bir uygulama olduğunu varsayarak.)

Sorunları filtrelemek için güçlü bir kullanıcı, yazılımın nasıl çalışması gerektiği hakkındaki yorumlarına dayanarak hataları rapor eden kullanıcılardı. Tabii ki, tasarımın kendisinde kusurlu olabilir. Ama bu başka bir hikaye.


2
Her ikisi de hafife alınmış ve aynı zamanda yetersiz uygulanmıştır.
Anonymous Type

Şu anda kullandığınız uygulamanın geliştiricileri tarafından çok küçümsendi; Bu şekilde yardım, çok az ya da hiç faydalı bilgi içermez.
dürtmek

2

Çeşitli UNIX çekirdek yardımcı programları, ancak öncelikle findve ara sıra grepveya ed. Derin dosya yuvalarında bir şeyler bulma yeteneği, özellikle aniden bir kod temeli miras aldığınızda ve onu düzeltmeniz gerektiğinde, paha biçilmezdir. Söz konusu kod iyi belgelenmiş olsa bile, muhtemelen avlanmanız gerekecek ve findonu öldürme konusunda güçlü bir anlayışa sahip olacaksınız .


2

Merak

Buna "Programlamanın Riddle" adını verin. Onu kullanan kişiye kıyasla bir araç nedir? Bir şeyin nasıl ve neden işe yarayıp yaramadığını bilmek arzusu, bir kişinin bilgisini herhangi bir araçtan daha fazla genişletir ve bu programlamanın ötesinde geçerlidir.


2
Ctrl + C    
Ctrl + V

Dünya çapında sayısız saatler kurtarıldı!


1

Kuyruk

Kuyruk program günlüğü çıktı dosyasını gerçek zamanlı olarak izlemek için kullanılabilir. Başkalarına günlüğü okumak için araçlar sağlamayan sistemler için geliştirmede çok yardımcı olmuştur.

Örnek programlar;


Mac OS X, bir UNIX sistemidir. Ayrı ayrı bahsetmeye gerek yok.
sağa sola

0

Bir keresinde bir Perl çağrısı grafik üretecini birbirine bağladım. Son derece yararlı oldu, ancak işlemsel olmayan kod veya dosya dışı rutinler üzerinde sert düştü.

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.