Saat menulis spesifikasi bergaya BDD, haruskah Anda menggunakan "harus", atau tidak? [Tutup]

12

Saya menyadari ini agak subyektif, tetapi saya tidak dapat menemukan kasus yang baik untuk satu atau yang lain:

itu "harus melakukan sesuatu"
itu "melakukan sesuatu"

Pendukung gaya harus menyebutkan bahwa itu memaksa Anda untuk benar-benar mempertanyakan apa yang ingin Anda capai, sementara para pencela menganggapnya hanya mubazir.

Apakah ada konsensus tentang ini, atau itu murni masalah gaya?

Julien
sumber

Jawaban:

3

Selamat Datang di Bahasa Inggris Hukum.

Menggunakan "harus" == "wajib" == kewajiban kontrak. Itu adalah legalisme. Itu tidak mengarah pada "pertanyaan". Ini menandai hukuman sebagai kewajiban kontrak formal.

Menggunakan "akan" == "akan" == ide bagus. Ini menandai kalimat sebagai fitur opsional.

Pertanyaan adalah bagian dari fasilitasi, organisasi, membantu, membangun kepercayaan. Bukan konsensus pilihan kata.

Menggunakan kata kerja telanjang tanpa pengubah membuat kalimat sedikit lebih sulit untuk disorot sebagai persyaratan formal. Dan dalam kasus kata kerja super-kompleks, bisa jadi sedikit tidak pasti untuk mengetahui bagaimana mengkonjugasikannya.

Kata kerja mudah seperti "memberi tahu" atau "membuat".

  • Sistem memberi tahu melalui email. (Kata kerja "untuk memberi tahu" dikonjugasikan "memberi tahu" untuk "sistem" - apa pun itu.)

  • Sistem akan memberi tahu melalui email. ("memberi tahu" menjadi "akan memberi tahu" - tidak ada konjugasi. Sangat sederhana.)

Frasa kata kerja yang sulit seperti "untuk masuk" atau frasa kata kerja khusus domain seperti "untuk mengekstrak, membersihkan, mengubah, menghapus duplikat dan memuat" atau kata benda seperti "prospek" yang telah di verbed. Frasa yang lebih panjang yang memiliki beberapa kata kerja yang terkubur di dalamnya sulit dikonjugasikan: konjugasi setiap kata kerja? Atau coba konjugasikan frasa panjang itu seolah hanya satu kata? Karena kata benda apa pun dapat diverbal dalam bahasa Inggris, sulit untuk mengetahui bagaimana mengkonjugasikan kata kerja yang dibuat-buat itu.

  • Sistem mengekstrak, membersihkan, mengubah, menghapus duplikat dan memuat ketika pengguna mengklik masuk. (Bahasa Inggris secara sepele kata kerja frase noun.) Atau apakah itu mengekstraksi, membersihkan, mengubah, menduplikasi dan memuat?

  • Sistem harus mengekstrak, membersihkan, mengubah, mendupuplikasi, dan memuat ketika pengguna mengklik masuk. (Frasa mengerikan dibiarkan utuh, tidak ada misteri tentang konjugasi kata kerja.)

["Apa?" Anda berkata, "ada kata benda yang bisa diverbal dalam bahasa Inggris?". Iya. Kata benda apa saja. Saya akan menghalanginya. Saya sering mengalami hambatan dalam hal itu. Bahkan spesifikasinya harus menghalanginya.]

