Cara menangani kode kompleks dalam proyek (besar)

8

Saya sedang mempersiapkan memoar tentang "Mengapa (beberapa) proyek TI menjadi terlalu rumit dan bagaimana cara menghindarinya?".

Jika Anda pernah menemukan proyek yang memiliki kode kompleks atau sulit untuk dipelihara, bagaimana Anda bisa menjalaninya?

Jika Anda harus memilih di antara beberapa aplikasi untuk digunakan dalam proyek Anda, apa yang akan menjadi prioritas utama Anda dalam fungsi mereka dan mengapa?

secara dagofly
sumber
1
Tidak ada kode kompleks dalam proyek kompleks. Lihat english.stackexchange.com/questions/20455/…
Tidak ada yang menyebutkan kode peta atau pemetaan pikiran karena mereka tidak pernah diajarkan untuk menggunakannya dan tidak memiliki pengalaman dalam menggunakannya karena tidak ada plugin atau perangkat lunak di luar sana yang dapat membuat peta untuk aliran kode proyek besar Anda. Jutaan baris kode dan Anda harus melewati mereka selama berjam-jam untuk memahami sesuatu yang kecil. Cara orang membuat program brutal dan membutuhkan waktu lama untuk mengelola proyek. Semoga pemrograman visual satu hari atau setidaknya plugin pembangkit aliran kode menemukan jalan mereka di dunia pemrograman sebagai alat yang berharga.
Eftekhari

Jawaban:

8

Dokumen, Dokumen, Dokumen!

Saya bekerja dengan beberapa kode MVC yang cukup kompleks, dan baru sekarang saya benar-benar memahami cara kerjanya, bukan menerimanya dengan keyakinan. Setiap kali saya membuat perubahan yang sulit saya pahami, saya memberikan komentar pada kode di bagian itu untuk membantu memperjelas apa yang terjadi. Itu mungkin tidak membantu saya karena tidak ada di sana, tetapi itu akan membantu orang berikutnya di sekitar. Saya juga ingin meminta programmer lain di sekitar saya untuk melihat perubahan saya untuk melihat apakah mereka jelas.

Perusahaan saya memiliki wiki internal yang kami gunakan untuk mendokumentasikan banyak tugas meta yang kami lakukan, seperti masalah server virtual, pertanyaan umum, dll. Setiap kali saya menemukan sesuatu yang belum pernah saya lakukan sebelumnya tetapi harus sering dilakukan, saya periksa untuk melihat apakah ada wiki di atasnya. Jika tidak ada saya akan membuatnya. Lebih banyak orang terlibat di dalamnya juga baru-baru ini, jadi saya berharap ini akan tumbuh lebih cepat. Saya pikir itu sangat membantu komunikasi dari tugas-tugas duniawi yang kita miliki.

Michael K.
sumber
1
Menarik! Saya bertanya-tanya mengapa kita tidak memiliki wiki seperti itu di perusahaan kita, itu akan jauh lebih mudah
dagofly
+1 untuk wiki pengembang (selama ini didukung dengan baik!)
MGOwen
6

Saya tidak berpikir Anda dapat sepenuhnya menghindari kompleksitas dari waktu ke waktu, tetapi ada beberapa cara untuk menguranginya:

  • Simpan kode sebersih mungkin setiap saat, sesuai alasan. (Dalam "bagaimana Paman Bob mendefinisikan pengertian 'bersih'.)
  • Terapkan ulasan kode dan / atau pemrograman pasangan untuk menurunkan kemungkinan salah satu pengembang melakukan hal-hal yang tidak perlu.
  • Pertahankan tes unit dan uji integrasi yang memadai.
  • Investasikan dalam server integrasi berkesinambungan dan seringlah membangun. Lepaskan juga sering, jika mungkin.

Semua ini agak tergantung pada apa proyek sebenarnya memerlukan. Kadang-kadang, misalnya, akan bermanfaat untuk menerima kompleksitas dengan imbalan kinerja. Tidak semua kode kompleks selalu merupakan hal yang buruk. Secara umum, saya pikir mengikuti pedoman ini akan membantu.

Adam Lear
sumber
3
  • hutang teknis

    refactor untuk menghilangkan

  • perubahan bisnis

    beradaptasi dan menghapus

  • perubahan alat

    alat baru, arsitektur lama yang sama = ketidakcocokan impedansi

Steven A. Lowe
sumber
tepatnya, berurusan dengan kode / arsitektur parterns kompleks (buruk ditulis) alih-alih refactoring itu membayar BUNGA utang teknis. ketika Anda menghilangkan titik-titik buruk itu Anda membayar kembali PRINCIPAL pada utang teknis
shershen
Cara menarik untuk menggambarkan ini, berharap beberapa klien saya dapat memahami ini. Membangun di atas kode fondasi yang buruk dan rusak, hanya berarti peretasan yang lebih kompleks diperlukan di masa depan, bukan hanya berhenti, melihat di mana kita berada dan bagaimana kita dapat membuat hidup lebih mudah & lebih cepat, dan bergerak ke arah itu .. sementara ($ client_does_not_listen) { $ client_does_not_listen = waste_time_and_money_until_client_listens (); }, hati-hati karena loop sementara yang sederhana ini akan menghabiskan menit hidup Anda & membuat Anda gila, dan jelas hanya dapat dikalahkan oleh klien .. Saya bahkan mencoba melempar tangkapan {} catch () tanpa hasil. .
NinjaKC
3

Selain itu, tahan godaan untuk menambahkan peretasan cepat karena kodenya sudah kompleks / buruk / sudah diretas. Dalam pengalaman saya, Anda akan berakhir dengan kompleksitas eksponensial yang lebih banyak.

Program Lenny
sumber
5
Benar. Ketika Anda menemukan diri Anda dalam lubang, hal pertama yang harus dilakukan adalah berhenti menggali.
PeterAllenWebb