Apakah praktik yang baik untuk menjaga fungsi utama tetap terpisah dalam file sendiri?

14

Apakah praktik yang baik untuk memiliki file main.c yang hanya memiliki fungsi utama di dalamnya dan tidak ada fungsi lain sehingga semua fungsi lainnya dapat dihubungkan?

Jika tidak ada aturan yang pasti, kapan sebaiknya melakukannya dan tidak melakukannya?

Michael
sumber

Jawaban:

15

Idealnya, semua karya yang dapat dianggap sebagai bagian dari kode yang dapat digunakan kembali, harus dibuat dalam bentuk perpustakaan . Pekerjaan keseimbangan, adalah aplikasi yang harus terpisah di mana main()akan berada.

Tapi main()sendirian tidak harus duduk sendirian. Fungsi seperti parse_arguments(argc,argv) harus bersama dengan utama daripada terpisah.

Dipan Mehta
sumber
7

Standar pengkodean kami mengharuskan main () ada di main.c. Metode lain di main.c cenderung menjadi penangan kesalahan tingkat tinggi dan fungsi pembantu untuk utama (lihat jawaban @Dipan "parse_arguments", serta hal-hal seperti "display_help" dll.

Aturan yang baik untuk dilalui adalah ketika sebuah fungsi mulai melakukan lebih dari mendukung aplikasi yang sedang berjalan dan mulai melakukan logika bisnis, sudah waktunya itu keluar dari main.c

mattnz
sumber
4

Ada dua aturan praktis:

  1. Pembaca tidak perlu bertanya-tanya di mana Anda menyembunyikan main ().
  2. main () tidak boleh mengandung kekacauan yang tidak relevan.

Untuk mengimplementasikan standar pengkodean yang menyatakan bahwa main () harus selalu berada dalam file bernama main.c adalah praktik yang baik dan umum. File ini, serta main () sendiri, tidak boleh mengandung kekacauan yang tidak perlu.

Idealnya main () dan main.c hanya boleh berisi yang berikut ini

  • Termasuk file header program-lebar.
  • Argumen parsing kode argv, argc.
  • Pada sistem hostless: setup register kritis, setup stack pointer dll. Tetapi hanya jika main () adalah titik masuk pertama untuk program.
  • Panggilan untuk memulai OS, atau loop memanggil mesin negara program, atau dalam sistem desktop host, pembuatan dan inisialisasi windows terkait dengan utas GUI utama.
  • Fungsi internal (statis) yang dipanggil dari main (), menangani salah satu di atas.
  • Pada sistem yang dihosting: kembalikan 0.

sumber
1

Titik masuk yang bersih dalam file yang terpisah membuat aliran kode mudah dipahami dan dipelihara. Saya selalu memiliki kebiasaan ini untuk menjaga fungsi main () yang sangat kecil dan ringkas di file yang berbeda dari mana dan selanjutnya saya dapat melacak langkah-langkah program. Hanya demi kebersihan, ada baiknya memisahkannya.

Wajih
sumber