Rumah Keuangan Pribadi 10 Cara untuk menghindari bug di C ++ - dummies

10 Cara untuk menghindari bug di C ++ - dummies

Daftar Isi:

Video: cara menghapus program/aplikasi yang tidak bisa di uninstall lewat control panel 2024

Video: cara menghapus program/aplikasi yang tidak bisa di uninstall lewat control panel 2024
Anonim

Ini adalah fakta yang tidak menguntungkan bahwa Anda akan meluangkan lebih banyak waktu untuk mencari dan menghapus bug daripada yang Anda habiskan untuk benar-benar menulis program C ++ Anda di tempat pertama. Saran di sini dapat membantu Anda meminimalkan jumlah kesalahan yang Anda perkenalkan ke program Anda untuk membuat pemrograman menjadi pengalaman yang lebih menyenangkan.

Aktifkan semua peringatan dan pesan kesalahan

Sintaks C ++ memungkinkan banyak pengecekan kesalahan. Ketika kompilator menemukan sebuah konstruk yang tidak dapat diuraikan, tidak ada pilihan selain mengeluarkan pesan. Ia mencoba untuk menyelaraskan kembali dengan kode sumber (terkadang kurang berhasil), namun tidak akan menghasilkan eksekusi. Ini memaksa programmer untuk memperbaiki semua pesan error.

Menonaktifkan atau mengabaikan peringatan adalah gagasan yang sangat buruk. Ini seperti mencabut lampu "mesin cek" di dasbor mobil Anda karena ini mengganggu Anda. Mengabaikan masalah tidak membuatnya hilang.

Mengadopsi gaya pengkodean yang jelas dan konsisten

Menulis kode C ++ Anda dengan gaya yang jelas dan konsisten tidak hanya meningkatkan keterbacaan program Anda, namun juga menghasilkan kesalahan pengkodean yang lebih sedikit. Keadaan keadaan yang agak mengejutkan ini berawal dari kenyataan bahwa otak kita hanya memiliki sejumlah daya komputasi terbatas.

Bila Anda membaca kode yang bersih dan rapi dan mengikuti gaya yang Anda kenal, Anda menghabiskan sedikit kekuatan otak untuk mengurai sintaks pernyataan C ++. Ini membuat lebih banyak daya CPU otak untuk memecahkan kode program apa yang coba dilakukan dan bukan bagaimana melakukannya.

Gaya pengkodean yang baik memungkinkan Anda melakukan hal berikut dengan mudah:

