Saya sedang mempersiapkan untuk kontes pemrograman di mana kita harus kode dalam C ++ dan ini semua tentang menghasilkan kode kerja dalam waktu singkat. Contohnya adalah dengan menggunakan makro untuk mendapatkan minimum dua int atau menggunakan memsets untuk menginisialisasi array (tapi saya diberitahu bahwa Anda tidak boleh menggunakan salah satu di sini ).
Ini mengarah pada pertanyaan, apa jenis teknik pengkodean yang ada untuk digunakan pada pekerjaan nyata?
Jawaban:
Cara menghasilkan kode yang berfungsi cepat adalah ... melambat. Ambil langkah yang sangat kecil. Pastikan Anda tahu untuk setiap langkah apa. Pastikan bahwa setelah setiap langkah, kode Anda dikompilasi dan dijalankan.
Terbaik dari semua, gunakan Pengembangan Test-Driven. Tulis tes yang gagal. Tulis kode yang cukup untuk lulus ujian. Refactor untuk membuat kode bersih, pastikan masih melewati semua tes. Ulang.
Jika Anda tidak melakukan ini, maka sangat mudah untuk menulis tumpukan kode besar, yang tidak berfungsi. Maka Anda akan membutuhkan waktu yang sangat lama untuk mencari tahu mengapa itu tidak berhasil.
sumber
Tinjau perpustakaan standar secara intens, terutama algoritma STL. Ini akan menghemat banyak baris kode dan banyak waktu. Kunci untuk memenangkan kontes pemrograman adalah dalam pemrograman setinggi mungkin. Di C ++, tanpa pustaka eksternal, ini berarti panggilan STL bukan untuk loop.
sumber
Saya berpartisipasi secara teratur dalam kompetisi ACM, semoga beberapa tips ini akan membantu Anda:
Seperti yang orang lain katakan, biasakan diri Anda dengan bahasa tersebut , dalam C ++ terutama STL, ia memiliki kedua fungsi umum yang ingin Anda gunakan (binary_search, min, max) dan struktur data yang kuat untuk menghemat waktu Anda (tumpukan untuk menghindari rekursi langsung , antrian untuk BFS, bahkan priority_queue untuk Dijkstra jika Anda suka seperti itu).
Identifikasi kategori masalah, apakah itu matematis, pemrograman dinamis, teori grafik, dll. Tanyakan pada diri sendiri: Seberapa familiar Anda dengan jenis masalah itu? Setelah melakukan ini, Anda harus membuat keputusan mengenai urutan penyelesaiannya , yang sejalan dengan poin berikutnya ...
Anda ingin memahami masalah sepenuhnya sebelum mengetik, menyelesaikan masalah yang tepat , dalam kompetisi pertama saya, saya berpikir bahwa jika saya tidak mengetik, saya membuang-buang waktu; Saya kemudian menemukan bahwa ini adalah kesalahan.
Jangan berpikir komentar itu buang-buang waktu, setidaknya dalam kode "pintar", Anda tidak ingin melakukan debugging baris demi baris untuk melihat apa yang salah (yaitu buang-buang waktu), kejelasan nilai .
Selamat bersenang-senang .
sumber
:)
Bagi saya, sepertinya Anda hanya tahu C dan bukan C ++ sama sekali. Pertanyaan-pertanyaan ini mudah dijawab oleh seseorang dengan pengetahuan dasar bahasa.
Cukup gunakan fungsi?
std::min
sudah ada.std::array<T, N>
sudah menginisialisasi isinya.Langkah pertama adalah mengetahui bahasa yang Anda gunakan.
sumber
Selain mengetahui bahasa, ketahui alat Anda, terutama editor Anda. Saya telah mengkode selama lebih dari 15 tahun secara profesional, dan saya telah melihat bahwa programmer yang hebat melambat karena satu-satunya perintah editor yang mereka gunakan adalah kunci kursor dan crtl-x / c / v ..
Apakah editor Anda mendukung satu penekanan tombol untuk menghapus satu baris? Untuk memasang kembali garis? Pindah antar fungsi / metode? blokir pilih / tempel? penanda buku? Pindah demi kata? Bisakah editor otomatis menghasilkan kelas / metode / fungsi? Apakah itu mendukung template yang dapat Anda buat sebelumnya? Refactoring cepat? Rekaman makro?
Mengetahui editor Anda dapat sangat mempercepat waktu pengembangan.
sumber
Berpikirlah sebelum bertindak. Lebih baik berpikir dan merencanakan sebelum menulis implementasi kelas daripada setelah tiga yang gagal. Juga, pikirkan saat Anda bertindak - melakukan hal-hal dalam langkah-langkah kecil sangat menyederhanakan proses pengembangan.
Tulis hanya kode yang Anda butuhkan saat ini. Artinya, jangan mulai menulis kode dengan mentalitas seperti: " Saya akan membutuhkan fungsi-fungsi ini nanti jadi saya mungkin juga menulis prototipe mereka sementara saya melakukannya ". Banyak hal berubah, rencana berubah. Anda akan berakhir dengan kode yang bahkan mungkin tidak dapat digunakan. Buang-buang waktu.
Ketahuilah apa yang Anda lakukan. Tidak ada yang lebih buruk daripada mencoba mengingat bagaimana fungsi dan fitur dasar bahasa dan / atau perpustakaan bekerja. Kenali alat yang Anda gunakan.
sumber
Sudah banyak jawaban, masih saya ingin menambahkan pendapat saya.
Untuk mempercepat pengkodean Anda, Menjadi pengetik sentuh hingga kecepatan yang saat mengetik Anda dapat berkonsentrasi pada logika dan kode. Ada banyak perangkat lunak untuk belajar mengetik (Typing Master, Rapid Typing, KTouch, gTypist misalnya), menggunakannya
Saya telah melihat banyak programmer berpengalaman yang masih mengetik dua jari. Ini mengarah ke kode jahat tanpa dokumentasi dan kode benar-benar samar dengan makro dan nama jenis disingkat.
sumber
Pengembangan perangkat lunak adalah salah satu dari 80-20 aktivitas klasik - yaitu di mana 80% pertama dari pekerjaan membutuhkan 20% dari waktu, dan 20% terakhir dari pekerjaan membutuhkan 80% dari waktu.
Oleh karena itu, kunci untuk mempercepat pekerjaan Anda adalah bekerja untuk meningkatkan kinerja Anda selama 20% dari upaya terakhir. Ini biasanya tahap debugging dan pekerjaan untuk menyatukan semuanya dan membuatnya dapat digunakan.
Anda dapat meningkatkan ini dengan lebih berhati-hati pada tahap awal. Perencanaan dan desain pekerjaan pada permulaan proyek mungkin tampak seperti buang-buang waktu ketika Anda tergoda untuk terjun ke dalam pemrograman hardcore, tetapi mereka dapat menghemat banyak waktu di kemudian hari.
Orang akan berbicara tentang metodologi tertentu seperti TDD atau BDD. Ini bagus, tetapi jika Anda tidak melakukannya sekarang, Anda akan butuh sedikit waktu untuk menyesuaikan diri, jadi mereka mungkin bukan sesuatu yang Anda ingin mulai dengan kontes pemrograman. Tetapi berhenti untuk merencanakan apa yang Anda lakukan sebelum menyelam dan melakukannya akan menuai hasilnya, apa pun yang terjadi. Dan mereka adalah langkah pertama menuju TDD dan BDD. Di sinilah Anda ingin memulai.
sumber
Jika ini untuk kompetisi pemrograman yang sebenarnya, jangan gunakan C ++. Gunakan bahasa scripting RAD yang cepat, interaktif, dan cepat. Ini adalah sesuatu yang sangat mendominasi VB6. Pra-dipersenjatai dengan perpustakaan yang Anda prewrote. Pemisahan string, pembalikan array, pencarian, pengurutan, grafis dasar, kontrol konsol.
Jika itu untuk pekerjaan, lakukan yang sebaliknya. Pelajari apa yang ada di sana, gunakan bahasa yang solid (C ++ baik-baik saja), komentar semuanya, dan sebagainya. Dua jenis lingkungan tidak bisa terpisah lebih jauh.
sumber