ScholarGate
Asisten

Kualitas Kode dan Refactoring

Kualitas kode dan refactoring berkaitan dengan penulisan kode sumber yang mudah dibaca, dipelihara, dan terstruktur dengan baik, serta teknik disiplin untuk meningkatkan struktur internal kode yang ada tanpa mengubah perilaku eksternalnya.

Temukan Topik dengan PaperMindSegeraFind papers & topics
Tools & resources
Unduh salindia
Learn & explore
VideoSegera

Definition

Refactoring adalah proses mengubah sistem perangkat lunak dengan cara yang tidak mengubah perilaku yang dapat diamati namun meningkatkan struktur internalnya, dan kualitas kode adalah tingkat di mana kode sumber menunjukkan keterbacaan, kemampuan pemeliharaan, dan desain internal yang baik.

Scope

Topik ini mencakup keterbacaan dan penamaan kode, kohesi dan kopling pada tingkat kode, 'bau kode' (code smells) yang menandakan masalah desain, katalog refactoring yang mempertahankan perilaku, peran pengujian otomatis dalam refactoring yang aman, serta metrik kualitas kode dan alat analisis statis yang digunakan untuk menilai dan menegakkan standar.

Core questions

  • Karakteristik apa yang membuat kode sumber mudah dibaca dan dipelihara?
  • Bagaimana 'bau kode' (code smells) menandakan di mana refactoring diperlukan?
  • Bagaimana struktur dapat ditingkatkan tanpa mengubah perilaku atau memperkenalkan cacat?
  • Bagaimana kualitas kode dan penurunannya diukur dari waktu ke waktu?

Key theories

Refactoring yang mempertahankan perilaku
Refactoring menerapkan transformasi kecil yang mempertahankan perilaku secara berurutan, masing-masing diverifikasi oleh pengujian, untuk meningkatkan struktur secara bertahap dan aman daripada melalui penulisan ulang besar yang berisiko.
Bau kode (code smells) sebagai heuristik desain
Gejala permukaan yang berulang — metode panjang, kode duplikat, kelas besar, 'kecemburuan fitur' (feature envy) — berfungsi sebagai heuristik yang menunjukkan masalah desain yang lebih dalam dan menyarankan refactoring spesifik untuk mengatasinya.

Clinical relevance

Kualitas kode yang tinggi menurunkan biaya pemahaman dan perubahan perangkat lunak, yang mendominasi total biayanya; refactoring berkelanjutan menjaga basis kode tetap adaptif dan penting untuk mempertahankan pengembangan tangkas (agile) serta mengendalikan utang teknis.

Evidence & guidelines

ISO/IEC 25010 membingkai kemampuan pemeliharaan dan atribut kualitas lainnya, dan alat analisis statis menegakkan standar pengkodean serta mendeteksi 'bau kode' (smells) terhadap aturan proyek.

History

Praktik refactoring disistematisasi oleh Fowler pada tahun 1999 dan berkembang bersama pengembangan berbasis pengujian (test-driven development) dan metode tangkas (agile), yang bergantung pada restrukturisasi berkelanjutan yang dilindungi pengujian; keahlian kode bersih (clean-code craftsmanship) dan analisis statis otomatis kemudian memperkuat disiplin kualitas kode.

Debates

Seberapa banyak refactoring yang dibenarkan
Tim memperdebatkan seberapa agresif refactoring harus dilakukan: perbaikan kecil yang berkelanjutan menjaga kode tetap sehat tetapi menghabiskan upaya, sementara menunda restrukturisasi mengakumulasi utang teknis; keseimbangan tergantung pada umur panjang dan tingkat perubahan kode.

Key figures

  • Martin Fowler
  • Kent Beck
  • Robert C. Martin
  • Steve McConnell

Related topics

Seminal works

  • fowler2018
  • mcconnell2004
  • martin2008

Frequently asked questions

Apakah refactoring mengubah apa yang dilakukan program?
Tidak. Berdasarkan definisi, refactoring mempertahankan perilaku yang dapat diamati; ia merestrukturisasi internal untuk meningkatkan keterbacaan dan desain. Pengujian otomatis digunakan untuk mengonfirmasi bahwa perilaku tidak berubah setelah setiap transformasi.
Mengapa berinvestasi dalam kualitas kode jika perangkat lunak sudah berfungsi?
Sebagian besar biaya suatu sistem berasal dari pemahaman dan perubahannya di kemudian hari; kode berkualitas buruk memperlambat setiap modifikasi di masa mendatang dan meningkatkan risiko cacat, sehingga berinvestasi dalam kualitas akan membuahkan hasil sepanjang masa pakai perangkat lunak yang dipelihara.

Methods for this concept

Related concepts