Dalam C, Anda akan sering / kadang-kadang (karena gaya) menggunakan static
variabel lingkup file di mana Anda akan menggunakan variabel anggota kelas pribadi di C ++. Saat melakukan penskalaan ke program multithreaded, cukup menambahkan thread_local
C11 atau ekstensi yang didukung lama __thread
cocok. Saya tahu Anda bisa melakukan hal yang persis sama dalam C sebagai C ++ dengan meletakkan segala sesuatu di dalam struct
dan membuat satu set fungsi yang mengambil pointer ke itu struct
sebagai argumen pertama. Beberapa perpustakaan melakukan ini secara ekstensif. Tapi gaya pribadi saya adalah menjaga struct
sekecil mungkin, jika perlu.
Saya sering membaca atau mendengar beberapa orang yang memperdebatkan variabel 'global' sangat buruk. Saya mengikuti alasan mereka, dan sebagian besar argumen mereka tampaknya terkait dengan extern
variabel global dalam istilah C. Apa yang mereka katakan tentu benar. Saya kadang-kadang menggunakan 1 atau 2 extern
variabel yang dideklarasikan di seluruh program ketika akan menyederhanakan banyak hal dan ketika mudah untuk melacaknya, tetapi melangkah lebih jauh akan dengan mudah membuat program tidak dapat diprediksi.
Bagaimana dengan static
variabel? Apakah mereka masih memiliki masalah yang sama dengan variabel global 'nyata'? Mungkin saya bahkan tidak perlu mengajukan pertanyaan ini dan melanjutkan jika saya pikir apa yang saya lakukan adalah benar, tetapi hari ini saya melihat jenis posting 'variabel global yang BURUK' lainnya, dan akhirnya datang ke sini berpikir mungkin ini adalah hak tempat untuk pertanyaan semacam itu. Apa yang kamu pikirkan?
Pertanyaan ini bukan merupakan duplikat dari ini karena pertanyaan ini menanyakan tentang extern
dan static
variabel non-lokal sedangkan pertanyaan lainnya adalah tentang variabel file-lingkup dan blok-lingkup static
.