S.Lott
sumber
5
Anda mengatakan bahwa menggunakan "harus" tidak mengarah ke "pertanyaan"; pengalaman saya memang demikian, terutama dengan orang yang baru melakukan pengujian / TDD. Ini juga memiliki efek membedakan hasil dari konteks dan peristiwa. "Dan pesanan tiba di gudang" tidak memberi tahu saya jika saya menyebabkan pesanan tiba dengan menekan tombol, atau jika itu harus terjadi secara otomatis, sedangkan "Dan pesanan harus tiba di gudang" memberitahu saya bahwa ini adalah sesuatu yang harus saya periksa. BDD adalah tentang percakapan, bukan hukum, bahasa Inggris (atau bahasa pilihan alami).
Lunivore
3
Saya menghargai bahwa Anda memiliki bahasa yang berbeda di luar sana. BDD dimulai di London ... dengan kata "harus";) OP bertanya apakah ada konsensus mengenai hal ini, dan sudah ada sejak 2004 -> dannorth.net/introducing-bdd
Lunivore
1
Gagasan bahwa Anda menggunakan "harus" dengan cara yang sah dan tidak dipertanyakan yang menurut saya tidak berguna. Kebalikan dari pola pikir penemuan yang disengaja yang dimulai dengan BDD. Saya menghabiskan hidup saya mencoba untuk membantu orang-orang yang memulai dengan "spec" dan kemudian merasa seperti mereka tidak dapat mempertanyakannya.
Lunivore
1
Jika Anda mengedit jawaban Anda sehingga mencakup sesuatu seperti, "Beberapa orang menyukai 'harus' karena itu mengarah pada pertanyaan" alih-alih apa yang dikatakannya saat ini, yaitu "tidak mengarah pada pertanyaan", saya akan sangat senang. Aspek pertanyaan BDD adalah salah satu yang paling penting, bagi saya, dan cara Anda mengutarakan ini menghilangkan aspek ini daripada memberikan konteks tambahan. Terima kasih atas percakapan ini, terlepas dari apakah Anda mengedit jawaban atau tidak; Saya sangat menghargai dialog penuh hormat.
Lunivore
11
The IETF Standar untuk menulis RFC secara khusus menyatakan bahwa 'HARUS' dan 'AKAN' yang 'DIBUTUHKAN', 'harus' adalah 'DIREKOMENDASIKAN', dan 'MAY' adalah 'OPTIONAL'.
oosterwal
4

Semata-mata masalah preferensi gaya. Itu bermuara pada bertanya, apakah Anda / klien Anda lebih suka untuk berpikir tentang sistem di masa sekarang atau masa depan?

Kualifikasi seperti "harus" atau "akan" menyiratkan tense masa depan, tetapi ini lunak dan cukup baik dibaca ketika berpikir dalam tegang saat ini. Kurangnya kualifikasi pasti menunjukkan present tense (yaitu saat ini juga).

Saya lebih suka menggunakan kualifikasi karena membaca lumayan bagus di kedua kasus, sedangkan kurangnya kualifikasi membaca agak aneh selama pengembangan ketika semuanya tegang di masa depan.

Bagaimanapun, jika Anda memutuskan untuk menggunakan kualifikasi, saya sangat merekomendasikan menggunakan "harus" daripada "harus" . "Harus" dapat diartikan sebagai opsional (terlepas dari pernyataan S.Lott yang bertentangan), tetapi "harus" sepenuhnya menghilangkan ambiguitas - jelas harus berarti "tidak opsional".


Dan karena saya belum bisa berkomentar (kendala karma), ini adalah respons terhadap S.Lott tentang Harus / Akan vs Akan / Akan: ada banyak ambiguitas tentang akan dan akan, bahkan dalam penulisan kontrak hukum. Lihat artikel ini untuk penjelasan .

Curtis Batt
sumber
"kurangnya kualifikasi membaca agak aneh selama pengembangan ketika semuanya tegang di masa depan" - baik, jika Anda melakukan TDD dan menulis tes tetapi belum menulis kode, tes Anda gagal sekarang. Sementara semantik "itu seharusnya berlalu di masa depan" akan berarti bahwa itu mungkin berlalu SEKARANG. Jadi present tense membawa lebih banyak kejelasan, setidaknya dalam kasus TDD: itu bukan janji tentang masa depan yang gagal, itu perilaku yang diharapkan SEKARANG yang tidak berlaku.
Mikhail Vasin
2

Saya mendukung penggunaan orang ketiga, present tense tanpa kualifikasi.

Argumen utama saya adalah: Tes adalah sebuah cerita.

Sebuah cerita terdiri dari adegan-adegan. Setiap adegan menggambarkan:

  • subyek
  • konteks
  • tindakan

Contoh:

DESCRIBE : getReceiptfungsi

CONTEXT : tanda terima ada

IT : mengembalikan tanda terima

Sama seperti cerita yang bagus, ujian yang baik mudah dibaca.

Sebuah cerita memberi tahu Anda apa yang dilakukan oleh program, misalnya

  • memulai transaksi
  • membuat permintaan
  • menormalkan respons
  • mengakhiri transaksi
  • mengembalikan tanda terima

