Tidak ada yang sempurna di bawah matahari. Qt tidak terkecuali, dan memang memiliki batasan: kita tidak bisa menggunakan pixmaps di utas selain GUI, kita tidak bisa menggunakan QImage dengan format gambar 16-bit-per-channel, dll.
Situasi apa yang memaksa Anda merusak desain karena keterbatasan Qt?
Apa kebiasaan yang paling dibenci?
Keputusan desain mana yang harus dihindari seseorang saat menggunakan Qt dalam proyeknya?
qt
design-decisions
tanaman merambat
sumber
sumber
the
terikat kecorners
sini, tidakQt
, tapi itu hanya perasaan intuitif saya, karena saya orang Rusia :)Jawaban:
Ironisnya, menurut saya kekuatan Qt juga salah satu kelemahannya. Ada begitu banyak konstruksi dan ekstensi yang kuat, kode yang Anda tulis di Qt mudah menjadi sangat mengakar dalam "cara Qt". Mencoba mengekstrak fungsionalitas ke dalam bahasa lain tidak hanya berarti menulis ulang, Anda perlu mengetahui banyak teknologi spesifik Qt.
Luasnya Qt berarti bahwa mempekerjakan pemrogram berarti berkomitmen pada seseorang dengan pengalaman Qt, atau pelatihan untuk keahlian itu. Mendapatkan kontraktor dalam dan hingga kecepatan lebih sulit daripada vanilla C ++.
Ketika Qt berubah dari 3.x ke 4.x, tim kami membutuhkan hampir 9 bulan untuk melakukan port, selama waktu itu sedikit fungsi baru ditambahkan. Anda berharap untuk mengganti biaya upgrade utama dalam peningkatan efisiensi pengembangan di sisa waktu. (Catatan, saya telah menghilangkan kelebihan Qt, yang juga ada banyak)
sumber
Qt tidak menggunakan pustaka C ++ standar , tetapi memiliki QString, QVector, QMap, ...
Ini berarti Anda harus membuat keputusan desain yang penting: bagian mana dari aplikasi yang akan menggunakan QString dan bagian mana yang akan menggunakan std :: string?
Menggunakan std :: string di beberapa bagian dan QString di bagian lain, berarti Anda harus mengonversi antara QString dan std :: string pada batas.
Untuk menghindari overhead itu, orang dapat memutuskan untuk menggunakan QString di seluruh aplikasi Anda. Tapi itu membuatnya lebih sulit untuk menggunakan perpustakaan pihak ke-3 yang tidak didasarkan pada Qt, misalnya meningkatkan.
(Perhatikan bahwa hal yang sama berlaku untuk std :: map vs QMap, std :: vector vs QVector, dan sebagainya)
Memutuskan bagian mana yang menggunakan tipe Qt dan bagian mana yang menggunakan STL adalah keputusan desain utama, dengan implikasi besar. Dan hanya karena Qt menolak untuk menggunakan perpustakaan C ++ standar.
IMHO, keputusan itu bisa berjalan baik, tergantung pada proyeknya. Jadi saya tidak bisa menjawab pertanyaan Anda mana yang harus dihindari.
sumber
Ini tidak secara langsung menjawab pertanyaan, tetapi saya pikir itu layak disebutkan: mungkin aspek Qt yang paling 'berbahaya' adalah bahwa Nokia telah tidur dengan MSoft ...
sumber
Baru-baru ini saya menemukan bahwa QChar, terlepas dari namanya, sebenarnya tidak sesuai dengan satu karakter tetapi dengan unit kode UTF-16. Dengan demikian, ketika Anda ingin memindai karakter teks Unicode sewenang-wenang, Anda harus menambahkan algoritma untuk berurusan dengan pengganti tinggi dan rendah, menggabungkan karakter dan sejenisnya.
sumber