Dalam keadilan, dia menambahkan "Bersenang-senang" ke klaim itu.
Sampai hari ini, saya cenderung memulai dengan memodelkan sistem menggunakan pendekatan "kata benda dan kata kerja", tetapi saya telah menemukan selama bertahun-tahun bahwa TDD mengajarkan kita bahwa pendekatan ini menarik fokus Anda ke hal yang salah. Dalam hal ini, blogger benar. Namun, saya tidak yakin bahwa itu adalah pendekatan yang salah, daripada cara pikiran kita bekerja.
Jika Anda ingin mencoba sedikit tantangan di sini, berhenti membaca dan coba model permainan Monopoli, menggunakan bahasa Inggris, lalu kembali ke sini.
Saya curiga godaannya adalah untuk segera melihat benda-benda yang sering berinteraksi dengan kita - papan, ruang, kartu, dadu, potongan-potongan - tetapi itu bukanlah tempat di mana sebagian besar logika mengalir. Sebagian besar benda-benda ini sepenuhnya bodoh. Data, jika Anda mau.
Tapi begitu Anda mulai menulis tes, Anda menyadari objek mana yang sejauh ini paling penting dalam permainan apa pun: aturan.
Ingat kertas kecil yang pernah Anda baca saat pertama kali mendapatkan permainan dan tidak berinteraksi lagi sampai ada perselisihan? Versi terkomputerisasi tidak beroperasi seperti itu. Setiap hal yang pemain coba lakukan, komputer akan berkonsultasi dengan aturan dan melihat apakah mereka diizinkan melakukannya atau tidak.
Ketika Anda memikirkannya, Anda melakukan hal yang sama tetapi karena butuh waktu untuk membaca aturan berbasis kertas dan otak Anda memiliki sistem caching yang masuk akal, Anda berkonsultasi dengan aturan di kepala Anda. Sebuah komputer mungkin akan merasa mudah untuk membaca kembali peraturan - kecuali jika disimpan dalam basis data, dalam hal ini mungkin akan menyimpannya juga.
Dan inilah mengapa TDD sangat populer untuk desain mengemudi sebenarnya. Karena itu cenderung mendorong proses berpikir Anda dengan cepat ke tempat yang tepat:
Ketika saya berpikir bahwa saya akan menulis beberapa tes untuk permainan Monopoli saya. Saya mungkin melihat set saya dan mencoba menemukan objek. Jadi, kami punya potongan-potongan ini. Saya akan menulis beberapa tes untuk itu.
Mungkin saya akan memiliki kelas dasar MonopolyPiece dan setiap jenis karya akan berasal dari mereka. Saya akan mulai dengan DogPiece. Tes pertama ... ahh. Sebenarnya tidak ada logika di sini. Ya, masing-masing bagian akan ditarik secara berbeda, jadi saya mungkin perlu DogDrawer, tapi sementara saya menyempurnakan permainan, saya hanya ingin menulis "D" di layar. Saya akan membumbui UI pada akhirnya.
Mari kita cari logika yang sebenarnya untuk diuji. Ada banyak rumah dan hotel ini, tetapi mereka tidak perlu tes. Uang, tidak. Kartu properti, tidak. Dan seterusnya. Bahkan papan tidak lain adalah mesin negara, itu tidak mengandung logika apa pun.
Anda akan segera menemukan ada tiga hal yang tersisa di tangan Anda. Kartu Peluang dan Dada Komunitas, sepasang dadu dan seperangkat aturan. Ini akan menjadi bagian penting untuk dirancang dan diuji.
Apakah Anda melihat itu datang ketika Anda menulis kata benda dan kata kerja?
Faktanya, ada contoh yang bagus dalam Pola dan Praktek Prinsip Agile Robert Martin di mana mereka mencoba menyempurnakan aplikasi Kartu Skor Bowling menggunakan TDD dan menemukan segala macam hal yang mereka pikir adalah kelas yang jelas tidak perlu diganggu.