Di sisi lain, menggunakan kualifikasi (tidak masalah apakah itu "harus" atau "harus") mengubah tes menjadi daftar pernyataan, misalnya:

  • harus memulai transaksi
  • harus membuat permintaan
  • harus menormalkan respons
  • harus mengakhiri transaksi
  • harus mengembalikan tanda terima

Tidak ada cerita yang berkelanjutan: pikiran Anda sedang mengevaluasi daftar pernyataan.

Ini subjektif, tetapi membaca bahasa alami (sebuah cerita) lebih sederhana daripada membaca daftar pernyataan.

Gajus
sumber
1

Menurut pendapat saya, Anda harus selalu menggunakan 'seharusnya'.

Penalaran - dengan BDD, ketika Anda menulis tes, perangkat lunak belum melakukan apa yang Anda inginkan, sehingga mengatakan "melakukan sesuatu" adalah salah. Itu "harus melakukan sesuatu", dan tes akan berlalu selama itu terus melakukan sesuatu itu.

sevenseacat
sumber
1
"Belum ada" tampaknya lebih merupakan alasan untuk menggunakan present tense daripada "seharusnya". BDD adalah untuk pengujian penerimaan dan jika suatu sistem belum melakukan sesuatu maka itu harus segera gagal. Tampaknya ada kesenjangan di antara BDD sejauh menggunakan "harus" atau tidak.
Brenden
1

Dari behaviour-driven.org berjudul "GettingTheWordsRight" :

Singkatnya, kata-kata yang kita gunakan untuk menggambarkan hal-hal memengaruhi cara kita (dan orang lain) memikirkan hal-hal itu. Ini bukan hanya pertanyaan sederhana menjadi picik tentang semantik, karena kata-kata tertentu membawa nuansa yang mempengaruhi bagaimana kita menafsirkan makna frase pada tingkat intelektual dan emosional. Bahasa kita kaya dengan kata-kata dan frasa deskriptif sehingga tampaknya masuk akal untuk menggunakan kata-kata yang akan dengan jelas menyampaikan maksud unsur-unsur yang ingin kita uraikan dalam kode.

Dalam kasus BDD, saya pribadi yang hampir selalu menggunakan kata harus ketika penamaan tes, karena penggunaannya menyiratkan bahwa sementara maksudnya adalah untuk tes untuk memberikan hasil tertentu, konsekuensi tak terduga lainnya mungkin timbul yang perlu ditangani dengan jika hasil tes dianggap valid. Anda mungkin dapat menggunakan kata-kata harapan atau keharusansama, namun kata-kata ini menyiratkan sudut pandang yang lebih penting sehingga nama tes bisa keliru berarti "tidak ada yang salah dengan tes, asumsikan pelaksanaannya kacau", sedangkan * harus "menyiratkan bahwa tes cenderung benar, namun mungkin perlu diperiksa lagi untuk kesalahan jika hasil tes sepertinya tidak bertambah. Saya suka ini, karena itu mempengaruhi pemikiran Anda sedemikian rupa sehingga Anda didorong untuk tetap berpikiran terbuka saat Anda membuat kode, yang sangat penting ketika Anda ingin menghindari macet ketika Anda mencoba men-debug kode Anda dan menemukan diri Anda mencari kesalahan di tempat yang salah karena asumsi.

Namun saya telah melihat penerapan kata 'religius' yang dekat dari kata itu harus gagal ketika telah diberlakukan sebagai awalan untuk nama tes, karena telah memaksa programmer yang terlibat untuk pergi melalui senam mental dan linguistik tertentu untuk memberikan nama uji yang bermakna, dan dalam kasus-kasus seperti itu berarti bahwa niat untuk mendapatkan kata-kata yang tepat tidak memenuhi harapannya, dan akibatnya tes-tes itu sendiri menjadi sulit untuk diuraikan sebagai hasilnya. Ketika situasi seperti ini muncul, saya biasanya akan menggunakan kata seharusnyadi sembarang tempat dalam nama metode pengujian, untuk memastikan nama tersebut menyampaikan metodenya secara sederhana dan jelas. Namun saya tidak akan memaksakan penggunaan kata tertentu jika kata lain sama-sama sesuai dalam konteks yang diberikan. Triknya adalah memilih kata-kata yang tidak memberikan ruang untuk argumen tentang apa yang diwakili sesuatu dalam kode, dan itu membuat Anda berpikir tentang hal-hal yang seharusnya dilakukan oleh kode Anda tanpa mengandalkan implikasi belaka.

S.Robins
sumber