Saya seorang mahasiswa ilmu komputer, dan sebagai hasilnya, saya diajari C ++ sebagai versi yang lebih baik dari C dengan kelas-kelas. Saya akhirnya mencoba menemukan kembali roda setiap kali solusi untuk masalah yang kompleks diperlukan, hanya untuk menemukan beberapa saat setelah itu, beberapa fitur bahasa atau rutin perpustakaan standar berpotensi dapat melakukan itu untuk saya.
Saya semua merasa nyaman dengan idiom char*
dan *(int*)(someVoidPointer)
idiom saya , tetapi baru-baru ini, setelah memberikan kontribusi (kecil) untuk proyek open-source, saya merasa itu bukan cara yang seharusnya dipikirkan seseorang ketika menulis kode C ++. Ini jauh berbeda dari C.
Menimbang bahwa saya tahu pemrograman berorientasi keberatan dengan cukup baik, dan saya baik-baik saja dengan kurva belajar yang curam, apa yang akan Anda sarankan bagi saya untuk mendapatkan pikiran saya pada jalur C ++ ketika saya sedang mengkode C ++?
Jawaban:
Berdasarkan komentar Anda, Anda tahu sintaks C ++.
Anda tidak mengkodekan dalam C ++ tetapi apa yang sering disebut sebagai C dengan kelas.
Tag C ++ pada stackoverflow adalah tempat yang baik untuk memulai, termasuk daftar bacaan dan FAQ .
Satu-satunya cara nyata untuk belajar adalah menulis kode dan mendapatkan pengguna berpengalaman untuk berkomentar. Anda dapat meletakkan kode Anda di sini untuk ditinjau. Sebuah contoh yang baik
Berhenti menggunakannya, beralih ke std :: string.
Hentikan penggunaannya (terpisah dari antarmuka dengan kode C). Menggunakan konsep functor memberikan beberapa keuntungan (termasuk ide encapsulating state).
Iya nih. C dan C ++ telah berbeda sebagai bahasa. Meskipun Anda dapat menggunakan sintaksis yang sama, apa yang dianggap sebagai kode C yang baik umumnya tidak dianggap sebagai kode C ++ yang baik (atau sebaliknya).
Anda memiliki dasar-dasar yang sangat bawah.
Dengan banyak pekerjaan :-)
sumber
Buku C ++ Efektif mengajarkan sejumlah hal menarik dan akan membawa Anda untuk menghargai fitur-fitur C ++. Ada juga STL Efektif - saya belum membacanya tetapi saya yakin ini akan menjadi bacaan yang bagus jika Anda tidak terbiasa dengan STD.
Hal yang penting untuk dipelajari adalah Anda harus menggunakan bahasa itu dan tidak menemukan kembali roda secara konstan . Anda telah belajar cara membuatnya, jadi buatlah mudah untuk diri Anda (dan orang lain!) Dan gunakan alat untuk semua potensi mereka.
Sebagai catatan tambahan, Anda akan bertemu dengan banyak orang yang meminta STD digunakan. Ini sama buruknya dengan pola pikir hanya dengan menggunakan
char*
- kadang-kadang itu bukan alat yang benar dan ada banyak lainnya di luar sana. Dalam hal yang sama, jangan berkecil hati untuk membuat kelas kontainer Anda sendiri - jika Anda akan menggunakanchar*
tempat terbaik untuk melakukannya, wadah itu dibungkus dengan aman di dalam kelas.sumber
Saya dapat merekomendasikan BUILD baru-baru ini yang diberikan oleh Herb Sutter. Yang disebut " Menulis kode C ++ modern: bagaimana C ++ telah berkembang selama bertahun-tahun ":
Ini bukan presentasi yang buruk, tidak terlalu lama, memiliki beberapa petunjuk bagus untuk fitur-fitur baru dalam standar terbaru yang akan memberi Anda beberapa petunjuk untuk memperbarui gaya C / C ++ lama Anda.
Selain itu, Anda perlu mempelajari STL - itu tidak rumit dan ada banyak buku, misalnya, STL Efektif, atau hanya google untuk tutorial STL untuk membuat Anda maju.
sumber
Saya membaca Accelerated C ++ oleh Andrew Koenig dan Barbara Moo untuk membantu saya mengajar C ++, setelah bekerja dengan C ++ selama hampir satu dekade. (Bahkan, saya mulai bermain-main dengan template meta-pemrograman pada waktu itu.) Saya masih menemukan itu sebagai wahyu, meskipun saya tidak berpikir itu mengajari saya fakta baru tentang bahasa. 1
Apa yang diajarkannya kepada saya adalah melihat, dan menggunakan, C ++ sebagai bahasa tingkat tinggi. Untuk tidak bermain-main dengan pointer mentah dan
delete
dan menggunakan perpustakaan standar sedapat mungkin.Saya merasa bahwa inilah yang Anda cari.
1 Bukan berarti tidak ada yang tersisa untuk mengajar saya saat itu (ada banyak bahkan sekarang, satu dekade kemudian), tetapi hanya ada begitu banyak pengetahuan yang dapat Anda peras ke dalam buku pengantar 250 halaman.
sumber
Sebelum menjawab - catatan: Idiomatic C ++ adalah target yang bergerak. Saat bahasa berubah, demikian juga idiom-idiomnya. Bahkan, beberapa fitur bahasa dimaksudkan untuk memungkinkan kita menghilangkan kode idiomatik yang mungkin disederhanakan atau ditingkatkan dengan beberapa dukungan dari bahasa itu sendiri, atau setidaknya perpustakaan standar. Jadi ingatlah bahwa sumber apa pun hanya dapat memberi tahu Anda tentang apa yang idiomatis pada saat penulisan .
Karena itu, Anda sebaiknya memeriksa:
Situs codereview.SX
Jaringan StackExchange memiliki situs bernama codereview.stackexchange.com . Jika Anda telah menulis sepotong kode C ++ - kelas, bagian dari perpustakaan, sesuatu yang tidak terlalu besar - Anda dapat mempostingnya di sana dan meminta komunitas untuk memeriksanya. Perhatikan bahwa kode harus dikompilasi dan pada dasarnya berfungsi - situs itu bukan untuk debugging.
Anda juga dapat mencari beberapa kode C ++ di sana, terkait dengan apa yang sedang Anda kerjakan, dan melihat apa yang ditekankan pengulas. Anda bahkan dapat mencoba meninjau sendiri kode yang diposting tanpa memposting jawaban, lalu membaca apa yang dipikirkan orang lain.
Presentasi video konferensi C ++
Ada beberapa konferensi pengembang yang berfokus pada C ++ yang diadakan setiap tahun:
dan itu bahkan bukan satu-satunya ... lagipula, masing-masing memposting video dari banyak / semua presentasi. Ini akan mengajarkan Anda banyak hal , termasuk beberapa kode idiomatis, dan prinsip yang dengannya Anda dapat memutuskan apa yang seharusnya atau tidak seharusnya idiomatik.
Kadang-kadang Anda bahkan bisa mendapatkan slide deck speaker.
sumber
Yah, proyek open source adalah awal yang sangat bagus. Jangan berharap untuk menjadi programmer profesional berdasarkan kelas universitas Anda, mereka tidak dimaksudkan untuk itu (seperti yang saya tulis dalam jawaban saya di sini ).
Anda tampaknya menyadari sintaks, itu bagus. Sekarang buka dan baca kode orang lain, dan kontribusikan sendiri untuk ulasan rekan. Anda akan belajar banyak dari membaca kode dan mencoba memahaminya, men-debug-nya dan memperbaikinya, dan tentu saja - menambahkannya dengan mematuhi aturan-aturan pengkodean yang sudah ada.
Buku-buku profesional juga merupakan ide yang sangat bagus, seperti yang disebutkan, dan menjelajah melalui pertanyaan dan jawaban di StackOverflow akan banyak mengajarkan Anda (pasti banyak mengajari saya, dan saya menganggap diri saya seorang profesional C ++).
sumber
Membaca banyak kode C ++ yang baik mungkin akan membantu. Anda harus melihat kode untuk mulai merasakannya. Kemudian lagi, sebagian besar kode C ++ salah.
sumber