Ini adalah pertanyaan tentang cara bekerja dalam tim.
Baru-baru ini saya mengerjakan proyek pemrograman pertama saya yang lebih besar (~ 80 kelas, Jawa) dengan tim yang terdiri dari 6 orang, meskipun hanya 4 dari kami yang terus-menerus mengerjakan kode. Kami mendistribusikan pekerjaan yang harus dilakukan sejak awal dan pada suatu titik saya perlu memanggil metode yang belum diterapkan oleh salah satu rekan programer saya. Bagaimana cara yang disarankan untuk menangani ini?
Pilihan yang saya lihat, meskipun saya tidak terlalu suka:
Tuliskan sendiri
//TODO
dan tinjau kembali baris kode ini nanti untuk memeriksa apakah metode tersebut telah diterapkan sementara itu.Meminta anggota tim terkait untuk mengimplementasikannya sekarang .
Melempar runtimeException khusus dengan deskripsi yang jelas tentang apa yang belum diimplementasikan. (Setidaknya kita tidak perlu mencari waktu yang lama untuk mencari tahu apa yang hilang)
Menambahkan metode yang diperlukan ke kelas mereka dan menuliskannya
//TODO
di badan pesan, mungkin juga mengirimi mereka pesan cepat tentang perubahan itu. (Sekarang ini bukan masalah saya lagi, tetapi ini dapat menyebabkan konflik gabungan yang mengganggu jika mereka sedang mengerjakan metode ini sementara itu)Menentukan kelas atau antarmuka abstrak untuk semuanya sebelum benar-benar menulis kode yang berfungsi. (Tidak berfungsi dengan baik karena antarmuka ini sering diubah)
Jawaban:
Ini adalah pertanyaan yang menarik dan jawabannya mungkin lebih mudah dari yang Anda pikirkan.
Sederhananya, tulis tes yang memvalidasi asumsi Anda. Tidak masalah jika Anda melakukan implementasi atau sesama programmer
Jawaban panjangnya.
Salah satu opsi yang Anda daftarkan agak pasif dan mengharuskan Anda untuk kembali dan mengunjungi kembali kode (jika ada) cepat atau lambat.
Untuk mencapai tingkat pengujian yang cukup, saya sarankan Anda melihat dua disiplin ilmu.
TDD - pengembangan yang digerakkan oleh tes - ini akan memastikan Anda menggambarkan maksud Anda dan mengujinya secara memadai. Ini juga memberi Anda kemungkinan untuk mengejek atau memalsukan metode dan kelas (juga dengan menggunakan antarmuka) yang belum diimplementasikan. Kode dan tes masih akan dikompilasi dan memungkinkan Anda untuk menguji kode Anda sendiri dalam isolasi kode sesama programer Anda. (lihat: https://en.wikipedia.org/wiki/Test-driven_development )
ATDD - pengembangan yang didorong oleh tes penerimaan - ini akan membuat loop luar (sekitar loop TDD) yang membantu Anda menguji fitur secara keseluruhan. Tes-tes ini hanya akan berubah hijau ketika seluruh fitur diimplementasikan, sehingga memberi Anda indikator otomatis ketika rekan Anda menyelesaikan pekerjaan mereka. Cukup rapi jika Anda bertanya kepada saya.
Peringatan: Dalam kasus Anda, saya hanya akan menulis tes penerimaan sederhana dan tidak mencoba untuk membawa terlalu banyak sisi bisnis, karena terlalu banyak untuk memulai. Tulis tes integrasi sederhana yang menggabungkan semua bagian sistem yang dibutuhkan fitur. Hanya itu yang dibutuhkan
Ini akan memungkinkan Anda untuk meletakkan kode Anda dalam pipa Integrasi Berkelanjutan dan menghasilkan implementasi yang sangat andal.
Jika Anda ingin mendapatkan lebih jauh dalam topik itu periksa tautan berikut:
sumber
Minta bertopik.
Atau tulis sendiri. Either way, Anda dan rekan kerja Anda harus menyetujui antarmuka dan bagaimana mereka dimaksudkan untuk digunakan. Perjanjian itu perlu relatif dipadatkan sehingga Anda dapat berkembang melawan bertopik - belum lagi, sehingga Anda dapat membuat tiruan sendiri untuk pengujian unit Anda ...
sumber
Dalam situasi Anda, saya akan berbicara dengan anggota tim dengan tanggung jawab untuk fungsi itu. Mungkin mereka berada dalam posisi untuk memprioritaskan pengembangan fungsi itu sehingga Anda dapat mulai menggunakannya lebih cepat.
Saya akan menghindari opsi keempat Anda. Anda telah menulis semua kode Anda, dan seperti yang Anda katakan, Anda tidak lagi menganggapnya sebagai masalah Anda. Rekan Anda kemudian menulis implementasi fungsi tersebut, dan tidak lagi menganggapnya sebagai masalah mereka. Siapa yang benar-benar akan menguji bahwa kode yang Anda tulis bekerja dengan benar?
sumber