Ev Kişisel Finans C ++'da Bug'dan Kaçınma Yolları - mankenler

C ++'da Bug'dan Kaçınma Yolları - mankenler

İçindekiler:

Video: C++ Ölüyor mu? Öğrenmek Hata mı? 2024

Video: C++ Ölüyor mu? Öğrenmek Hata mı? 2024
Anonim

Hataları aramak ve kaldırmak için C ++ programlarınızı yazarken harcayacağınızdan daha fazla zaman harcamak talihsiz bir gerçektir. Buradaki öneriler, programlamayı daha keyifli bir deneyim haline getirmek için programlarınıza eklediğiniz hataların sayısını en aza indirmenize yardımcı olabilir.

Tüm uyarıları ve hata mesajlarını etkinleştirin

C ++ sözdizimi birçok hata denetimi yapmanıza izin verir. Derleyici, salt okunamayacağı bir yapıya kavuştuğunda, bir ileti çıkarma dışında başka seçeneği yoktur. Kaynak kodu ile yedeklemeyi dener (bazen başarıyla başarısız), ancak bir çalıştırılabilir dosyası oluşturmaz. Bu, programcıyı tüm hata mesajlarını düzeltmeye zorlar.

Bununla birlikte, C ++, bulabileceği bir yapıya rastladığında, ancak yapı her durumda kokuyorsa, C ++ bir uyarı mesajı üretir. C ++, istediğini anladığından emin olduğundan, ilerleyip bir yürütülebilir dosya oluşturur, böylece uyarıları yoksayabilirsiniz. Gerçekten, rahatsız edilmek istemiyorsanız, uyarıları devre dışı bırakabilirsiniz.

Uyarıların devre dışı bırakılması veya başka şekilde yok sayılması son derece kötü bir fikirdir. Aracınızın kontrol panelindeki "kontrol lambası" ışığının fişini çekmeniz biraz benzer, çünkü sizi rahatsız ediyor. Sorunu görmezlikten gelmek gitgide kurtarmaz.

Açık ve tutarlı bir kodlama stili seçin

C ++ kodunuzu açık ve tutarlı bir tarzda yazmak yalnızca programınızın okunabilirliğini arttırmakla kalmaz, aynı zamanda daha az kodlama hatası ile sonuçlanır. Bu biraz şaşırtıcı durum, beyinlerin yalnızca sınırlı miktarda bilgisayar gücü bulunduğundan kaynaklanmaktadır.

Temiz ve düzgün olan ve tanıdığınız bir stili izleyen kodu okuduğunuzda, C ++ ifadelerinin sözdizimini ayrıştırarak çok az beyin gücü harcıyorsunuz demektir. Bu, programın ne yapmaya çalıştıklarını çözmek için daha fazla beyin işlemcisi gücü bırakır ve nasıl yapıldığını değil.

