Saya terus kewalahan oleh proyek-proyek besar, begitu mereka mencapai tingkat kompleksitas tertentu. Begitu saya mencapai titik tertentu dalam sebuah proyek, kemajuan saya melambat dan saya mendapati diri saya terus-menerus menelusuri kembali langkah-langkah saya dan memilah segala macam kebingungan.
Saya menjadi sangat ahli dalam refactoring karena kelemahan saya ini. Dan saya selalu mencoba menguraikan objek saya menjadi lebih kecil, lebih mudah dikelola. Kelemahan ini juga mungkin menyebabkan saya terlalu memperhatikan mendesain sesuatu dengan baik.
Saya tahu jika saya dapat memecah masalah saya menjadi yang lebih kecil, saya akan dapat menyelesaikannya dengan lancar. Salah satu strategi yang muncul dalam pikiran adalah pengembangan yang digerakkan oleh tes. Apa lagi yang bisa saya lakukan?
sumber
Jawaban:
berhenti memikirkan kodenya
mulailah berpikir tentang lapisan, fitur, modul, layanan, dan abstraksi tingkat tinggi lainnya
Anda menjadi kewalahan karena Anda berpikir pada level yang terlalu rendah
sumber
Membuat kompleks menjadi mudah itu mudah ; tunggu pikir itu sebaliknya.
Semua orang berjuang dengan ini, tidak ada solusi langsung yang memiliki efektivitas ekstrim.
Karena Anda tidak mencantumkan ini dalam pertanyaan Anda, saran saya adalah:
Fokus pada kohesi fungsional melalui:
Jika Anda Google di antara hasil di halaman pertama Anda akan menemukan dua sumber daya hebat:
Apa kohesi dalam ilmu komputer?
Jika Anda memiliki pertanyaan, beri tahu saya.
sumber
Membusuk fitur menjadi barang sekecil mungkin. Misalnya, satu bidang pada formulir. Pilih yang paling berisiko atau prioritas tinggi dan maju seperti perbaikan bug sederhana, bukan proyek besar. Memang benar bahwa Anda akan berakhir dengan beberapa refactoring nanti, tetapi setidaknya Anda akan bergerak maju.
sumber
Dari pengalaman saya, Anda telah menjawab pertanyaan Anda sendiri dengan komentar tentang TDD. Bagi saya, saya sering merasakan hal yang sama dengan Anda, kesuksesan cepat awal dengan cepat berubah menjadi macet pada detail kecil begitu sistem mencapai ukuran tertentu. Saya menemukan dengan TDD itu membantu karena Anda dapat menangani setiap bagian dari sistem sebagai potongan kecil, mengetahui bahwa sisa sistem akan atau harus terus bekerja ketika Anda meninggalkannya. Saya pikir juga, dengan TDD membantu memastikan sistem Anda jelas dibagi menjadi potongan-potongan kecil yang dapat diuji secara independen.
sumber
Beberapa orang pandai merancang program modular, mudah dimengerti, tetapi sebagian besar programmer tidak memiliki fasilitas ini, pada tingkat yang lebih rendah atau lebih besar. Saya tahu tidak ada buku, prosedur atau praktik yang dapat mengubah salah satu dari jenis programer yang pertama menjadi yang kedua, kecuali mungkin untuk banyak pengalaman. Tetapi saya bahkan tidak yakin tentang itu.
Intinya adalah bahwa sebagian besar programmer akan berjuang untuk naik di atas yang biasa-biasa saja, beberapa akan berhasil menjadi OK (yang mana saya akan menempatkan diri dan mungkin 50% dari programmer profesional di (katakanlah) industri IB), dan sangat minoritas kecil akan sangat baik. Saya harus mengatakan saya belum pernah dalam karir panjang saya bertemu dengan salah satu yang luar biasa ini :-)
sumber
Saya pikir banyak orang mencoba solusi over-engineer. Mereka mengambil pendekatan "Adam & Hawa" ketika yang sedikit lebih praktis akan menyederhanakan banyak hal.
Kelas khusus tidak jahat, mereka adalah konsekuensi alami dari desain perangkat lunak yang sehat.
Banyak programmer, menurut saya, gagal memahami hal ini dan tidak ada buku yang saya ketahui yang membuat ini menjadi jelas.
Hal lain yang tentu saja membantu adalah TDD, yang memungkinkan Anda memahami "bagaimana" Anda akan menggunakan kelas dalam praktik dan dalam banyak kasus dapat menghemat hari, karena itu menunjukkan masalah / keterbatasan akhirnya di awal hari.
Terakhir, satu hal SANGAT penting yang akan saya cari jika saya adalah Anda adalah pola desain. Pola desain adalah cara orang lebih pintar daripada Anda atau saya memecahkan masalah pemrograman. Gagasan di balik pola, coba tebak ?, apakah itu tidak akan digunakan sebagai buku masak, resep yang baru saja Anda banting di sana, tetapi pikirkan dengan cermat dan pahami domain aplikasi Anda terlebih dahulu dan terutama.
Penggunaan pola yang bijak akan sangat mengurangi jumlah detail yang harus Anda kelola.
Perpustakaan pola desain yang bagus yang dirancang sesuai kebutuhan Anda, akan terbukti sangat berharga. Mari kita lihat contoh yang sangat sederhana hanya untuk meletakkan segala sesuatu dalam konteks:
bayangkan Anda memiliki formulir di mana, ketika tombol ditekan, formulir lain harus memperbarui sendiri. Ini adalah pola "pengamat" yang khas. Anda memiliki subjek dan beberapa pengamat, yang mendaftarkan diri mereka dengan subjek. Mengapa Anda perlu mengimplementasikan antarmuka? Anda bisa menambahkan metode, atau lebih baik lagi, menggunakan antarmuka untuk pengamat dan daftar umum untuk subjek. Sekarang Anda mendapatkan yang terbaik dari kedua dunia: kemandirian bagi pengamat dan tidak ada hal-hal yang luar biasa pada subjek.
Semoga ini masuk akal bagi Anda!
Andrea
sumber
Masalah kecepatan dev dan keterbacaan mungkin muncul ketika kita mengabaikan perlunya abstraksi. Dalam beberapa basis kode besar yang telah saya kerjakan, satu-satunya musuh yang paling umum adalah jumlah sekian kelas khusus yang memiliki fungsi yang sangat mirip yang menyebabkan kode menggembung. Jika kita mundur selangkah dan memahami persyaratan secara keseluruhan bukan sebagai bagian dari aplikasi, maka banyak abstraksi akan muncul di pikiran kita.
Beberapa langkah sederhana yang telah membantu saya
sumber