Sebagai seorang insinyur perangkat lunak, seberapa pentingkah membaca kode orang lain?

25

Saya seorang insinyur perangkat lunak pemula (sekarang mahasiswa tingkat dua, jurusan CS) dan saya benar-benar berjuang untuk memahami program orang lain. Saya ingin tahu apakah keterampilan ini (atau kurang dari itu) dapat menjadi cacat bagi saya, dan jika ya, lalu bagaimana saya bisa mengembangkannya?

James Bond
sumber
1
Apakah Anda merasa mengerti kode ketika dijelaskan juga kepada Anda atau Anda hanya belajar dengan coba-coba?
JeffO
1
Mengapa ini ditandai 'gaya pengkodean'? Apakah alasan Anda mengalami kesulitan membaca kode karena formatnya buruk? Kemampuan membaca kode tidak berarti Anda memerlukan kemampuan untuk memahami kode yang diformat atau dikaburkan dengan buruk. Jalankan kode melalui alat pemformatan terlebih dahulu jika itu membantu.
Brandin
Baca saja artikel pagi ini yang mengingatkan saya pada pertanyaan ini. Mengapa mengerjakan Chrome membuat saya mengembangkan alat untuk membaca kode sumber
Eric King
Ini pertanyaan yang bagus! Saya punya pertanyaan tindak lanjut: jika Anda bekerja sendiri pada kode Anda sendiri (misalnya sebagai programmer ilmiah pada proyek kecil), bagaimana Anda menemukan kode yang baik untuk dibaca? Ini telah ditanyakan sebelumnya: softwareengineering.stackexchange.com/questions/69892/…
Gaurav

Jawaban:

49

Ini penting.

Cara Anda mengembangkannya adalah dengan menulis kode Anda sendiri (banyak), dan ya, berjuang melalui membaca kode orang lain.

Masalahnya, tentu saja, tidak semua orang berpikir seperti Anda. Saya berada di kelas Java tahun pertama sejak dulu, dan kami diberi tugas. Bertentangan dengan apa yang saya yakini (yaitu bahwa jawaban akan menyatu pada tiga atau empat solusi umum), semua orang di kelas memiliki solusi unik untuk tugas tersebut.

Maka Anda harus membaca kode yang baik .

Ini adalah salah satu alasan Pola Desain menjadi sangat populer, dan mengapa Anda harus mempelajarinya. Design Patterns menyediakan kosakata umum untuk berkomunikasi dengan programmer, dan menyesuaikan pikiran Anda untuk cara-cara yang "lebih baik" untuk memecahkan masalah komputasi.

Anda juga harus mempelajari algoritma dan struktur data.

Konsekuensi: Anda harus selalu berusaha menulis kode yang mudah dipahami pengembang lain.

Robert Harvey
sumber
7
Konsekuensi: Mulailah dari yang sederhana dengan berusaha menulis kode yang bisa Anda pahami :-)
gnasher729
4
Umumnya jawaban yang bagus, kecuali bagian tentang pola. Sebagian besar pola GoF (yang dipikirkan orang-orang saat Anda menggunakan istilah) terlalu banyak direkayasa, terlalu halus, terlalu fokus pada OO, atau sekadar anti-pola. Dan kemudian orang-orang muncul di sini bertanya pola mana yang harus mereka gunakan untuk solusi mereka. Tolong, jangan pernah menyarankan pengembang menghabiskan waktu mereka dengan pola.
David Arno
Untuk masalah kecil (katakanlah, balikkan angka dalam daftar), kemungkinan jawaban harus menyatu dengan sejumlah kecil kemungkinan solusi. Penugasan yang baik harus membutuhkan penyelesaian banyak masalah seperti itu dan mengatur solusi untuk masalah-masalah tersebut dalam beberapa cara, sehingga jumlah total solusi yang mungkin untuk penugasan akan tumbuh dengan sangat cepat.
Brandin
15

Ini sangat penting.

Setelah Anda lulus dan keluar ke dunia, sebagian besar proyek yang akan Anda kerjakan sudah memiliki kode kontribusi dari orang lain. Lucky adalah programmer yang menghabiskan seluruh waktunya untuk proyek greenfield!

Ini adalah keterampilan yang diperoleh melalui latihan dan kesabaran, dan dalam banyak kasus, itu adalah keterampilan yang banyak orang tidak benar-benar mendapatkan banyak kesempatan untuk dikerjakan sampai setelah mereka lulus dan mendapatkan pekerjaan pertama itu. Bersantai!

(walaupun jika sekolah Anda memiliki program co-op, itu akan memberi Anda pengalaman pra-kelulusan untuk bekerja pada proyek-proyek besar yang sebagian besar ditulis oleh orang lain DAN itu membuat Anda mendapat kredit akademis! Sesuatu untuk dilihat, jika tersedia)

FrustratedWithFormsDesigner
sumber
7

Ini adalah keterampilan utama , tergantung pada spesifik tempat Anda bekerja, bahkan bisa lebih penting daripada menulis kode itu sendiri.

Seperti keterampilan lain, latihan membuatnya sempurna! Coba baca kode programmer lain, debug itu dan apa yang membantu saya secara pribadi, itu untuk refactor atau meningkatkan sedikit kode dan berkembang dari sana.

RMalke
sumber
Selain itu, mengenal proyek sumber terbuka yang Anda gunakan dan mencoba memahami cara kerja kode bagian dalam dapat membantu
RMalke
4

Ada keterampilan yang berbeda dalam membaca dan menulis kode.

  • Salah satunya adalah sintaks. Mengetahui seperti apa deklarasi metode itu.
  • Yang lainnya adalah niat. Mengetahui mengapa metodenya ada dan apa tujuannya.

