Saya bekerja dengan banyak kode Java dan RPG lama pada aplikasi internal perusahaan. Seperti yang Anda perkirakan, banyak kode ditulis dalam banyak gaya yang berbeda, dan seringkali sulit dibaca karena variabel dengan nama yang buruk, pemformatan yang tidak konsisten, dan komentar yang bertentangan (jika ada di sana).
Juga, jumlah kode yang baik tidak kuat. Banyak kali kode didorong ke produksi dengan cepat oleh programmer yang lebih berpengalaman, sedangkan kode oleh programmer yang lebih baru ditahan oleh "ulasan kode" bahwa IMO tidak memuaskan. (Mereka biasanya mengambil bentuk, "Berhasil, pasti ok," daripada kritik serius terhadap kode.) Kami memiliki sejumlah masalah produksi, yang saya rasa dapat dikurangi dengan lebih memikirkan desain asli dan pengujian.
Saya telah bekerja untuk perusahaan ini selama sekitar 4 bulan, dan telah dipuji pada gaya pengkodean saya beberapa kali. Manajer saya juga penggemar pengkodean yang lebih bersih daripada biasanya. Apakah ini tempat saya mencoba untuk mendorong gaya yang lebih baik dan pengkodean defensif yang lebih baik, atau haruskah saya membuat kode dengan cara terbaik yang saya bisa, dan berharap contoh saya akan membantu orang lain melihat bagaimana kode yang lebih bersih, lebih kuat (serta refactoring yang agresif) akan menghasilkan lebih sedikit debugging dan mengubah waktu?
sumber
Jawaban:
Anda tidak menyebutkan tingkat keahlian Anda tentang masalah ini. Jika Anda bukan seorang programmer senior, saya pikir hal terbaik yang dapat Anda lakukan adalah melakukan pekerjaan Anda sendiri dengan baik. Anda juga menyebutkan bahwa manajer Anda menyukai pekerjaan bersih - itu bagus. Jika Anda dapat berbicara dengannya tentang hal itu (mungkin di lingkungan semi-profesional), Anda harus membagikan kekhawatiran Anda tentang masalah tersebut dengannya. HE berada dalam posisi untuk mengubah alur kerja.
sumber
Apa arti kode bersih untuk Anda?
Saya yakin definisi Anda bagus, tetapi orang lain di tempat kerja Anda mungkin memiliki definisi sendiri. Mereka tidak salah, hanya berbeda dengan Anda.
Anda harus membuat pedoman pengkodean yang dapat disetujui oleh semua orang di tempat kerja Anda, dan Anda harus melakukannya bersama dengan sesama programmer. Jangan mencoba memaksakan ini pada orang, itu akan menjadi bumerang jika Anda melakukannya.
Jadi kumpulkan tim dan mulailah bekerja pada definisi umum "kode bersih"! Tidak ada aturan sulit untuk ini. Anda mencoba menyatukan beberapa pikiran dan itu dapat menyebabkan konflik, jadi Anda mungkin ingin mengatur panggung dengan catatan positif bahwa Anda semua harus menghormati dan menjaga pikiran terbuka (penulisan kode adalah pribadi ...).
The Bersih Kode buku mungkin berguna. Anda dapat menggunakan contoh-contoh dari buku itu untuk membicarakan dan melihat apakah Anda menemukan landasan bersama di sana?
sumber
Ada dua hal yang dapat melakukan keajaiban untuk memastikan kualitas kode yang konsisten dan tinggi.
Lakukan Ulasan Kode
Anda harus berusaha keras untuk setiap checkin - tidak peduli seberapa sepele - ditinjau oleh orang lain di tim. Tidak ada pengecualian. Ini sepertinya akan menghalangi pada awalnya, terutama untuk pengembang senior yang berpikir mereka tidak mendapatkan apa-apa dengan memiliki orang yang kurang berpengalaman meninjau kode mereka. Namun, memiliki ulasan kode reguler akan memiliki dampak yang beragam untuk setiap pengembang di tim.
Tetapkan Standar dan Tetap Gunakan
Di Google kami memiliki panduan gaya pengkodean untuk setiap bahasa yang kami gunakan: C ++ , Java , Python , dll. Walaupun para insinyur bebas untuk tidak setuju dengan panduan gaya, itu bukan opsional. (Dan ditegakkan secara ketat dalam ulasan kode.) Sebagai hasilnya, seluruh basis kode - ratusan ribu baris kode - sangat konsisten.
sumber
Saya pikir jika Anda bersemangat tentang kode bersih maka ini akan menular ke rekan-rekan Anda. Mentalitas "Berhasil, harus ok" yang dapat diubah oleh orang-orang yang menganjurkan desain yang baik dan kode bersih dengan cara yang antusias.
sumber
Meskipun beberapa jawaban yang bermanfaat telah diposting di sini untuk sementara waktu, saya yakin ada ruang untuk satu lagi. Saran saya adalah, seperti yang orang lain katakan, untuk melakukan tinjauan kode. Tetapi perlu disebutkan lagi karena istilah "review kode" sangat kabur ... hampir sama kaburnya dengan "kode bersih" :-). Saya telah menghabiskan banyak waktu dan usaha sendiri dalam bekerja menuju tujuan yang sulit dipahami itu. Dan khususnya dalam beberapa tahun terakhir, didorong oleh rekan-rekan yang berbagi hasrat saya, saya menyaring gagasan saya, dicampur dengan ide-ide kunci dari pengembang terkemuka, ke dalam seri yang berjudul Zen of Code Reviews .
Artikel saya unik, sejauh yang saya tahu, karena saya membahas kedua sisi lorong: melakukan peninjauan kode sebagai penulis dan melakukan peninjauan kode sebagai peninjau . Meskipun terkait, keterampilan untuk masing-masing agak berbeda. Dan mampu melakukan keduanya dengan baik akan menghasilkan kualitas kode yang lebih baik. Meninjau kode sama pentingnya dengan menulis kode. Betulkah. Ini mempromosikan transfer pengetahuan, mendorong konsistensi tim dan komunikasi, membantu Anda meningkatkan keahlian Anda, dan yang tak kalah penting, ini mengurangi biaya perangkat lunak kereta - dari sedekat mungkin dengan awal.
Dua yang pertama memberikan tips dan teknik untuk mempersiapkan tinjauan kode. Pendeknya:
Dan dua artikel lainnya memberikan saran praktis tentang cara menjadi peninjau yang lebih baik:
sumber
Menurut contoh. Sudahkah kode Anda ditinjau.
sumber
Dalam pengalaman saya sebagian besar aplikasi "RPG + Java" ditulis oleh programmer yang berasal dari sisi RPG, dan bukan dari sisi Java, dan pola pikir dari dua dunia sangat berbeda yang saya percaya adalah salah satu alasan mengapa Anda memiliki desain dasar masalah.
Perkakas resmi IBM berbasis Eclipse, jadi jika Anda menggunakannya, Anda dapat menggunakan sebagian besar tips dan trik yang tersedia untuk Eclipse, dan Anda perlu menemukan hal-hal yang memberi imbalan banyak untuk sedikit usaha, karena pada dasarnya Anda perlu menunjukkan ini orang-orang yang patut dilakukan sama sekali.
Salah satu hal paling efisien yang saya temukan untuk ini, adalah Simpan Tindakan editor Java, di mana Anda dapat memintanya untuk memformat ulang sumber Anda setiap kali Anda menyimpan file. Ini akan dalam waktu singkat menghasilkan tata letak pengkodean yang lebih seragam sehingga membuat hal-hal lebih mudah dibaca. Saya menulis temuan saya di sini.
Jika pertama kali Anda memiliki gagasan yang ditanamkan bahwa Anda mungkin memiliki saran yang bermanfaat, orang-orang akan lebih cenderung mendengarkan ...
sumber
"Semua orang menulis kode buruk". Cerna dan akui itu. Ini menetapkan seluruh tim dalam satu bidang yang memecah hierarki dan menanamkan pada semua orang bahwa semua sama. Sangat penting bagi seorang programmer senior untuk menunjukkan perilaku dan sikap ini. Dengan ini sebagai premis, praktikkan pemrograman pasangan selama Anda harus berdiskusi, berdebat (bertanda waktu) dan berkumpul untuk mengambil keputusan tentang apa yang benar setelah membicarakan mengapa sesuatu itu bisa salah. Sementara pemrograman pasangan satu orang lebih unggul dari yang lain - keduanya adalah programmer yang rendah hati dan terbuka. Apa cara yang lebih baik untuk mempromosikan praktik pengkodean yang baik! :)
sumber
Satu cara yang belum saya lihat disebutkan dalam salah satu jawaban sejauh ini adalah pendidikan. Dapatkan perusahaan Anda untuk mensponsori entri bagi mereka yang ingin pergi ke JavaZone atau RubyConf terdekat Anda atau konferensi apa pun yang cocok dan nyaman untuk Anda. Temukan kursus yang relevan dan kirim pengembang terpilih untuk hadir. Jika perusahaan Anda cukup besar, bahkan mungkin layak untuk mengatur seminar internal dan kursus tentang mata pelajaran seperti praktik terbaik, kelas master untuk bahasa Anda, dll. Dapatkan dosen yang baik tentang masalah ini dan siapkan kursus yang disesuaikan dengan situasi perusahaan Anda.
Perusahaan saya melakukan ini cukup banyak, dan sementara masih ada orang-orang yang dengan keras kepala menolak untuk tertarik, kesadaran keseluruhan dari masalah-masalah seperti ini sedang tumbuh - dan keadaan umum dari basis kode kita meningkat. Bahkan kursus "Basic C" yang kami lakukan selama beberapa putaran terbukti mencerahkan bagi para pengembang yang telah menulis C selama 10-15 tahun. Bukan karena mereka programmer yang buruk, tetapi karena Anda cenderung jatuh ke dalam kebiasaan dan lupa mengapa, dan bahwa bahasa dan pengalaman kolektif tentang bagaimana menggunakannya perlahan-lahan juga berubah.
sumber