Saya hanya pengembang junior tetapi pekerjaan saya memaksa saya untuk bekerja dengan kode PHP yang sangat buruk (pikirkan kode PHP terburuk yang pernah Anda lihat; lalu pikirkan tentang kode yang dua kali lebih buruk). Saya biasanya mencoba untuk memperbaiki bug dan bertarung dengan basis kode untuk menambahkan fitur baru. Kadang-kadang saya diperintahkan untuk membuat hal-hal bekerja SECEPATNYA yang lebih sering melibatkan hacks kotor.
Produk ini sebelumnya merupakan open source dan saya khawatir produk tersebut akan menjadi open-source di masa depan. Saya akan malu jika seseorang (terutama pengusaha potensial) dapat menemukan nama saya di samping beberapa perubahan. Apa yang bisa saya lakukan untuk melindungi nama baik saya?
Saya tidak yakin apakah ini relevan tetapi saya akan menambahkan bahwa bos saya atau kolega saya tidak mau mengakui bahwa kode itu buruk, tetapi saya tidak yakin saya bisa menyalahkan mereka untuk itu - bagi banyak dari mereka ini adalah milik mereka pekerjaan pertama.
sumber
Jawaban:
Roma tidak dibangun dalam sehari, tetapi Anda bisa menjadi 'Pramuka' yang baik. Setiap kali Anda menyentuh kode, biarkan lebih baik dari sebelumnya. Tidak perlu banyak waktu untuk menggunakan nama fungsi yang masuk akal, standar pengkodean yang baik, dan memberikan komentar yang layak saat Anda bekerja.
Saya pikir bahayanya adalah memikirkan semuanya atau tidak sama sekali. Hanya karena Anda tidak dapat menghabiskan waktu Anda ingin menulis kode yang elegan, tidak berarti Anda harus benar-benar menyerah dan menulis sampah.
sumber
Every time you touch the code, leave it better than it was before.
Setuju dengan S.Lott dari komentar * (untuk sekali :) Tidak ada yang memaksa Anda untuk menulis kode yang buruk. Masalahnya, junior dev. sering (situs ini juga yang harus disalahkan untuk itu) tersesat dalam praktik terbaik, "kode indah", ... apa pun yang Anda ingin menyebutnya ... dan mereka tidak banyak selesai; atau mereka menyelesaikannya tetapi membuang banyak waktu. Dengan menyuruh mereka untuk menulis kode buruk (yang merupakan kode yang juga berfungsi) itu mendapat daripada "melalui itu", hanya membuat mereka memberikan sesuatu. Seiring waktu berlalu yang menghasilkan bahwa (sekarang tidak lagi :) junior dev sangat cepat muncul dengan solusi cepat & kotor, tetapi menghabiskan sisa waktu untuk memperbaikinya. Dan seiring berjalannya waktu, Anda belajar lebih banyak, dan pada titik tertentu Anda mulai memberikan solusi cepat & kotor yang sebenarnya adalah kode yang baik.
Tetapi, jika Anda mengikuti jalan Anda dan mencoba menulis kode yang sempurna dari awal, Anda kemungkinan besar akan menghabiskan banyak waktu, dan tidak melakukan apa-apa.
Jadi ... tulis kode buruk, ... banyak ... kode yang nyaris tidak berfungsi, lalu ITERATE. Setiap iterasi sedikit lebih baik!
Tidak ada yang menulis solusi sempurna pertama kali.
* ini, kalau saja lebih pendek akan menjadi komentar.
sumber
Komentar kode adalah teman Anda di sini.
Setiap kali Anda merasa harus menulis peretasan murah karena tekanan, katakan saja seperti, "Kode ini berlaku X karena kendala waktu. Idealnya, saya akan melakukan Y sebagai gantinya. - Ashamed One, 5 Juli 2011"
Kemudian jika calon pemberi kerja melihatnya, mereka akan menyadari Anda lebih suka menulis kode yang baik, tetapi Anda juga bersedia menyesuaikan gaya pengkodean Anda dengan kebutuhan bisnis. Kebanyakan majikan akan melihat keduanya sebagai hal yang baik.
sumber
Itu tergantung pada bagaimana mereka memaksa Anda.
Dalam pengalaman saya, ada dua kemungkinan:
Anda merasa dipaksa oleh jadwal yang ketat, kode lama, dll.
Dalam hal ini, seperti sebagian besar jawaban lain sudah katakan, terserah Anda untuk 'mengoptimalkan kesejukan'. Anda mungkin tidak punya waktu untuk menulis ulang basis kode ke MVC, tetapi sebagai langkah pertama, misalnya, Anda dapat berhenti menempelkan SQL dengan tangan dan alih-alih menulis yang bagus
execute_sql($query, $params)
, yang meletakkan dasar untuk abstraksi sepertifetch_customer($filter_params)
, dll. Ingat, semua yang terbaik praktik akhirnya ada di mana atasan Anda mendapatkan produk lebih awal, sehingga hanya ada konflik dalam berapa banyak waktu untuk berinvestasi di masa depan vs di saat ini.Ketika Anda mengatur konteks yang tepat ('dalam 6 bulan, tanpa mendapatkan waktu tambahan, saya refactored kode monolitik ke MVC') Anda harus meninggalkan nama Anda pada kode, dan mencoba untuk menjadi bangga seperti terapis, yang mengajarkan korban stroke untuk ucapkan satu kata lagi.
Anda secara eksplisit diperintahkan untuk mengimplementasikannya dengan cara yang Anda anggap tidak layak
Mencoba memisahkan tampilan dari model tidak bertahan dalam ulasan, karena 'terlalu rumit, mengapa Anda tidak melakukan kueri sql sederhana?'. Anda
execute_sql
dikalengkan karena 'seorang pembuat kode dengan disiplin tidak membutuhkan itu'.Kasus ini sangat buruk. Dalam pengalaman saya, biasanya datang dengan manajemen mikro dan pemimpin tim yang dipromosikan di sana karena alasan politik, bukan karena keberhasilan mereka. Masalah sebenarnya adalah, bahwa Anda bertanggung jawab atas sesuatu (kode) yang tidak dapat Anda kontrol (Anda harus melakukannya dengan cara mereka). Solusi terbaik adalah menyelesaikan akar permasalahan (yaitu, bahwa Anda diperlakukan sebagai penggerutu). Solusi terbaik kedua (dan menurut pengalaman saya, yang biasa) adalah berhenti.
Sisi baiknya adalah, bahwa dalam skenario ini, nama Anda kemungkinan besar tidak akan dipublikasikan, karena ketua tim mengambil kredit untuk semua kesuksesan.
sumber
Saya cukup yakin atasan Anda menuntut Anda memberikan sesuatu dengan cepat, tetapi bukan berarti Anda mengambil upaya ekstra untuk membuatnya dengan sengaja buruk. Yang berarti bahwa setiap kali Anda memiliki pilihan antara kode yang benar-benar buruk dan kode yang sedikit lebih buruk, dan kedua opsi akan membawa Anda sama lama untuk diimplementasikan, Anda memilih opsi yang sedikit kurang buruk. Itu solusi jangka pendek, dan itu tidak membutuhkan usaha sama sekali.
Untuk jangka panjang, bicarakan dengan atasan Anda. Jelaskan bagaimana berinvestasi 15 menit di sini dapat menghemat waktu di sana. Pastikan Anda memiliki contoh yang meyakinkan - bukan tipe "jika saya melakukan ini dan itu di sini, harapan saya adalah bahwa saya akan dapat melakukan hal lain ini tahun depan", tetapi, "lihat, di sini saya melakukan hal ini, dan karena itu, saya butuh tiga jam untuk menemukan masalah di sana; jika saya melakukannya dengan cara ini dan itu, bug akan segera terlihat ". Peringatan di sini: sementara kode yang elegan dan dapat dipelihara terasa jauh lebih baik dan lebih efisien, kadang-kadang tidak. Ada beberapa situasi di mana perbaikan cepat yang ceroboh dibenarkan secara sempurna: kadang-kadang Anda menulis kode sekali pakai, kadang-kadang Anda membiarkan sepotong sampah yang ketinggalan zaman tetap hidup, menunggu hal yang nyata; kadang-kadang, manfaat dari solusi yang tepat tidak
Jika semuanya gagal, cari pekerjaan lain.
sumber
Tidak ada yang memaksa Anda untuk menulis kode yang buruk. Anda dapat membalikkan situasi ini dan menjadikannya positif. Perubahan pelopor untuk kebijakan dan prosedur. Dan kamu juga tidak bisa selalu menjadi pria / wanita "ya". Jika mereka mengatakan mereka membutuhkan fungsionalitas x sebelum akhir hari, beri tahu mereka itu tidak layak, tetapi berikan alasan mengapa memang tidak layak. Jika ada masalah, tawarkan solusi. Bukan hanya mata yang buta, atau lebih buruk ... menambahnya.
Toko pengembang Anda bukan yang pertama memiliki tenggat waktu yang ketat, namun tetap memiliki keinginan untuk mempertahankan kode yang direkayasa dengan baik.
sumber
Setiap perusahaan perlu menemukan keseimbangan antara menulis kode yang brilian, dengan dokumentasi yang luas dan tes unit dan membawa produk ke pasar dalam anggaran yang wajar dan ruang waktu.
Kode terbaik di dunia tidak masalah jika sudah usang sebelum dirilis.
Menjadi pragmatis adalah tentang mencoba menemukan keseimbangan itu. Memperbaiki fitur-fitur dengan cepat mungkin sangat penting secara komersial saat ini, bukan berarti selalu demikian.
Dibutuhkan banyak pengalaman (Lebih dari kebanyakan coders yang pernah ada), untuk mendapatkan keseimbangan ini dengan benar. Sangat mudah digunakan untuk kedua ekstrim. Menemukan jalan tengah lebih sulit.
Saya tidak mengatakan bos Anda benar. Sebagai seorang pembuat kode, ada godaan untuk mencoba membuat kode-kode indah secara terus-menerus yang tidak layak secara komersial. Menyadari godaan ini dapat membantu Anda menyadari bahwa beberapa peretasan ini tidak terlalu buruk.
Sebagian besar kode setelah waktu yang cukup akan berisi peretasan untuk situasi tertentu yang terlalu mahal untuk diubah menjadi kerangka umum.
sumber
Saya ingin menambahkan bahwa Anda tidak boleh terus seperti Anda melakukannya sekarang, tidak mengatakan apa-apa dan hanya peretasan dan peretasan.
Anda perlu berdiri dan menunjuk kode konkret dan memberi tahu mereka apa yang menyebalkan tentang itu. Spesifik dan gunakan metrik kode untuk mencadangkan klaim Anda. Tidak ada yang lebih memalukan daripada mengklaim kode itu buruk padahal sebenarnya tidak, Anda hanya tidak mengerti apa yang sedang dilakukan.
Saya yakin ada banyak alat yang tersedia gratis untuk digunakan untuk analisis kode php http://en.wikipedia.org/wiki/Code_analysis
Juga, tentu saja ini http://en.wikipedia.org/wiki/Code_smell
Bacalah, simpulkan apa yang dapat Anda temukan di aplikasi Anda, dan tentu saja daftarkan alternatifnya . Praktek yang buruk untuk hanya berdiri dan berteriak "Saya tidak suka bagaimana ini dilakukan" tanpa menghadirkan alternatif (lebih baik) cara yang lebih baik untuk melakukannya.
Peretasan cepat membutuhkan biaya. Dan jangan melihatnya sepenuhnya negatif - Anda dapat belajar banyak dari pekerjaan ini sekarang dan dapat mengambil manfaat dari pengalaman yang Anda buat di pekerjaan Anda berikutnya.
hth
sumber
Sebelum hal lain, Anda DO menggunakan kontrol sumber dari beberapa jenis, kan? Jika tidak, mulailah dari sana. Ini akan membantu Anda terlebih dahulu dan diadopsi oleh anggota tim lainnya dengan cepat.
Jika Anda memiliki kontrol sumber, Anda tidak boleh memasukkan nama Anda dalam kode, cukup masukkan nama perusahaan Anda. Adalah umum dalam kode yang buruk untuk menempatkan riwayat revisi di komentar di bagian atas file, ini lebih baik didelegasikan ke kontrol sumber.
Sekarang, mengenai kualitas kode, Anda tidak akan dapat mengubahnya sebagai pendekatan yang hebat. Perlahan, satu per satu, tambahkan pendekatan baru untuk berbagai masalah. Jika Anda melakukannya dengan benar, itu akan menghemat waktu dan Anda akan menggunakannya untuk membuat kualitas keseluruhan menjadi lebih baik.
Sebagai contoh, saya pernah tiba di tengah proyek dengan aplikasi Perl / CGI di mana semua HTML ada dalam kode. Seluruh aplikasi berada dalam satu file tanpa struktur yang jelas. Tidak ada yang versi. Saya mulai dengan mengkonfigurasi repo CVS (tidak ada SVN tersedia pada saat itu), meletakkan antarmuka web untuk pelanggan. Pada awalnya, saya sendiri menangani komit dari rekan-rekan saya. Kemudian, saya membagi semua metode dalam berbagai modul (file). Pada saat itu, para kolega mulai mengadopsi CVS. Lalu, saya memindahkan HTML dari kode. Kemudian, setiap kali saya harus melakukan perubahan pada beberapa bagian kode, saya mengambil sedikit waktu untuk memperbaiki sebagian darinya. Pada akhirnya, kecepatan pengembangan telah meningkat sedemikian rupa sehingga pelanggan sangat senang. Mereka akan meminta perubahan kosmetik dan bukannya kami memberi tahu mereka "itu akan memakan waktu 2 hari",
Namun pendekatan ini hanya akan berfungsi jika Anda menguasai kode keseluruhan dengan cukup baik. Jika Anda tidak memahami gambaran besarnya, jika beberapa bagian aplikasi tetap tidak dapat dipahami, itu akan membuat pekerjaan Anda sangat sulit.
Satu hal lagi, penulisan ulang yang lengkap terkadang merupakan satu-satunya solusi tetapi biasanya sangat sulit untuk membenarkan biayanya kepada manajemen.
sumber
Karena Anda adalah pengembang junior, ini sebenarnya adalah hal yang baik. Menjadi terlempar ke tengah kekacauan kode besar akan mengajarkan Anda lebih banyak tentang apa yang tidak boleh dilakukan daripada hanya bekerja pada kode 'bersih' yang sempurna. Manfaatkan situasi ini dan pelajari cara memperbaiki kode buruk dan perlahan-lahan mengubahnya menjadi sesuatu yang lebih mudah dikelola. Dan jangan mengeluh tentang itu harus SECEPATNYA. Itulah intinya - belajar memperbaiki dan membersihkan kode sambil melakukan sesuatu di bawah tenggat waktu yang ketat. Lagi pula, siapa pun dapat menulis kode yang sempurna jika mereka memiliki waktu tanpa akhir.
sumber