Ev Kişisel Finans C ++ Programınızdaki Hatalardan Kaçınılması - AYRINTILAR

C ++ Programınızdaki Hatalardan Kaçınılması - AYRINTILAR

İçindekiler:

Video: CppCon 2018: Greg Law “Debugging Linux C++” 2025

Video: CppCon 2018: Greg Law “Debugging Linux C++” 2025
Anonim

Derleme sırasında oluşturulan tüm uyarıları kaldırmadan veya en azından anlayıncaya kadar kodunuzun hata ayıklamaya başlamayın. Bütün uyarı mesajlarını daha sonra yoksayarsanız etkinleştirmeniz, size iyi gelmez. Uyarıyı anlamıyorsan, bak. bilmiyorsanız sizi incitecektir.

Açık ve tutarlı bir kodlama stili kabul edin

Açık ve tutarlı bir tarzda kodlama, yalnızca programın okunabilirliğini arttırmakla kalmaz, aynı zamanda daha az kodlama hatası ile sonuçlanır. Hatırlayın, C ++ sözdizimini çözerek harcamanız gereken daha az beyin gücü, eldeki programın mantığını düşünmek için daha fazla şey bıraktığınızı unutmayın. İyi bir kodlama stili, aşağıdakileri kolaylıkla yapmanızı sağlar:

  • Nesnenin adıyla ilgili bir şeyler bilme
  • Önişlemci sembollerini C ++ sembollerinden ayırt edin (yani, #defined nesneler öne çıkmalıdır))
  • Aynı seviyede C ++ kod bloklarını tanımlayın (tutarlı girintilendirme sonucudur)
  • Buna ek olarak, modüldeki işlevler veya sınıflar, yazar hakkında bilgi sağlayan standart bir modül başlığı oluşturmanız gerekir (muhtemelen, o sensin), tarih, kullandığınız derleyicinin sürümü ve bir değişiklik geçmişi.
  • Son olarak, tek bir projeye dahil olan tüm programcılar aynı stili kullanmalıdır. Farklı kodlama stillerine sahip bir program ile bir programı çözmeye çalışmak kafa karıştırıcıdır.

    Yazdıkça kodunuza yorum yapın

    Yazarken kodunuzu yorumladıysanız, her şey düzgün çalışıncaya kadar beklemek yerine, geri dönüp yorumları eklemek hataları önleyebilirsiniz. Çok boyutlu başlıklar ve işlev açıklamaları daha sonra yazmaya zaman ayırmak anlaşılmaz, ancak kodu yazarken kısa görüş eklemek için her zaman vaktiniz vardır.

    Kısa açıklamalar aydınlatılmalıdır. Eğer değillerse, fazla değmezler, bunun yerine başka bir şey yapıyor olmalısınız. Programınızı çalışmaya çalışırken bulabileceğiniz tüm aydınlanmaya ihtiyacınız var. Birkaç gün önce yazmış olduğunuz bir parçaya baktığınızda kısa, açıklayıcı ve noktaya kadar olan yorumlar, tam olarak ne denediğinizi anlamanıza yardımcı olmak için dramatik bir katkı yapabilir.

    Buna ek olarak, tutarlı kod girintisi ve adlandırma kuralları kodu anlaşılmasını kolaylaştırır. Kodun bittikten sonra okunması kolay olduğunda çok güzel, ancak yazarken de kodun okunması çok önemlidir. İşte o zaman yardıma ihtiyacın var.

    Tek adımda her yol en az bir kez

    Bir programcı olarak, programınızın ne yaptığını anlamanız önemlidir. Hiçbir şey, programın iyi bir hata ayıklayıcıyla tek adıma ilerlemesinden çok, kaputun altında olan biteni daha iyi hissetmenizi sağlar. (Etkileşimli derleyicilerin IDE'sinde bulunan hata ayıklayıcılar iyi işliyor.)

    Bunun yanı sıra, bir program yazarken bazen tuhaf davranışı anlamanız için ham maddeye ihtiyacınız var. Hiçbir şey bu malzemeyi hizmete girdikçe tek adımlık yeni işlevlerden daha iyi vermez.

    Son olarak, bir işlev tamamlandığında ve programa eklenmeye hazır olduğunda, her mantıksal yolun en az bir kez dolaştırılması gerekir. Fonksiyon geri kalanıyla birlikte pota atıldıktan sonra değil, kendiliğinden incelendiğinde hataların bulunması çok daha kolaydır ve dikkat yeni programlama zorluklarına girmiştir.

    Operatörlerin aşırı yüklenmesinden kaçının

    İki akış G / Ç işleci kullanımı dışında

    operatör << () ve operatör >> () ve atama işleci operatörü = () , C + + ile rahatça hissedecekseniz, muhtemelen operatörleri aşırı yüklemeyi bırakmalısınız. Aşırı yüklenmiş operatörlerin iyi bir seti, yeni bir sınıfın yararını ve okunabilirliğini artırabilir, ancak aşırı yük operatörleri (sadece listelenen üç hariç) hemen hemen hiç gerekli değildir ve hata ayıklama sorunlarını yeni bir programcı olarak önemli ölçüde artırabilir. Bunun yerine, uygun genel üye işlevleri tanımlayıp kullanarak aynı sonucu elde edebilirsiniz. Birkaç ay C-Plus-Plussing yaptıktan sonra, çekinmeden çekin ve operatörleri kalbinizin içeriğine aşırı yüklemeye başlayın.

    Dengeleme öbek yönetimi

    Genellikle, programcılar yığın belleğini aynı "seviyede ayırmalı ve serbest bırakmalıdır. "Bir üye işlev

    MyClass:: create () yığın bellek bloğunu atar ve onu arayana gönderirse üye işlev MyClass:: release () olmalıdır. bellek yığınına döndürür. Özellikle, MyClass:: create () , üst işlevin belleğin kendisini serbest bırakmasını gerektirmemelidir. Bu kesinlikle tüm bellek problemlerinden kaçınmaz - üst işlev, MyClass:: release () 'yı çağırmayı unutabilir; ancak ihtimali biraz azaltmaktadır. Hataları işlemek için özel durumlar kullanın

    C ++'daki istisna mekanizması, hataları rahatça ve verimli bir şekilde ele almak için tasarlanmıştır. Şimdi bu özellik standartlaştırıldı, kullanmalısınız. Ortaya çıkan kod yazması daha kolay, okunması daha kolay ve bakımı daha kolay. Ayrıca, diğer programcılar bunu beklemek için geldi - onları hayal kırıklığına uğratmak istemezsiniz, değil mi?

    Çoklu kalıtımdan kaçının

    Operatör aşırı yüklemesi gibi çoklu kalıtım, başlangıç ​​aşamasında uğraşmanız gereken bir takım karmaşıklık seviyeleri ekler. Neyse ki, çoğu gerçek dünya ilişkileri tek kalıtımla açıklanabilir.

    Microsoft MFC sınıfları gibi ticaret kitaplıklarındaki çok katmanlı sınıfları kullanmakta serbestsiniz.Microsoft, sınıflarını belirlemek için oldukça zaman harcadı ve ne yaptığını biliyor.

    C ++ anlayış düzeyiniz ile rahat hissettikten sonra, çok katmanlı kalıtım hiyerarşileri kurmayı deneyin. Bu şekilde, ihtiyacınız olduğunda hazır olacaksınız.

    C ++ Programınızdaki Hatalardan Kaçınılması - AYRINTILAR

    Editörün Seçimi

    Genişletme Bağlantılar ve Bina Robotları için Pinouts - mankenler

    Genişletme Bağlantılar ve Bina Robotları için Pinouts - mankenler

    Eğer bir robot inşa ediyorsanız, çok sayıda elektrik bağlantısı, bu yüzden çok sayıda iğne ile uğraşıyorsunuz. Aşağıdaki tabloda, genişleme konektörleri ve pim numaraları için sinyal gösterilmektedir. İstenmeyen çapraz bağlantıları önlemeye yardımcı olabilir. Genişletme Konnektörü Pin Numarası Sinyal Genleşmesi Konnektör Pin Numarası Sinyal 1, 2 Toprak 16 P11 Yeşil LED 3, 4 + 5 ...

    Dizinler içeren Kablosuz Erişim Noktalarını bulma - mankenler

    Dizinler içeren Kablosuz Erişim Noktalarını bulma - mankenler

    Sıcak noktaları bulma konusunda çevrimiçi dizinler, gezinmek için mükemmel bir araçtır. ABD, Kanada ve dünyadaki artan sayıda sıcak nokta. Size kolaylık sağlamak için, bu dizinlerden bazıları. Dizin Notları JiWire WiFi Bulucu 144 ülkede ücretsiz ve ücretli Wi-Fi yerleri dizini sağlar. AT & T ...

    Ham Radyoda genel Sınıf Frekans Ayrıcalıkları - mankenler

    Ham Radyoda genel Sınıf Frekans Ayrıcalıkları - mankenler

    Yakında yapmadıysanız, siz Yükseltmeyi düşünüyorum. Aşağıdaki tabloda gösterildiği gibi, yüksek frekanslı (HF) bantlarda kullanmak için daha fazla frekansa sahipsiniz. Tüm lisans sınıfları için ABD frekansı ve mod ayrıcalıklarının eksiksiz bir listesi, Amerikan Radyo Röle Ligi'nden (ARRL) edinilebilir. Bant Frekansları ...

    Editörün Seçimi

    Adobe Flash CS6'da Maske Katmanlarını Kullanma - mankenler

    Adobe Flash CS6'da Maske Katmanlarını Kullanma - mankenler

    Adobe Flash CS6'da maskeleme kavramı Bir parçanın bölümlerini gizlemek ya da ortaya çıkarmak için bir şekli (ya da şekilleri) kullanır - tıpkı evinizdeki küçük bir pencere aracılığıyla dışarıdan bakmak gibi. Pencere boyutu, içerideyken görebileceğiniz şeyi sınırlar. Flash, özel bir katman özelliklerine sahiptir ...

    Flash CS5 3D Rotasyon Aletinin Kullanımı - mankenler

    Flash CS5 3D Rotasyon Aletinin Kullanımı - mankenler

    Adobe'nin kapsamlı çizim ve animasyon yetenekleri Flash Creative Suite 5, Flash'ın 3D Döndürme aracıyla büyük ölçüde geliştirilebilir. 3B Döndürme aracı, sembolü x, y ve z eksenleri etrafında döndürmek ve dönüştürmek için herhangi bir film klibi örneğinde kullanılabilir. Bir film klibi örneğini 3D olarak oluşturmak için bunları izleyin ...

    Flash CS5 3D Çeviri Aletini Kullanma - aumlalar

    Flash CS5 3D Çeviri Aletini Kullanma - aumlalar

    In 3D Döndürme aracının aksine Flash CS5 film kliplerini bir eksen etrafında döndüren Adobe Flash Creative Suite 5, 3D Çeviri aracı, bir film klibini algılanan mesafeyi ve sahnedeki diğer nesnelere göre derinliğini değiştirmek için belirli bir eksende kaydırır. Bu kavramı üçlü düşünün ...

    Editörün Seçimi

    Pratik İlköğretim Sınavı-Grafik Çözümleri - mankenler

    Pratik İlköğretim Sınavı-Grafik Çözümleri - mankenler

    Praxis İlköğretim sınavının Matematik bölümü bir dizi çizgide bir eşitsizliğe çözüm bulmanızı gerektiren bir soru. Başlamak için, çözümdeki sayıya bir nokta koyarsınız. Sembolü> veya

    Pratik İlk Öğretim Sınavı-Ölüm Şekilleri - mankenler

    Pratik İlk Öğretim Sınavı-Ölüm Şekilleri - mankenler

    Praxis İlköğretim Matematik ve Bilim bölümleri Eğitim sınavı, farklı ölçme şekillerine aşina olmanız gereken sorular içerir. Ölçümler, çeşitli tiplerde tanımlanabilir. Mesafe için İngilizce sistem birimleri inç, feet, metre ve mil içerir. Bunlar birbirine dayanır. Bir ayak 12 ...

    Pratik İlk Öğretim Sınavı-Akıcılık - mankenler

    Pratik İlk Öğretim Sınavı-Akıcılık - mankenler

    Praxis İlköğretim sınavı, yardımcı stratejilerinizi test eden sorular içerir öğrenciler akıcılıklarını İngilizce olarak geliştirirler. Bu stratejiler, grafik düzenleyicileri kullanarak ve çıkarımlar yapmayı içerebilir. Akıcı bir okuyucu, sınıf düzeyinde bir metni doğruluk, çabukluk ve ifade ile okuyabilir.