Sebagai programmer, kita sering bangga akan keterampilan kita dan memiliki pendapat yang sangat kuat tentang apa itu kode 'baik' dan kode 'buruk'.
Pada suatu titik tertentu dalam karier kita, kita mungkin memiliki sistem warisan yang jatuh di pangkuan kita, dan berpikir, "Ya Tuhan, kode ini payah!" karena itu tidak sesuai dengan pendapat kami tentang kode apa yang seharusnya, terlepas dari kenyataan bahwa itu mungkin berfungsi dengan baik, kode dapat dipelihara.
Bagaimana Anda mempersiapkan diri Anda secara mental ketika mencoba untuk mendapatkan pekerjaan kepala programmer lain?
Jawaban:
Untuk setiap basis kode lama, cara yang benar untuk mempersiapkan diri Anda secara mental untuk menghadapinya adalah mulai dengan menulis tes unit untuknya .
Apakah itu menyebalkan atau tidak, Anda harus terlebih dahulu memiliki kepercayaan diri untuk dapat mengubahnya tanpa merusak barang!
sumber
Saya tidak bisa memberi tahu Anda berapa kali saya mengatakan "Oh, ini benar-benar salah", menulis ulang, dan kemudian menemukan cara yang sulit mengapa kode itu ditulis seperti itu. Biasanya, ini merupakan persyaratan tidak tertulis / tidak jelas yang tidak jelas. Setidaknya, itu benar dalam kode lawas yang saat ini saya kerjakan.
sumber
Anda menunggu sampai Anda sudah cukup lama untuk menemukan kode warisan jelek Anda sendiri. Itu adalah pengalaman yang merendahkan hati dan bagian dari proses pembelajaran. Saya merindukan saat ketika saya tahu segalanya.
Saya pikir Fosco memiliki poin bagus untuk dapat memasukkannya ke dalam konteks pembatasan waktu & fungsionalitas potensial. Terkadang Anda dipaksa untuk membuat sesuatu berfungsi.
Dan terakhir, pahami bahwa inilah sebabnya Anda memiliki pekerjaan.
sumber
Tertawalah, berusaha keras untuk tidak menghakimi terlalu banyak, dan lewati saja. Tidak baik menjadi kode-nazi nyata ... Pasti ada yang namanya 'cukup baik' atau bahkan 'cukup baik pada saat itu.' Ada banyak kali di mana sesuatu dikembangkan atau dibalut untuk memperbaiki krisis, kemudian tidak pernah ditinjau kembali.
Jika benar-benar buruk, lihat apakah Anda dapat membuat kasus untuk menulis ulang .. jika itu tidak penting, cukup masuk dan keluar.
sumber
Pilih pertempuran Anda. Ketahui perbedaan antara "Saya tidak akan menulis seperti ini" dan "ini menciptakan pemeliharaan yang serius atau tantangan dukungan"
sumber
Seringkali saya merasa berguna untuk merasakan apa yang dianggap baik oleh para pengembang asli.
Cari pola dan tema untuk apa yang mereka lakukan dan sering kali Anda menemukan bahwa ada alasan untuk beberapa keputusan aneh di tempat pertama.
Kadang-kadang Anda menemukan bahwa pengembang asli sebenarnya buruk, tetapi Anda memiliki gagasan tentang jenis buruk apa yang mereka jual saat itu.
Bagaimanapun, setelah melakukan ini, Anda harus memiliki gambaran yang lebih baik tentang di mana Anda bisa memulai menulis ulang atau seperti apa perbaikan cepat tanpa harus memperbaiki semuanya.
Yang terpenting, jangan langsung berasumsi bahwa hanya karena jelek itu buruk. Tidak ada yang membuat Anda terlihat lebih bodoh karena menghabiskan waktu memodernisasi sesuatu hanya untuk mengetahui itu kurang mampu daripada yang asli.
sumber
Jika saya punya waktu saya serang dan membunuh kode yang ditulis dengan buruk.
Ini perang.
sumber
Saya selalu beralasan bahwa kode jelek adalah kode yang telah melihat banyak debugging, dengan banyak seluk-beluk yang tidak tampak dengan inspeksi sepintas. Jika saya menggantinya, atau mendesain ulangnya secara mendalam, saya perlu memastikan bahwa saya benar-benar memahami setiap aspek dari apa yang kode lakukan. Jika saya tidak punya waktu untuk sampai ke dasar, saya harus mengambil pendekatan risiko minimal, membuat perubahan sekecil mungkin untuk mencapai tujuan saya.
Biasanya saya akan melakukan perbaikan / perubahan kecil, dan mengusulkan fitur untuk pengembangan nanti yang akan memaafkan sampai ke dasar hal-hal dan refactoring semuanya. Lalu saya melakukan yang terbaik untuk mengabaikan kode sampai fitur tersebut berakhir pada peta jalan.
sumber
Ketika kode lama lebih dari beberapa tahun, mungkin telah ditulis seperti itu karena keterbatasan dalam bahasa atau sistem operasi dll. Yang ada pada saat kode itu ditulis. Hei itu terlihat buruk sekarang, tetapi apakah itu buruk? Saya mencoba berasumsi bahwa pengembang memiliki alasan atas apa yang dia lakukan. Alasan itu mungkin tidak lagi berlaku tetapi dengan asumsi ada satu alih-alih hanya ketidakmampuan umum (programmer muda akan memikirkan hal yang sama tentang kode Anda dalam 5 tahun bahkan mungkin kurang) membuat Anda kurang marah tentang hal itu. Jika berhasil dan tidak ada masalah yang terkait dengannya, hargai kode warisan itu, tidak peduli seberapa jeleknya, karena itu akan membuat Anda menyelesaikan masalah yang lebih menarik.
sumber
Di masa lalu ketika saya tidak punya waktu untuk mengencingi kode orang lain dan mengalahkannya menjadi gaya "saya", saya harus menggunakan cara yang sangat didorong oleh tugas:
Apa yang saya coba tambahkan ke kode ini / fix / make work?
Apakah yang saya lakukan sedang berusaha mencapai tujuan itu? Jika tidak, berhentilah melakukannya, dan kembalilah ke saat terakhir saya membuat perubahan berorientasi tugas.
Apakah saya selesai dengan tugas ini? Jika demikian, berhentilah mengutak-atik kode, meskipun sepertinya kode itu ditulis oleh cetakan Mars yang non-sentient.
sumber
Kecuali Anda siap untuk memiliki kode dan perbaikan yang diperlukan di masa mendatang, jangan menyentuhnya. Anda akan mengatasi kecenderungan ingin memperbaiki sesuatu ketika Anda memecahkan sesuatu yang tidak Anda tulis karena Anda tidak mempelajarinya dengan cukup baik sebelum Anda menyelam, dan Anda butuh 2 hari dan latihan api untuk membuatnya bekerja lagi .
Jangan salah paham ... ada alasan sah untuk memperbaiki kode, tetapi jika sebuah bisnis menuntut agar kode itu bekerja, dan Anda "memperbaikinya" tanpa mengetahui konsekuensinya sebelum melompat, Anda meminta dunia yang terluka .
sumber
Refactoring sedikit demi sedikit bisa bermanfaat, tetapi berhati-hatilah dalam mengubah aspek kecil apa pun dari bagaimana kode itu benar-benar berperilaku kecuali Anda mengerti mengapa perilaku itu ada dan apa pengaruhnya. Sayangnya, kode yang paling membutuhkannya kadang-kadang paling sulit untuk diubah tanpa menyentuh perilakunya, meskipun Anda biasanya dapat meluruskan bagian-bagiannya, atau setidaknya berkomentar.
sumber
Saya bekerja hampir secara eksklusif pada kode warisan hari ini dan saya selalu berpikir, "Oh, tidak, apa yang mereka pikirkan?" . Lalu saya mulai menulis tes unit untuk kode dan itulah titik di mana saya benar-benar harus menganalisis aliran kontrol dan dependensi.
Terkadang tidak mungkin untuk dengan mudah menulis unit test. Tetapi ketika saya mencoba, saya mendapatkan informasi tentang kode dan akan mengerti mengapa ditulis seperti itu. Kadang-kadang itu akan membuktikan bahwa kode itu benar-benar berantakan, kadang-kadang saya bisa memahami proses pemikiran pengembang asli dan dapat menambahkan dokumentasi yang berguna atau menulis ulang sepotong kode ketika saya ingin menambahkan fungsionalitas baru.
Bagi saya itu membantu untuk berpikir bahwa kode saya akan terlihat sama untuk saya sendiri ketika saya kembali ke sana dalam 12 bulan .
sumber
Dengan pengalaman muncul penilaian untuk mengetahui kapan kode benar-benar buruk, dan kapan kode itu ditulis dengan gaya yang berbeda. Jika ini berfungsi dengan baik dan mudah dirawat dan ada cakupan tes otomatis yang baik , maka itu tidak buruk dan Anda hanya perlu membuka pikiran Anda. Anda mungkin akan belajar sesuatu. Kode yang buruk tidak berfungsi dan dapat dikelola.
Berikut ini beberapa penanda kode yang benar-benar buruk:
Kurangnya tes otomatis tidak berarti kode itu buruk, tetapi itu berarti proyek itu buruk.
Ini bukan masalah selera; praktik-praktik ini membuat pemeliharaan program jauh lebih mahal.
Terima kenyataan bahwa perlu beberapa saat untuk dapat berhasil bekerja pada basis kode baru. Jika "dipelihara dengan sempurna" dan ada cakupan tes yang tinggi, itu membutuhkan waktu lebih sedikit tetapi itu masih tidak akan terjadi segera. Jika kode itu buruk, maka hal pertama yang saya lakukan adalah memperingatkan para pemangku kepentingan bahwa itu dalam kondisi yang buruk dan kemajuan awal akan lambat. Jika mereka skeptis, maka saya mendukung klaim saya dengan menunjukkan kepada mereka contoh masalah dalam kode aktual dan menjelaskan perbedaannya dari praktik terbaik industri.
sumber