Bedakan antara nama kelas, nama objek, dan nama fungsi

  • Pahami apa kelas, fungsi, atau objek yang digunakan untuk, berdasarkan namanya

  • Membedakan simbol preprocessor dari simbol C ++ (yaitu, #define objek harus menonjol)

  • Identifikasi blok kode C ++ pada tingkat yang sama (ini adalah hasil dari indentasi yang konsisten)

  • In Selain itu, Anda perlu membuat format standar untuk header modul Anda yang memberikan informasi tentang fungsi atau kelas di setiap modul, penulis, tanggal, versi, dan sesuatu tentang sejarah modifikasi.

Semua pemrogram yang terlibat dalam satu proyek harus menggunakan gaya pengkodean yang sama. Sebuah program yang ditulis dengan tambal sulam dengan gaya pengkodean yang berbeda membingungkan dan terlihat tidak profesional.

Beri Komentar kode saat Anda menuliskannya

Anda dapat menghindari kesalahan jika Anda mengomentari kode Anda saat Anda menulisnya, daripada menunggu sampai semuanya bekerja dan kemudian kembali dan menambahkan komentar.

Merumuskan komentar memaksa Anda untuk mencatat apa yang sedang Anda coba lakukan. Komentar singkat mencerahkan, baik saat Anda membacanya nanti dan saat Anda menuliskannya. Tuliskan komentar seolah-olah Anda sedang berbicara dengan programmer lain yang berpengetahuan luas.

Single-step setiap path di debugger setidaknya sekali

Sebagai programmer, Anda harus mengerti apa yang sedang dilakukan program Anda. Tidak cukup program mengeluarkan nilai yang diharapkan. Anda perlu memahami semua hal yang sedang dilakukan program Anda. Tidak ada yang memberi Anda nuansa yang lebih baik untuk apa yang terjadi di bawah tenda daripada menjalankan program dengan benar, menjalankannya selangkah demi selangkah dengan debugger yang bagus (seperti kode yang datang dengan Code:: Blocks).

Di luar itu, saat Anda men-debug sebuah program, Anda memerlukan bahan baku untuk mengetahui beberapa perilaku aneh yang mungkin muncul saat program berjalan. Tidak ada yang memberi Anda materi itu lebih baik daripada melangkah tunggal melalui setiap fungsi saat mulai beroperasi. Akhirnya, ketika sebuah fungsi selesai dan siap ditambahkan ke program ini, setiap jalur logis perlu dijalani setidaknya satu kali. Bugs jauh lebih mudah ditemukan saat Anda memeriksa fungsinya dengan sendirinya daripada setelah dilempar ke dalam panci dengan sisa fungsinya - saat itu, perhatian Anda telah beralih ke tantangan pemrograman baru. Batasi keterlihatan

Membatasi jarak pandang internal kelas ke dunia luar adalah landasan pemrograman berorientasi objek. Kelas harus bertanggung jawab atas keadaan internalnya - jika ada sesuatu yang kacau di kelas, maka itu adalah kesalahan pemrogram kelas. Pemrogram aplikasi harus khawatir memecahkan masalah yang ada.

Secara khusus, visibilitas terbatas berarti bahwa anggota data tidak boleh diakses di luar kelas - artinya, mereka harus ditandai sebagai dilindungi. Selain itu, fungsi anggota yang perangkat lunak aplikasi tidak perlu diketahui juga harus ditandai terlindungi. Jangan lagi memaparkan kelas internal daripada yang diperlukan untuk menyelesaikan pekerjaan.

Melacak memori tumpukan

Kehilangan jejak memori tumpukan adalah sumber kesalahan fatal yang paling umum terjadi pada program yang telah dilepaskan ke lapangan - dan, pada saat bersamaan, masalah yang paling sulit dilacak dan dihapus. (Karena kelas kesalahan ini sangat sulit ditemukan dan dihapus, ini lazim dalam program yang Anda beli.) Anda mungkin harus menjalankan program berjam-jam sebelum masalah mulai muncul (tergantung seberapa besar kebocoran memori).

Sebagai aturan umum, programmer harus selalu mengalokasikan dan melepaskan tumpukan memori pada tingkat yang sama. "Jika fungsi anggota MyClass:: create () mengalokasikan blok memori tumpukan dan mengembalikannya ke pemanggil, maka harus ada anggota MyClass:: release () yang mengembalikannya ke heap.Secara khusus, MyClass:: create () seharusnya tidak memerlukan fungsi induk untuk melepaskan memori.

Jika memungkinkan, MyClass harus melacak pointer memori tersebut dengan sendirinya dan menghapusnya di destruktor.

Nol keluar petunjuk setelah menghapus apa yang mereka arahkan ke

Pastikan Anda tidak memberi petunjuk setelah tidak lagi berlaku; Anda melakukannya dengan menugaskan mereka nilai nullptr. Alasan untuk tindakan ini menjadi jelas dengan pengalaman: Anda dapat terus menggunakan blok memori yang telah dikembalikan ke tumpukan dan bahkan tidak mengetahuinya. Sebuah program bisa berjalan dengan baik 99 persen dari waktu, sehingga sangat sulit untuk menemukan 1 persen kasus dimana blok tersebut dialokasikan kembali dan program tidak berjalan.

Jika Anda menghapuskan petunjuk yang tidak lagi valid dan Anda mencoba menggunakannya untuk menyimpan nilai (Anda tidak dapat menyimpan apapun di atau dekat lokasi null), program Anda akan segera mogok. Teriakan terdengar buruk, tapi bukan kalau itu menimbulkan masalah. Masalahnya ada; Ini hanya pertanyaan apakah Anda menemukannya atau tidak sebelum memasukkannya ke dalam produksi.

Gunakan pengecualian untuk menangani kesalahan

Mekanisme pengecualian di C ++ dirancang untuk menangani kesalahan dengan mudah dan efisien. Secara umum, Anda harus membuang indikator kesalahan daripada mengembalikan bendera kesalahan. Kode yang dihasilkan lebih mudah ditulis, dibaca, dan dipelihara. Selain itu, programmer lain telah datang untuk mengharapkannya, dan Anda tidak ingin mengecewakan mereka, bukan?

Batasi penggunaan pengecualian untuk kesalahan sebenarnya. Tidak perlu membuang pengecualian dari fungsi yang mengembalikan indikator "tidak berhasil" jika ini adalah bagian dari kehidupan sehari-hari untuk fungsi itu.

Deklarasikan destruktor virtual

Jangan lupa membuat penghancur untuk kelas Anda jika konstruktor mengalokasikan sumber daya seperti memori tumpukan yang perlu dikembalikan saat objek mencapai akhir kematiannya. Setelah membuat destructor, jangan lupa nyatakan itu virtual.

"Tapi," katamu, "kelas saya tidak mewarisi dari apapun, dan itu bukan subclass oleh kelas lain. "Ya, tapi

bisa menjadi kelas dasar di masa depan. Kecuali Anda memiliki beberapa alasan bagus untuk tidak mendeklarasikan destructor virtual, maka lakukanlah saat Anda pertama kali membuat kelas.

Berikan konstruktor copy dan operator tugas yang kelebihan muatan

Jika kelas Anda membutuhkan penghancur, hampir pasti memerlukan konstruktor salinan dan operator tugas yang kelebihan muatan. Jika konstruktor Anda mengalokasikan sumber daya seperti memori tumpukan, konstruktor salin dan operator penugasan default tidak akan berbuat apa-apa selain membuat malapetaka dengan menghasilkan beberapa petunjuk ke sumber yang sama. Bila penghancur salah satu benda ini dipanggil, maka akan mengembalikan aset tersebut. Ketika destruktor untuk salinan lainnya muncul, itu akan mengacaukan semuanya.

10 Cara untuk menghindari bug di C ++ - dummies

Pilihan Editor

10 Outlook 2013 Jalan pintas layak diambil - dummies

10 Outlook 2013 Jalan pintas layak diambil - dummies

Meskipun komputer dan program perangkat lunak seperti Outlook 2013 seharusnya menyelamatkan Anda waktu, beberapa hari ini sepertinya tidak menjadi masalah. Tombol juggling, kunci, dan Pita sepertinya bisa memakan waktu seharian. Berikut adalah beberapa cara pintas yang bisa menghemat waktu dan ketegangan Anda.

Cara menambahkan kontak di Outlook 2013 - dummies

Cara menambahkan kontak di Outlook 2013 - dummies

Bila bukan apa yang Anda ketahui tapi siapa yang Anda kenal, Anda butuh alat yang bagus untuk mencatat siapa siapa. Outlook 2013 adalah alat yang hebat untuk mengelola nama dan alamat Anda, dan ini mudah digunakan sebagai Buku Hitam Kecil Anda.

Cara menambahkan foto ke kontak Outlook 2013 - dummies

Cara menambahkan foto ke kontak Outlook 2013 - dummies

Anda dapat menyertakan gambar dengan kontak informasi yang Anda kumpulkan di Outlook 2013, dan tidak hanya untuk hiasan. Kini setelah banyak ponsel dan perangkat seluler lainnya melakukan sinkronisasi dengan daftar Kontak Outlook, Anda dapat membuat gambar seseorang muncul di layar ponsel Anda setiap kali dia menelepon atau mengirim SMS. Foto-foto itu ...

Pilihan Editor

Cara Mengatasi Masalah Lingkaran di lingkaran PSAT / NMSQT - dummies

Cara Mengatasi Masalah Lingkaran di lingkaran PSAT / NMSQT - dummies

Ada di mana-mana, terutama di PSAT / NMSQT. Bukan kebetulan bahasa Inggris berisi begitu banyak rujukan ke lingkaran: lingkaran teman, air mengitari cerat, lingkaran penuh, dan sebagainya. Ketika Anda menekan lingkaran pertanyaan pada PSAT / NMSQT, ingat fakta-fakta ini: Jari-jari adalah garis lurus dari pusat lingkaran ...

Meningkatkan Motivasi Anda untuk Dilakukan dengan baik di MAT - dummies

Meningkatkan Motivasi Anda untuk Dilakukan dengan baik di MAT - dummies

Uji Analogi Miller (Miller Analogies Test - MAT) adalah tes standar yang biasanya digunakan untuk penerimaan sekolah pascasarjana, jadi Anda sudah termotivasi untuk melakukannya dengan baik. Sebagai belajar untuk MAT menjadi sulit, memakan waktu, membosankan, atau hanya membosankan, akan sulit untuk mempertahankan motivasi Anda untuk melanjutkan pencarian Anda. Jadi, bagaimana Anda bisa meningkatkan level Anda saat ini?

Pilihan Editor

Bagaimana memberi nama file HTML - dummies

Bagaimana memberi nama file HTML - dummies

Anda tidak dapat membuka kode Anda di browser sampai Anda menyimpan itu dengan perpanjangan nama file. html (atau .htm). Ingat bahwa judul halaman ditampilkan di bilah judul browser atau bilah tab. Judul benar-benar bagaimana halaman Anda "diidentifikasi" ke seluruh dunia. Nama file halaman, meskipun, lebih merupakan bagian dalam ...

Bagaimana Mencocokkan Email Pemasaran dengan Brand Anda - dummies

Bagaimana Mencocokkan Email Pemasaran dengan Brand Anda - dummies

Branding e-mail pemasaran Anda membantu audiens Anda untuk segera mengenali dan membedakan e-mail Anda dari e-mail asing yang mereka terima. Menjaga pencitraan e-mail Anda konsisten dari waktu ke waktu memungkinkan penerima Anda mengenal Anda dan e-mail karena mereka menerima beberapa e-mail dari Anda. Semua komunikasi bisnis Anda harus mengandung elemen pencitraan merek yang konsisten, dan ...