Saya memiliki argumen dengan kolega saya tentang pedoman C ++ untuk diikuti.
Dia saat ini mendesain semua perpustakaannya seperti itu:
- Dia menggunakan huruf besar dan kecil secara tidak konsisten dalam nama file-nya
- Beberapa tajuknya tidak memiliki ekstensi
Saya percaya bahwa tidak memiliki ekstensi adalah sesuatu yang disediakan untuk file standar C ++ dan bahwa menggunakan huruf besar rentan kesalahan (terutama ketika Anda berurusan dengan kode yang dimaksudkan untuk bekerja pada Windows dan Linux).
Maksudnya adalah bahwa ia mengikuti Qt
konvensi (bahkan untuk kode yang tidak menggunakan Qt) dan terus berkata: "Jika Qt melakukannya dengan cara itu, maka itu tidak mungkin buruk."
Sekarang saya mencoba untuk tetap berpikiran terbuka, tetapi saya benar-benar merasa tidak enak ketika harus bekerja di / dengan perpustakaannya. Apakah ada seperangkat aturan umum tentang hal ini? Apakah standar mengatakan sesuatu tentangnya?
Terima kasih banyak.
#define signal
... ... ... ("Jika Qt melakukannya seperti itu, maka itu tidak mungkin buruk.") - Saya tidak bisa mengatakan saya pribadi setuju dengan semua pilihan desain mereka.Qt
. Saya bahkan berpikir itu adalah perpustakaan yang luar biasa tetapi beberapa pilihan desain mereka benar-benar terasa salah bagi saya._
populer, kode yang digunakan luas, tapi pasti bertentangan dengan standar.*.hpp
untuk header c ++, dan semua alat saya "mengerti".Jawaban:
Ekstensi (atau kurangnya), sejauh yang saya tahu, tidak akan menyebabkan masalah. Saya akan mengatakan bahwa menjatuhkan ekstensi sama sekali tidak nyaman karena membuat sulit untuk mencari file header (misalnya dengan wildcard * .h dan * .hpp) dan itu membuatnya lebih sulit untuk mengidentifikasi isi file (misalnya jika editor Anda bergantung pada ekstensi untuk memilih mode penyorotan sintaks yang tepat).
Dari sudut pandang kode, tidak ada banyak perbedaan, bahkan casingnya tidak bermasalah selama Anda menggunakan case yang konsisten di mana-mana dan tidak bergantung pada perbedaan case saja untuk membedakan file. Dari sudut pandang kenyamanan, lebih mudah untuk tetap menggunakan huruf kecil dan memiliki ekstensi (baik .h atau .hpp).
Namun, yang lebih penting dari semua yang disebutkan di atas, adalah memilih satu konvensi untuk seluruh tim pengembangan Anda dan menaatinya . Jauh lebih buruk untuk melihat bagaimana sebuah file ditutup, dinamai, dan ekstensi apa yang digunakannya kapan pun Anda ingin memasukkan sesuatu - semua ini harus "dapat ditebak" dengan pengetahuan tentang hal yang Anda coba gunakan.
sumber
Tidak ada aturan (dalam standar) bahwa hanya file header standar dapat tanpa ekstensi; nama file bisa menjadi apa saja yang Anda inginkan. Namun praktik umum yang baik menunjukkan bahwa:
tidak ada file yang tanpa ekstensi, dan
berbagai jenis file memiliki ekstensi yang berbeda — khususnya, header C ++ menggunakan ekstensi yang berbeda (
.hpp
atau.hh
) dari header yang dapat diterima oleh kompiler C.(Menyesal, aturan kedua sering dilanggar, dan orang sering melihat file header C ++ dengan
.h
. Dari pengalaman pribadi, saya dapat memastikan bahwa ini akan menyebabkan masalah pemeliharaan di jalan, tetapi ini adalah praktik umum.)Sehubungan dengan kasus, sangat diperlukan kehati-hatian, karena nama file sensitif dalam beberapa sistem, dan tidak pada yang lain. Saya telah melihat dua aturan berbeda yang berfungsi: baik semuanya dalam huruf kecil dalam nama file, atau nama file mengikuti aturan yang persis sama tentang kasus seperti untuk simbol di C ++.
Dalam kedua kasus, Anda menetapkan aturan untuk proyek, dengan konsensus, dan semua orang mengikutinya.
sumber
Iya. Ya, benar-benar bisa. Desain perpustakaan mereka adalah "Kami sangat ingin menjadi Java". Ini berantakan total. Perpustakaan standar jauh lebih baik.
Juga, pada dasarnya, ini adalah kesalahan logis. Desain Qt hanya layak ditiru jika Anda dapat memberikan argumen logis tentang mengapa itu baik, itu tidak baik hanya karena itu Qt.
sumber
Seperti yang saya tahu, sejak standar 1998, hanya header perpustakaan standar yang akan tanpa .h. Jadi file header C ++ non-standar secara konvensional masih ditulis dengan .h. Tetapi ingatlah bahwa itu adalah konvensi, Anda tidak dapat menggunakan ekstensi atau bahkan ekstensi .txt, seperti Anda menulis kelas Anda dimulai dengan huruf kecil, ini masih berfungsi, tetapi itu bukan konvensi.
sumber
Ini adalah konvensi bukan aturan, tidak ada kendala untuk mematuhi konvensi, tetapi konvensi memang membuat hidup lebih mudah ketika Anda datang untuk referensi.
sesuai dengan ekstensi (.h, .hpp) file-file yang telah dimasukkan dalam c ++ tidak perlu memiliki ekstensi, Anda harus menggunakan ekstensi jika Anda menggunakan header dari selain c ++, seperti c library atau boost library.
sumber