Saya sedang mencari sumber yang bagus untuk belajar tentang desain API yang baik untuk pustaka C ++, melihat objek bersama / dll. Ada banyak sumber daya untuk menulis API yang bagus, kelas yang bagus, templat dan sebagainya di tingkat sumber, tetapi hampir tidak ada apa-apa tentang menempatkan hal-hal bersama dalam lib dan shared executables. Buku-buku seperti Desain Perangkat Lunak C ++ Skala Besar oleh John Lakos menarik tetapi sudah ketinggalan zaman.
Apa yang saya cari adalah saran yaitu tentang penanganan template. Dengan templat di API saya, saya sering berakhir dengan kode pustaka di executable saya (atau pustaka lainnya) jadi jika saya memperbaiki bug di sana, saya tidak bisa begitu saja meluncurkan pustaka baru tetapi harus mengkompilasi ulang dan mendistribusikan kembali semua klien dari kode itu. (dan ya, saya tahu beberapa solusi seperti mencoba instantiate setidaknya versi paling umum di dalam perpustakaan dll.)
Saya juga mencari peringatan dan hal lain yang perlu diingat untuk menjaga kompatibilitas biner saat bekerja di perpustakaan C ++.
Apakah ada situs web atau buku yang bagus tentang hal-hal seperti itu?
std::unique_ptr
adalah hal yang cukup baru. Apa sebenarnya yang menurut Anda lebih cocok tentang API yang Anda usulkan? Misalnya, Anda harus mengelola semua sumber daya secara manual, misalnya menjamin kebocoran dan penghapusan ganda, misalnya? Atau cara di mana banyak dari tipe Anda memiliki satu atau dua nama huruf, membuat meramalkan tujuannya tidak mungkin?
unique_ptr
, tidak mungkin menulis kode seperti itu.