Saya kehilangan jejak aliran aplikasi web PHP saya, itu menjadi sulit untuk dikerjakan

14

Saya sudah pemrograman selama beberapa tahun, dan menjadi sangat akrab dengan C # dan JavaScript dari waktu ke waktu. Saya memiliki beberapa proyek C # dan JavaScript yang lebih besar sehingga saya tidak kesulitan menavigasi. Baru-baru ini saya memulai proyek PHP & AngularJS untuk pekerjaan tanpa pengalaman sebelumnya dengan PHP.

Alur sisi PHP menjadi semakin sulit untuk dilacak (Sisi JavaScript lebih besar, tetapi mudah untuk dikerjakan), ketika saya mencoba dan memikirkannya, saya membayangkan bola benang yang kusut. Kesalahan desain utama yang saya buat ketika saya mulai mulai menumpuk dan efek desain saya maju. Butuh waktu lebih lama dan lebih lama untuk menerapkan hal baru.

Saya berada pada tenggat waktu yang ketat dan merasa semakin sulit untuk menulis kode yang baik, KERING, SOLID,. Menjadi lebih menarik untuk menyalin / menempelkan potongan kode untuk membuat sedikit variasi pada perilakunya saat waktu desain naik. Butuh waktu lama untuk kembali ke basis kode kapan pun saya harus melakukan pergantian konteks (Dari satu proyek lalu kembali ke yang ini), saya merasa takut setiap kali kembali bekerja di proyek ini.

Langkah apa yang bisa saya ambil untuk memperbaiki ini? Waktu tambahan yang dibutuhkan mungkin perlu dibenarkan juga, bos saya bukan pengembang dan tidak terbiasa dengan siklus pengembangan perangkat lunak atau kehidupan sehingga menjelaskan mungkin lebih sulit dari biasanya.

Douglas Gaskell
sumber
1
Terima kasih @gnat Namun, saya kurang tertarik membuat kasus untuk bos saya daripada saya mencari tahu bagaimana sebenarnya memperbaiki masalah sendiri. Membuat kasus kepada bos saya tidak ada gunanya jika saya tidak tahu cara metodis yang baik untuk mengidentifikasi dan mengubah masalah.
Douglas Gaskell

Jawaban:

11

Anda menerima hutang teknis. Semakin Anda menjustifikasi kode ceroboh dengan tenggat waktu, semakin banyak tenggat waktu yang akan Anda raih semakin sedikit.

Pahamilah bahwa Anda benar-benar dapat melakukannya. Tidak ada yang akan menangkap Anda membuat kekacauan dan mengusir Anda. Anda akan bangun suatu hari dikelilingi oleh kekacauan.

Pada saat itu Anda akan memperbarui resume Anda dan menjadikannya masalah saya atau Anda akan memutuskan untuk membayar hutang dan meluangkan waktu membersihkan kode.

Jika Anda pergi membersihkan pembersihan mengerti ini bukan tentang "menghabiskan lebih banyak waktu untuk desain". Ini tentang menghentikan kebiasaan malas dan membuang sampah.

Membuang grosir kode kotor adalah ide yang buruk. Bukan karena pekerjaan yang masuk ke dalamnya, tetapi karena kode kerja menangkap ide. Pindahkan ide ke kode bersih sebelum Anda membuang kode kotor.

Memiliki unit test membantu dengan ini tetapi jika Anda membuat tes Anda dengan perawatan yang sama Anda menempatkan ke dalam kekacauan mereka kemungkinan perlu diperbaiki juga.

Jangan menyerah pada kekakuan. Jika Anda tidak dapat mengubahnya maka itu bukan perangkat lunak.

