Bagaimana saya bisa mempromosikan pengkodean bersih di tempat kerja saya?


7

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?


Lebih baik mengimplementasikan Scrum. Itu akan membuat hidup semua orang lebih mudah.
PradeepGB

1
Cobalah untuk menemukan alat yang baik yang dapat memeriksa kode dan membuat keluhan / rekomendasi - dengan cara itu tidak akan bersifat pribadi Menemukan alat gratis akan membantu menjual alat kepada orang lain lebih cepat.
Ayub

@PradeepGB - Mereka tidak dapat menulis kode bersih. Hal pertama yang pertama.
JeffO

Jawaban:


12

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.


4
+1: Jika Anda berada di parit, hal terburuk yang dapat Anda lakukan adalah menghabiskan waktu membuang rekan kerja. Anda dapat memulai pembicaraan dengan atasan Anda, dan menyerahkannya kepadanya untuk mendorong perubahan. Itu pekerjaannya.
Satanicpuppy

3
Jika Anda menulis kode yang bersih dan mudah dirawat maka itu akan menonjol, terutama jika bos Anda menyadari manfaatnya. Jika kode Anda berjalan lebih cepat atau lebih kuat maka Anda juga akan menonjol. Entah akan membuat kasus Anda untuk Anda.
the Tin Man

3

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?


+1 - Saya berpendapat bahwa biasanya lebih baik untuk meletakkan satu set standar pengkodean sebelum menangani masalah, sehingga Anda datang ke meja dengan solusi di tangan yang bisa dimulai oleh rekan kerja Anda. Biarkan bagian yang disetujui semua orang, tambahkan apa pun yang mungkin hilang.
Tim Post

3

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.


1
Masalah umum adalah bahwa google memiliki, dan membayar, jenis programer yang berbeda dari yang biasa dilakukan oleh 500, terutama jika TI dilihat sebagai pusat biaya. Solusi Google mungkin tidak berfungsi di perusahaan farmasi.
Christopher Mahan

Kenapa setiap berkomitmen? Meninjau setiap komitmen tampaknya tidak perlu dan berpotensi bermasalah - fokus 'kontrol' daripada fokus 'budaya'. Risiko rendahnya kualitas atau ulasan dan diskusi yang tidak ada menjadi normal. Juga, tingkat otonomi yang baik penting untuk kesejahteraan dan retensi dan rasa memiliki. Memilih fragmen kode terbatas secara acak dan meninjaunya dengan baik tidak boleh dikesampingkan. Ini akan membuat orang berpikir dan berbicara tentang kualitas kode. Tidak perlu terburu-buru untuk melewati semuanya - dan itu masih akan membawa transfer pengetahuan.
Alex Hayward

1

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.


1

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:

  • Anda sebagai penulis memiliki pengetahuan mendalam tentang mengapa setiap baris yang diubah ada dalam tinjauan kode Anda. Banyak yang jelas bagi resensi yang berpendidikan, tetapi banyak yang tidak. Sampaikan poin-poin itu dengan memberi anotasi pada tinjauan kode Anda sebelum Anda mengirimkannya kepada pengulas.
  • Bahkan sebelum itu, pertimbangkan dengan cermat apa yang termasuk dalam tinjauan kode Anda: pastikan Anda menyertakan semua perubahan yang relevan untuk suatu masalah dan cobalah untuk tidak memasukkan lebih dari satu masalah.
  • Pastikan Anda melakukan checkout kontrol sumber (untuk menyelaraskan kembali kode Anda dengan utama) sebelum Anda mengirimkannya.
  • Tinjau kode Anda sendiri sebelum Anda mengirimkannya - baris demi baris!

Bagian 1: Komentar Pra-Tinjauan: Memberdayakan kolega Anda untuk memberi Anda umpan balik yang lebih baik pada ulasan kode Anda

Bagian 2: Praktik Terbaik: Pedoman untuk mempersiapkan tinjauan kode

Dan dua artikel lainnya memberikan saran praktis tentang cara menjadi peninjau yang lebih baik:

  • Baca Jira / masalah / tiket / persyaratan (apa pun namanya) terlebih dahulu.
  • Pastikan tes unit mencakup persyaratan.
  • Tinjau tes unit untuk kelas kesetaraan dan kelengkapan nilai batas.
  • Pastikan setiap pengujian unit cukup, tidak menguji banyak hal.
  • Tinjau kode untuk kepatuhan pada prinsip-prinsip SOLID.
  • Berhati-hatilah terhadap penemuan kembali roda, kode yang terlalu rumit, dan hanya kode yang rumit.
  • Jauhkan diri dari sihir (senar ajaib, sulap, dan, ya, bahkan boolean ajaib).
  • Tangkap efek kupu-kupu - apakah ada riak yang tidak terjawab (misal, penamaan yang tidak konsisten).

Bagian 3: Dongeng Reviewer: Pedoman untuk melakukan tinjauan kode

Bagian 4: Tinjau Seolah Anda Memiliki Kode



0

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 ...


0

"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! :)


0

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.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.