Adapun membaca vs menulis. Ya, membaca itu penting.
Beberapa prinsip yang membantu banyak dari kita adalah:

  • Kode dibaca 10 kali (setidaknya) untuk setiap kali ditulis.
  • Orang lain membaca kode sering ... saya di masa depan membaca kode.
  • Saya tidak akan mempertahankan gaya kode saya sejak lebih dari 1 tahun yang lalu, sudah membaik sejak saat itu.

BAIK. Jadi itu bagus sekali. Sekarang ke apa yang mungkin Anda alami.

omg, basis kode besar yang menakutkan ini dengan puluhan ribu baris kode sumber dan kelas yang panjangnya ratusan baris dengan dependensi gila dan setiap kali saya mencoba mengikuti sesuatu saya harus menyimpan 10 level di kepala saya, dll, dll.
Terdengar akrab ? Ya. Napas dalam. Bersantai. Itu normal. Dari situlah sistem produksi dibuat. Orang-orang bertahan (dan florish) dalam situasi yang tampaknya tidak dapat dipahami ini karena:

  • tes (semoga) ada dan mereka juga membantu mendokumentasikan sistem.
  • programmer berpasangan dan sering kali hasilnya lebih dari dua kali lipat.
  • programmer yang baik bisa mengatakan mereka tidak mengerti sampai mereka melakukannya.
  • perubahan sering kali hanya satu atau beberapa baris kode yang membantu mengisolasi apa yang harus diuji
  • basis kode membutuhkan waktu berbulan-bulan bahkan bertahun-tahun untuk menjadi terbiasa
Michael Durrant
sumber
Dan akhirnya, programmer yang baik menulis pesan komit yang bermakna ketika melakukan perubahan ke dalam sistem kontrol versi sumber. (Jangan ragu untuk menambahkan jawaban)
rwong
1

Sebagian besar jawaban ini fokus pada pentingnya membaca kode untuk peningkatan diri. Saya sepenuh hati setuju dan mendukungnya.

Ada sudut lain yang harus diwaspadai - bahkan jika Anda seorang ajaib yang tidak dapat mengambil manfaat dari membaca pendekatan lain (tidak mungkin, tetapi demi argumen ....), Anda masih perlu tahu cara membaca kode karena konsep yang pada dasarnya tidak ada di lingkungan universitas: sebagian besar proyek industri adalah proyek lapangan cokelat (yaitu di dalam atau diintegrasikan dengan basis kode yang sudah ada sebelumnya).

Kebutuhan untuk membaca kode hanya untuk memahami basis kode dan proses yang ada adalah nyata. Selalu memungkinkan untuk mengajukan pertanyaan kepada pengembang lain tentang kode, tetapi ini hanya akan memakan waktu begitu lama. Orang-orang pergi, beralih proyek, atau waktu berlalu begitu saja. Rincian tingkat rendah memudar dari memori dan programer pemeliharaan menerapkan tambalan. Pada titik tertentu, tidak ada sumber kebenaran tunggal kecuali kode itu sendiri.

Kebersihan kode yang baik, panduan gaya, ulasan kode dan dokumentasi membantu, tetapi pada titik tertentu kode adalah sumber kebenaran untuk apa yang terjadi dan satu-satunya cara untuk menemukan jawabannya adalah dengan mendapatkannya sendiri. Selain penggunaannya dalam pengembangan diri, kemampuan membaca kode adalah keterampilan yang jelas terpisah dari menulisnya.

Michael
sumber
0

Memahami kode orang lain adalah sesuatu yang tidak dapat Anda hindari karena Anda kemungkinan besar akan bekerja dalam tim meskipun jika tidak dalam tim Anda akan mencari hal-hal yang berbeda di Google dan Anda harus memahami kode sampel. Jadi ya itu suatu keharusan.

Apa yang saya rasakan adalah bahwa setiap orang mendapatkan perasaan itu mungkin kurang dari yang lainnya saat memulai, Anda memahami kode Anda lebih baik daripada kode yang lain karena Anda menghabiskan lebih banyak waktu dengan kode Anda sendiri daripada kode orang lain karena Anda tidak hanya membaca tetapi menulis dan struktur itu dalam pikiran Anda. Jika Anda mulai menghabiskan lebih banyak waktu dengan kode orang lain dan pertama kali mencoba melihat jenis struktur / aliran apa yang digunakan, ini pasti akan membuat Anda memahami kode dengan lebih baik.

Untuk membuat poin saya lebih meyakinkan jika Anda memiliki beberapa kode yang telah Anda tulis satu tahun yang lalu, cobalah untuk memahaminya lagi dan saya dapat memastikan Anda akan mengambil lebih banyak waktu tetapi kurang dari kode lain karena Anda memiliki ide tentang bagaimana Anda menyusun struktur Anda kode.

Semoga bantuan ini, jangan kecewa itu normal. Luangkan lebih banyak waktu dengan kode dan Anda akhirnya akan mendapatkannya.

techExplorer
sumber
0

Yah, saya baru saja diberi proyek dengan sekitar 100.000 baris kode yang ditulis oleh tim di negara lain, dan saya harus membuat beberapa perubahan yang sangat signifikan pada salinan kode mereka selama beberapa bulan ke depan, sambil meninggalkan sebanyak mungkin kode kesamaan mungkin.

Anda memberi tahu saya bagaimana saya bisa melakukan pekerjaan saya tanpa kemampuan membaca kode orang lain, cepat. Jika Anda tidak dapat membaca kode orang lain, Anda benar-benar terjebak.

gnasher729
sumber