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.
sumber
Jawaban:
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.
sumber
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.
sumber
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
sumber