Saya baru-baru ini mulai belajar C ++, dan saya sangat menikmatinya.
Saya sering membacanya lebih mudah untuk menulis kode buruk dalam C ++ daripada di kebanyakan bahasa, dan itu jauh lebih dalam dari apa yang tampak.
Karena saya ingin menghindari penulisan kode yang buruk, saya bertanya-tanya apa sebenarnya yang seharusnya tidak saya lakukan, dan apa yang harus saya lakukan, untuk menulis kode yang baik dalam C ++.
Jawaban:
Perangkap
Ada begitu banyak jebakan dalam C ++, sehingga jika Anda tidak mengetahuinya, Anda akan membuat kode yang sangat tidak stabil, dengan banyak kebocoran memori dan buffer overruns. Dibandingkan dengan bahasa yang lebih modern dengan pengumpulan sampah, Anda harus melepaskan semua memori sendiri. Juga, kodenya sangat rendah. Tidak ada yang mencegah Anda menimpa kode program Anda sendiri (yang telah dieksploitasi oleh banyak peretasan IE).
Jadi selanjutnya yang harus Anda pelajari adalah praktik pemrograman yang mengurangi risiko ini, misalnya menggunakan pointer pintar untuk menangani objek yang bebas, membungkus array byte di kelas yang menangani data, dll.
Saya dapat merekomendasikan buku-buku Scott Meyers "C ++ Efektif" dan "C ++ Lebih Efektif".
Buku-buku itu pada dasarnya mengajari saya keindahan C ++. Perhatikan bahwa ini bukan buku pemula. Mereka menganggap bahwa Anda sudah terbiasa dengan bahasa tersebut.
sumber
Idiom
C ++ mendukung beragam fitur. Demikian juga, seseorang dapat dengan mudah tergoda untuk menggunakannya dalam berbagai cara atau gaya. Sayangnya, itu tidak sesuai dengan banyak dari mereka dengan baik - dan dengan demikian menjadi membosankan, rawan kesalahan atau lambat jika dengan cara seperti itu.
Atau diutarakan secara berbeda, tanpa benar-benar mengetahui apa yang Anda lakukan, sangat mudah untuk menggunakan C ++ dengan cara yang salah (yang jauh lebih baik didukung dalam bahasa lain). Karenanya, belajar sambil melakukan bisa mengarah ke arah yang salah - jadi membaca buku yang bagus mungkin lebih penting daripada bahasa lain (lihat posting ini tentang topik yang sama).
Java misalnya adalah bahasa yang berorientasi objek secara inheren. Anda tidak dapat memprogramnya jauh berbeda. Namun dalam C ++, Anda bisa . Anda dapat menggunakannya seperti yang akan Anda lakukan di C atau Java - dan tidak ada cara C ++ unggul, jadi Anda sebaiknya tetap menggunakan C atau Java dalam kasus ini.
Karena itu, Anda benar-benar perlu mengetahui gaya dan idiom yang tepat untuk mendapatkan C ++ yang benar, sejak awal. Sayangnya, mereka bisa sangat kompleks pada awalnya, tetapi di sini ada beberapa - dari yang sederhana hingga yang canggih.
const
inline
berfungsi,<<
atau*
lain - lain?)void*
). Gunakan referensi atau petunjuk pintarsumber
Kekuatan C ++ adalah bahasa yang mengagumkan. Kelemahan C ++ adalah bahasa yang mengagumkan. Ini bisa menjadi awe-ful dan sekaligus mengerikan.
Jika Anda ingin mempelajarinya - dan tidak ada alasan Anda tidak boleh - Anda harus mempelajarinya dengan baik. Anda harus banyak membaca . Ada beberapa buku yang akan membantu Anda dalam perjalanan: C ++ yang dipercepat akan membantu Anda memulai, terutama jika Anda melakukan latihan. C ++ yang Efektif, STL Efektif, C ++ Luar Biasa, dan seri lanjutannya adalah yang terbaik dalam permainan untuk petunjuk ukuran gigitan tentang cara meningkatkan cara Anda bekerja.
sumber
Saya pikir satu hal yang akan membantu Anda sepanjang jalan kode yang baik adalah pengalaman . Untuk saat ini, cukup terjebak dalam bahasa dan jangan terlalu khawatir tentang "praktik pengkodean terbaik" sampai Anda cukup nyaman dengannya untuk mulai mencari cara untuk meningkatkan penggunaan Anda. Anda akan belajar mengenali apa yang baik dan apa yang buruk. Setelah bahasa Anda turun, maka Anda dapat melihat ke belakang dan berpikir "ok, saya harus menerapkan ini secara berbeda", atau "ini terlihat berantakan, bagaimana saya bisa memperbaikinya?"
Saya memikirkannya seperti ini : Jika Anda belajar bahasa lisan yang baru, Anda tidak langsung menyelam dan mempelajari setiap aturan tata bahasa sebelum Anda mulai belajar kata-kata sederhana atau bagaimana mengatakan "di mana halte bus?". Pemrograman (IMO) seperti bahasa kedua (atau ketiga, keempat, dll). Perlakukan itu seperti Anda akan bahasa lain dan belajar dengan melakukan. Sisanya akan datang seiring waktu.
sumber
klarifikasi: dalam C ++ lebih mudah untuk menulis kode buruk secara tidak sengaja daripada dalam bahasa lain. Anda dapat menulis kode buruk dalam bahasa apa pun tetapi dalam C ++ Anda berangkat dengan niat terbaik tetapi seringkali berakhir di tempat yang tidak terduga karena C ++ - setelah Anda berpindah dari "pemula" untuk mengatakan "pemula", Anda mendapat kesan salah bahwa C ++ lebih mudah dari yang sebenarnya. Tetapi C ++ sedang berkembang dan semua pustaka templat baru membuat hidup Anda lebih mudah (dan lebih aman).
sumber
Dua hal:
sumber