candied_orange
sumber
1
"Tidak ada yang akan menangkapmu membuat kekacauan dan mengusirmu." ... Kecuali Anda melakukan review kode. ;)
jpmc26
1
@ jpmc26 Jika Anda berpikir ulasan kode akan menyelamatkan Anda dari nasib ini, Anda salah. Ulasan kode hanya membantu Anda ketika Anda mau belajar dari orang lain. Tidak ketika Anda fokus pada tenggat waktu. Bekerja, berantakan, kode akan mengungguli pendapat lagi dan lagi. Saya telah melihat manajer menyelesaikan perselisihan ini dengan membalik seperempat. Jika Anda tidak peduli dengan kualitas, tidak ada yang bisa menariknya keluar dari Anda. Jangan berpikir Anda bisa mengandalkan orang lain untuk mencegah Anda membuat kekacauan. Jika itu yang terjadi, mereka hanya akan menugaskan Anda untuk memperbarui dokumentasi.
candied_orange
Jika Anda membaca komentar saya dan berpikir bahwa saya mengatakan ulasan kode ajaib seperti unicorn dan pelangi yang akan memperbaiki semuanya tanpa usaha atau kemauan, Anda salah besar. Tapi mereka memberi seseorang kesempatan untuk memanggil Anda keluar.
jpmc26
1
@ jpmc26 Jika Anda membaca jawaban saya dan berpikir bahwa saya mengatakan tidak ada harapan untuk menyerah, Anda salah besar. Saya meminta programmer untuk mengambil tanggung jawab pribadi untuk kode bersih daripada mengandalkan proses apa pun untuk mewujudkannya. Hanya satu hal yang penting. Anda peduli atau tidak.
candied_orange
Tentu saja, tetapi bahkan programmer terbaik akan membuat keputusan bodoh setiap saat. Ulasan kode dengan orang lain memberi Anda kesempatan untuk meletakkan kode Anda di depan orang lain yang dapat menangkapnya lebih awal. Itulah intinya . Ini sulit untuk melihat masalah bintik-bintik sendiri sampai Anda benar-benar mencoba untuk mengubah sesuatu dan itu menjadi sulit. Tentu saja ulasan kode dan teknik lainnya tidak berguna jika Anda tidak peduli.
jpmc26
9

Butuh waktu lebih lama dan lebih lama untuk menerapkan hal baru.

Ini pembenaran Anda. 'mengaku, makan gagak, dan menjelaskan mengapa hal-hal lebih lama dan bahwa Anda perlu menghabiskan sedikit waktu untuk refactoring + mendesain ulang sistem.

Jika Anda tidak melakukan itu, Anda harus melakukan refactor sedikit demi sedikit, pada down-low. Tugas sudah lebih lama dari yang Anda inginkan - luangkan sedikit waktu setiap kali Anda menyentuh basis kode untuk mencoba dan membuat sesuatu yang lebih baik. Tambahkan tes integrasi. Ekstrak abstraksi.

Jawaban bodoh untuk "Bagaimana saya merefleksikan proyek besar?" adalah, "Satu per satu".

EDIT

Sedang membaca posting terkait, dan menemukan posting blog ini: http://ronjeffries.com/xprog/articles/refactoring-not-on-the-backlog/ . TLDR : jangan mencoba membuat 'fase' refactor besar dalam proyek Anda; tidak mungkin mendapat dukungan dari pemilik proyek, dan Anda tidak akan diarahkan dalam pilihan Anda tentang apa yang harus ditangani selama waktu yang Anda miliki. Alih-alih, luangkan waktu untuk setiap perubahan atau perbaikan bug baru untuk menghapus kode yang sedang Anda kerjakan sekarang. Jangan biarkan bau menempel ketika Anda memiliki kesempatan untuk memperbaikinya.

Jen
sumber
3
Itulah tepatnya yang saya lakukan dengan warisan saya di masa lalu. Yang menyenangkan: begitu Anda mendapatkan titik balik, proyek mulai bersinar seperti dengan debu peri.
qwerty_so
-2

Sonarqube mendukung PHP sehingga Anda dapat membantu melacak utang Anda saat ini dan kebocoran baru. http://docs.sonarqube.org/display/PLUG/PHP+Plugin

Sampel langsung dengan Drupal https://sonarqube.com/dashboard?id=drupal

Archimedes Trajano
sumber
1
Sayangnya saya tidak dapat menginstal JVM di perangkat kerja saya. Ini terlihat seperti alat yang hebat.
Douglas Gaskell
Itu cukup kejam untuk workstation pengembang.
Archimedes Trajano
Saya tidak memiliki admin lokal, atau izin instal apa pun, atau menjalankan izin untuk aplikasi apa pun yang bukan putih. Dulu jauh lebih buruk .... sedih.
Douglas Gaskell
Tidak bisa mengatakan saya berempati, saya bersimpati.
Archimedes Trajano
downvoted karena itu hanya iklan / tautan ke alat, bukan jawaban untuk pertanyaan OP.
James Snell