İyi bir kodlama stili, aşağıdakileri kolaylıkla yapmanızı sağlar:

  • Sınıf isimleri, nesne adları ve işlev adları arasında ayrım yapma

  • Sınıf, işlev veya nesnenin neye benzediğini anlama

  • Önişlemci sembollerini C ++ sembollerinden ayırın (yani #define nesneleri öne çıkmalıdır)

  • C ++ kod bloklarını aynı seviyede tanımlayın (bu tutarlı girintilendirme sonucudur)

Buna ek olarak, modül başlıkları için her bir modüldeki işlevler veya sınıflar, yazar, tarih, sürüm ve değişiklik geçmişi hakkında bir bilgi sağlayan standart bir biçim oluşturmanız gerekir.

Tek bir projede yer alan tüm programcılar aynı kodlama stilini kullanmalıdır. Farklı kodlama stillerinin bir patchwork'inde yazılmış bir program kafa karıştırıcıdır ve profesyonelce görünmemektedir.

Yazarken kodu yorumlayın

Kodunuzu yazarken yorumluyorsanız, her şey düzgün çalışıncaya kadar beklemek yerine, geri dönüp yorumları eklemek hataları önleyebilirsiniz.

Yorumları formüle etmek, denemek istediğiniz şeyin stoğunu almaya zorlar. Kısa yorumlar aydınlatıcıdır, her ikisi de onları daha sonra okurken ve yazarken de. Sanki başka, bilgili bir programcı ile konuşuyorsanız yorumları yazın.

Hata ayıklayıcıdaki her yol en az bir kez

Bir programcı olarak, programınızın ne yaptığını anlamak zorundasınız. Programın beklenen değeri çıktısı yeterli değildir. Programınızın yaptığı her şeyi anlamanız gerekir. tek adımlık programından daha iyi bir şey hissettiren, iyi bir hata ayıklayıcıyla adım adım yürüterek (Code:: Blocks ile gelen gibi) size hiçbir şey vermezsiniz.

Buna ek olarak, bir programa hata ayıklarken, programın çalışmasıyla ortaya çıkabilecek bazı tuhaf davranışları anlamak için ham maddeye ihtiyacınız var. Hiçbir şey bu malzemeyi, hizmete girerken her bir işleve tek adım atmaktan 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. Fonksiyonların geri kalanıyla birlikte pota atıldıktan sonra işlevleri kendiniz incelediğinizde hataların bulunması çok daha kolaydır - o zamana kadar dikkatinizi yeni programlama zorluklarına sokmuştur.

Görünürlüğü sınırlama

Sınıf iç mekanlarının görünürlüğünü dış dünyaya sınırlama, nesne yönelimli programlamanın temel taşlarından biridir. Sınıf kendi iç durumundan sorumlu olmalıdır - sınıfta bir şey berbat olursa, o zaman sınıf programcısının hatasıdır. Uygulama programcısı eldeki sorunun çözülmesi konusunda endişelenmelidir.

Özellikle, sınırlı görünürlük, veri üyelerinin sınıfın dışında erişilebilir olmaması gerektiği anlamına gelir - yani korumalı olarak işaretlenmelidir. Buna ek olarak, uygulama yazılımının bilmeye ihtiyacı olmayan üye işlevleri de korumalı olarak işaretlenmelidir. Sınıf iç kısımlarını işi bitirmek için gerekli olandan daha fazla maruz bırakmayın.

Yığın belleğini takip etme

Yığın belleğinin kaybolması, sahaya çıkarılan programlarda ölümcül hataların en yaygın kaynağıdır - ve aynı zamanda izini sürmek ve kaldırmak için en zor problemdir. (Bu hata sınıfı bulmak ve kaldırmak o kadar zor olduğundan, satın aldığınız programlarda yaygın) Bellek sızıntısının ne kadar büyük olduğuna bağlı olarak, sorunlar ortaya çıkmaya başlamadan önce bir saat boyunca bir programı çalıştırmanız gerekebilir.

Genel kural olarak, programcılar her zaman yığın belleğini aynı "seviyede ayırmalı ve serbest bırakmalıdır. "Bir üye işlevi MyClass:: create () yığın bellek bloğunu tahsis eder ve çağırana geri gönderir, öyleyse onu yığına döndüren MyClass:: release () üyesi olmalıdır.Özellikle MyClass:: create (), üst işlevin belleği serbest bırakmasını gerektirmez.

Mümkünse, MyClass bu bellek işaretçilerini tek başına takip etmeli ve yıkıcıda silmeli.

İşaretçileri işaret ettikten sonra işaretçileri sıfırlayın

İşaretçiler artık geçerli olmadıklarında sıfırlandığından emin olun; bunlara nullptr değeri atayarak yapabilirsiniz. Bu eylemin nedenleri deneyimle netleşiyor: Yığınına döndürülen ve hatta bunu bilmeyen bir bellek bloğu kullanmaya devam edebilirsiniz. Bir program, zamanın yüzde 99'unu iyi çalıştırabilir, böylece blokun yeniden tahsisi ve programın çalışmadığı vakaların yüzde 1'ini bulmak çok zor hale gelir.

Artık geçerli olmayan işaretçileri boşa çıkarırsanız ve bir değeri depolamak için kullanmaya çalışırsanız (boş bir konumda veya yakınında herhangi bir şey depolamazsanız), programınız derhal çökecektir. Çökme kötü gelir, ancak bir sorun ortaya çıkarsa olmaz. Sorun şu: onu üretime başlamadan önce bulup bulmadığınıza sadece bir soru.

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. Genel olarak, bir hata bayrağı yerine bir hata işareti atmanız gerekir. Ortaya çıkan kod, yazmak, okumak ve sürdürmek daha kolaydır. Ayrıca, diğer programcılar bunu beklemek için geldi ve onları hayal kırıklığına uğratmak istemezsiniz, değil mi?

İstisnaları kullanımınızı gerçek hatalarla sınırlayın. Bu fonksiyon için günlük yaşamın bir parçası olduğu takdirde "işe yaramadı" göstergesini döndüren bir işlevden bir istisna atmak gerekli değildir.

Yıkıcıları sanal olarak bildirin

Oluşturucu, yığın belleği gibi nesne sonuna gelindiğinde geri gönderilmesi gereken kaynakları ayırırsa, sınıfınız için bir yıkıcı oluşturmayı unutma. Bir yıkıcı yarattıysanız, onu sanal ilan etmeyi unutmayın.

"Ama," diyorsun ki, "sınıfım hiçbir şeyden miras kalmaz ve başka bir sınıf tarafından alt sınıflara ayrılmış değildir. "Evet, ancak gelecekte bir temel sınıf haline gelebilir. Yıkıcıyı sanal olarak bildirmemek için iyi bir nedeniniz yoksa sınıfı ilk oluştururken yapın.

Bir kopya yapıcı sağlayın ve aşırı yüklenmiş atama işleci

Sınıfınızın bir yıkıcıya ihtiyacı varsa, neredeyse mutlaka bir kopya oluşturucuya ve aşırı yüklenmiş bir atama işlecine ihtiyaç duyar. Yapıcınız yığın belleği gibi kaynakları ayırıyorsa, varsayılan kopya yapıcısı ve atama işleci, aynı kaynaklara birden çok işaretçi üreterek hasar oluşturmaz.

Bu nesnelerden birinin yıkıcı çağrıldığında, varlıkları geri yükleyecektir. Diğer kopyanın yıkıcısı geldiğinde, işler berbat olacak.

C ++'da Bug'dan Kaçınma Yolları - mankenler

Editörün Seçimi

Kendi Excel 2007 Şablonlarınızı Oluşturun - mankenler

Kendi Excel 2007 Şablonlarınızı Oluşturun - mankenler

Hazır bir Excel 2007 şablonunu bulamazsanız faturaya uyuyor, oluşturduğunuz veya şirketinizin elinde bulunan örnek çalışma kitaplarından kendi şablonlarınızı oluşturuyor. Kendi şablonunuzu oluşturmanın en kolay yolu, gerçek bir çalışma kitabı prototipi oluşturmak ve dosyayı şablon dosyası biçimini kullanarak kaydedin ...

Kendi Excel 2010 Şablonlarınızı Oluşturma - mankenler

Kendi Excel 2010 Şablonlarınızı Oluşturma - mankenler

Hazır Excel 2010 şablonunu bulamazsanız faturaya uyuyor, oluşturduğunuz veya şirketinizin elinde bulunan örnek çalışma kitaplarından kendi şablonlarınızı oluşturuyor. Kendi şablonunuzu oluşturmanın en kolay yolu, gerçek bir çalışma kitabı prototipi oluşturmak ve dosyayı şablon dosyası biçimini kullanarak kaydedin ...

Excel 2007 Grafiğinin Tipini ve Stilini özelleştiren - aumluları

Excel 2007 Grafiğinin Tipini ve Stilini özelleştiren - aumluları

Bir grafik eklediğinizde bir Excel 2007 çalışma kitabı, Şeritte yeni bir Grafik Araçları Tasarım sekmesi görüntülenir. Grafik türünü ve stilini özelleştirmek için Grafik Araçları Tasarım sekmesindeki komut düğmelerini kullanabilirsiniz. Tasarım sekmesi aşağıdaki düğme gruplarını içerir: Tür grubu Değiştir Grafik Türü ...

Editörün Seçimi

ÜÇüncü Temel, Çalınma Evini ve Diğer Beyzbol Beyitlerini Çalın

ÜÇüncü Temel, Çalınma Evini ve Diğer Beyzbol Beyitlerini Çalın

ÜÇüncü temel çalmak genellikle ikinci çalmaktan daha kolaydır. Birçok atış çizmeden ilk önce olduğundan daha büyük bir yol alabilirsin. Zamanlamanız iyi ise, atıcı topu bırakmadan önce saniyelerden de çıkabilirsiniz. Sürahi genellikle koşucuları ikinci sıradan seçmek daha zor olur ...

Basketbol Takımınızda Bir Balo Domuzuyla

Basketbol Takımınızda Bir Balo Domuzuyla

Balo domuzu - asılı bir oyuncu uzun süreler boyunca topa vurur ve geçmek yerine her yere ateş etmeyi amaçlar - tüm takım için gerçek sorunlar yaratır. Örneğin, topu domuzu, takımın moralini zayıflatan ve öldüren puan almaya çalışan açık takım arkadaşlarını görmezden gelir ...

Editörün Seçimi

Canon EOS 6D'ye Yazar Adı Nasıl Eklenir Canon EOS 6D'ye Yazar Adı Nasıl Eklenir

Canon EOS 6D'ye Yazar Adı Nasıl Eklenir Canon EOS 6D'ye Yazar Adı Nasıl Eklenir

Adınızı aşağıdaki gibi ekleyebilirsiniz: Canon'la çektiğiniz her görüntünün yazarı. Bilgiler, çektiğiniz her resme EXIF ​​verisi olarak eklenir. Yazar bilgilerinizi kameraya kaydetmek için: Menü düğmesine basın. Daha önce kullanılan menü görüntülenir. Kamera Ayarları ... 4 ...

Rebel T6i / 750D'den Görüntülere Nasıl Temizleme Talimatları Ekleyeceksiniz - mankenler

Rebel T6i / 750D'den Görüntülere Nasıl Temizleme Talimatları Ekleyeceksiniz - mankenler

Küçük noktalar görüntülerinizde tutarlı bir şekilde görünüyorsa ve Rebel T6i / 750D'nin lensindeki kirin nedeni değilse - sensörünüzün temizlemeye ihtiyacı olabilir. Sensörü kendiniz temizlemeyin, çünkü ne yaptığınızı bilmiyorsanız makinenizi kolayca mahvedebilirsiniz. Bunun yerine, fotoğraf makinesini çekin ...