Checklist untuk pemrograman yang baik

Checklist ini akan membantu Anda menulis program berkualitas tinggi. 
Raphael Finkel, 2005/08/17

  • Pengidentifikasi: Pastikan semua pengidentifikasi Anda bermakna.
    1. Satu-surat pengenal hampir tidak pernah bermakna.
    2. Nama-nama seperti flag dan temp jarang bermakna. Alih-alih flag, pertimbangkan penamaan kondisi Boolean itu memeriksa, seperti valueFound .
    3. Pertimbangkan pengidentifikasi multi-kata, seperti nameIndex . Pengidentifikasi panjang (dalam alasan) cenderung sangat mudah dibaca.
  • literal telanjang: Hindari nomor selain 0 dan 1 dan string selain "" dalam program Anda kecuali jika Anda mendefinisikan konstanta.
    1. Jangan menggunakan integer literal sebagai array terikat.
    2. Jangan menggunakan integer literal sebagai parameter run, seperti nomor batas waktu atau port.
    3. Jangan menggunakan bilangan bulat literal untuk memilih entri menu.
    4. Jangan menggunakan integer literal untuk mengukur ukuran string atau data; menggunakan sizeof () dan strlen () di C dan C ++ dan .length () dan .size di Jawa.
    5. Jangan gunakan string literal untuk nama file. Anda mungkin keluaran string literal, meskipun.
    6. Jangan menggunakan integer literal untuk indeks ke array yang berisi data yang heterogen.
    7. Jangan mendeklarasikan identifier dengan nama yang menunjukkan literal, seperti "tiga puluh".
  • Modularisasi: Sebuah program dibangun dari komponen yang saling berinteraksi.
    1. Jangan meletakkan semua kode Anda ke dalam main () rutin.
    2. Bahkan, tidak membuat rutin melakukan terlalu banyak pekerjaan. Jika itu lebih dari sekitar 50 baris, itu mungkin terlalu lama.
    3. Jika Anda menduplikasi kode beberapa kali, mempertimbangkan apakah lingkaran akan bekerja lebih baik, atau mungkin sebuah sub rutin.
    4. Jika Anda menemukan Anda indentasi sangat dalam, Anda kemungkinan besar tidak menggunakan subrutin ketika Anda harus.
    5. Jangan menciptakan rutinitas perpustakaan (kecuali tugas Anda membutuhkan itu). Lihatlah di manual untuk belajar tentang sprintf () dan atoi () , misalnya.
    6. Gunakan file header di C dan C ++ (file header memiliki nama yang diakhiri .h ) untuk mendefinisikan semua konstanta yang dibutuhkan oleh beberapa file dan menyatakan semua subrutin diekspor antara file. Tetapi tidak menempatkan tubuh subrutin di file header (dengan pengecualian langka subrutin inline).
  • Format: Program Anda harus mudah dibaca.
    1. Lihatlah http://geosoft.no/development/javastyle.html untuk saran yang jelas tentang isu-isu presentasi lainnya format dan. Referensi ini secara khusus ditujukan pada Java, tetapi memiliki nilai untuk bahasa lain, juga.
    2. Cobalah untuk membatasi semua baris Anda ke 80 karakter; banyak orang melihat kode di jendela 80-kolom untuk alasan historis.
    3. Jangan menggunakan kedua tab dan spasi untuk indentasi, karena tidak semua editor teks memperlakukan tab sebagai persis 8 ruang.
    4. Apakah mengikuti pola lekukan yang konsisten yang mencerminkan struktur pengendalian program.
    5. Jangan menaruh banyak baris kosong dalam program Anda. Satu baris kosong antara subrutin cukup.
    6. Sistem operasi yang berbeda menghentikan jalur cara yang berbeda. Jika Anda bergerak di antara Win32 (yang menggunakan \ r \ n), Unix (yang menggunakan \ n), dan MacOS (yang menggunakan \ r), memformat file Anda menggunakan metode terminasi yang konsisten.
    7. Jangan mengatur bit executable (Unix) pada file sumber Anda.
  • Coding: Anda ingin coding Anda harus jelas, dipelihara, dan efisien, dalam urutan itu. Beberapa aturan di sini sangat spesifik; yang lain lebih umum.
    1. Jangan menggunakan urutan jika pernyataan yang tidak memiliki lagi jika hanya satu bisa cocok; menggunakan lain jika .
    2. Bila Anda ingin mengkategorikan input teks, tidak menghitung kemungkinan karakter pertama.
    3. Menggunakan operator pergeseran bukannya perkalian untuk membangun pola bit.
    4. Dalam saklar pernyataan, selalu memeriksa kasus default. Demikian juga, dalam urutan jika-maka-lain pernyataan, menggunakan final lain .
    5. Semua panggilan sistem dapat gagal. Selalu periksa kode kembali, dan menggunakan perror () untuk melaporkan kegagalan.
    6. Booleans harus selalu menggunakan boolean jenis di Jawa, bool di C ++, dan 0/1 bilangan bulat dalam C. Jangan gunakan karakter t dan f, dan tidak menggunakan -1 dan 1.
    7. Gunakan loop untuk menginisialisasi struktur data jika memungkinkan.
    8. Gunakan setiap variabel dan masing-masing bidang struktur untuk tepat satu tujuan. Jangan membebani mereka kecuali ada alasan yang baik untuk melakukannya.
    9. Jangan gunakan identifier yang sama untuk kedua jenis, variabel, dan nama file, bahkan jika Anda mengubah kapitalisasi. Ini terlalu membingungkan.
    10. Jika Anda memodifikasi data dengan htonl () atau rutinitas yang sama sebelum transmisi jaringan, tidak memodifikasi data di tempat. Membangun struktur data kedua.
    11. Cobalah untuk tidak menggunakan variabel global atau nonlokal. Mendeklarasikan setiap variabel dalam lingkup terkecil Anda bisa. Ada penggunaan yang sah dari variabel nonlokal, tapi pastikan Anda benar-benar membutuhkannya.
    12. Shell dan Perl program harus memiliki mereka #! baris sebagai baris pertama dari file; jika tidak, garis hanya komentar.
    13. Cobalah untuk menghindari coding kasus-kasus khusus. Anda dapat sering menggunakan pseudo-data atau metode Data-struktur lain yang memungkinkan Anda untuk melipat kasus khusus ke dalam kasus biasa.
  • Compiler: Biarkan mereka membantu Anda menemukan kesalahan
    1. Selalu memanggil compiler dengan semua peringatan diaktifkan. Untuk C dan C ++, menggunakan Wall flag. Untuk Jawa, menggunakan - Xlint:all -deprecation, dan menggunakan PMD program untuk mendapatkan saran untuk gaya yang lebih baik. Untuk Python, menggunakan -t -w all.
    2. Semua program Perl harus dijalankan dengan -w flag dan harus memiliki penggunaan yang ketat . Semua Perl cgi-bin script harus memiliki -T flag, juga.
  • The make utilitas: Gunakan, dan menggunakannya dengan baik.
    1. Sebuah makefile harus selalu memiliki resep "bersih", yang harus menghapus semua file yang dapat direkonstruksi oleh resep lain dalam makefile, termasuk objek dan file executable.
    2. Jika proyek Anda memiliki beberapa file sumber, makefile harus menghasilkan objek ( .o ) file yang diperlukan dan menghubungkan mereka bersama-sama.
    3. Makefile harus ditulis sehingga jika Anda menjalankan membuat dua kali berturut-turut, jangka kedua tidak ada kompilasi ulang.
    4. Setiap resep harus membuat file yang ditentukan dalam target.
    5. Setiap resep harus menggunakan setiap file yang ditentukan dalam daftar prasyarat nya.
    6. Belajar untuk menggunakan aturan untuk target seperti .c.o untuk menghindari makefiles berulang-ulang.
    7. Jika Anda hanya memiliki satu C atau C ++ file sumber, file executable harus memiliki nama yang sama (tanpa ekstensi .c atau .cpp ).
    8. Pastikan Anda daftar semua .h file sebagai prasyarat di mana mereka dibutuhkan. Pertimbangkan untuk menggunakan makedepend untuk menghasilkan daftar prasyarat untuk Anda.
  • Dokumentasi: Ini bukan hanya hanya untuk kelas tersebut. Ini membantu Anda ketika Anda menulis program, juga!
    1. Tambahkan dokumentasi saat Anda menulis program. Anda selalu dapat mengubah sebagai perubahan desain Anda.
    2. Termasuk dokumentasi eksternal: Bagaimana seseorang mengkompilasi dan menjalankan program, dan apa itu dimaksudkan untuk lakukan? Dokumentasi eksternal bisa di file terpisah; untuk proyek-proyek kecil, bisa komentar di file sumber tunggal.
    3. Termasuk dokumentasi internal: algoritma dan struktur data yang Anda gunakan? Gambaran dapat di file terpisah, tetapi biasanya dokumentasi internal ditempatkan pada spesifik rutinitas, deklarasi, dan langkah-langkah yang menjelaskan.
    4. Periksa seluruh program dan dokumentasi untuk kesalahan ejaan. Hal ini tidak sopan untuk menyerahkan pekerjaan yang salah eja, dan bespeaks kurangnya perhatian terhadap detail.
    5. Periksa semua dokumentasi Anda (dan pesan output) untuk kesalahan tata bahasa.
    6. Program jauh lebih mudah dibaca jika Anda menempatkan komentar singkat pada penutupan kawat gigi. Misalnya, penjepit menutup bersyarat dapat memiliki komentar seperti "jika nilai terlihat baik". Sebuah penjepit menutup loop dapat memiliki komentar seperti "untuk setiap baris masukan". Sebuah penjepit menutup prosedur dapat memiliki komentar hanya penamaan prosedur.Sebuah penjepit menutup kelas dapat memiliki komentar mengatakan "kelas" dan kemudian nama kelas.