Khi viết thông số kỹ thuật theo phong cách BDD, bạn có nên sử dụng nên nên hay không? [đóng cửa]


12

Tôi nhận ra điều này hơi chủ quan, nhưng tôi không thể tìm thấy một trường hợp tốt cho người này hay người kia:

nó "nên làm một cái gì đó"
nó "làm một cái gì đó"

Những người đề xuất phong cách nên đề cập rằng nó buộc bạn phải thực sự đặt câu hỏi về những gì bạn đang cố gắng đạt được, trong khi những kẻ gièm pha thấy nó chỉ là dư thừa.

Có một sự đồng thuận về điều này, hay nó hoàn toàn là một vấn đề của phong cách?

Câu trả lời:


3

Chào mừng bạn đến với tiếng Anh pháp lý.

Sử dụng "nên" == "sẽ" == nghĩa vụ hợp đồng. Đó là một chủ nghĩa hợp pháp. Nó không dẫn đến "đặt câu hỏi". Nó đánh dấu bản án là một nghĩa vụ hợp đồng chính thức.

Sử dụng "would" == "will" == ý tưởng hay. Nó đánh dấu câu là một tính năng tùy chọn.

Đặt câu hỏi là một phần của việc tạo điều kiện, tổ chức, giúp đỡ, xây dựng niềm tin. Không phải là một sự lựa chọn từ.

Sử dụng một động từ trần mà không có từ bổ nghĩa làm cho câu khó hơn một chút để làm nổi bật như một yêu cầu chính thức. Và trong trường hợp động từ siêu phức tạp, nó có thể có một chút xí ngầu để tìm ra cách kết hợp nó.

Dễ dàng - các động từ như "thông báo" hoặc "tạo".

  • Hệ thống thông báo qua email. (Động từ "thông báo" được kết hợp "thông báo" cho "hệ thống" - bất kể đó là gì.)

  • Hệ thống sẽ thông báo qua email. ("để thông báo" trở thành "sẽ thông báo" - không chia động từ. Rất đơn giản.)

Hard - cụm động từ như "để đăng nhập" hoặc cụm động từ dành riêng cho tên miền như "để trích xuất, làm sạch, chuyển đổi, sao chép và tải" hoặc một danh từ như "khách hàng tiềm năng" đã được xác minh. Cụm từ dài hơn có một số động từ chôn trong đó thật khó để chia động từ: liên hợp mỗi động từ? Hoặc cố gắng chia động từ dài như thể đó là một từ đơn? Vì bất kỳ danh từ nào cũng có thể được xác minh bằng tiếng Anh, thật khó để biết cách kết hợp các động từ tạo thành đó.

  • Hệ thống trích xuất, làm sạch, biến đổi, sao chép và tải khi người dùng nhấp vào. (Tiếng Anh động từ tầm thường bất kỳ cụm danh từ.) Hoặc nó là trích xuất, làm sạch, biến đổi, lặp lại và tải?

  • Hệ thống nên trích xuất, làm sạch, biến đổi, sao chép và tải khi người dùng nhấp vào. (Cụm từ gớm ghiếc được giữ nguyên, không có gì bí ẩn về cách chia động từ.)

["Gì?" bạn nói, "bất kỳ danh từ nào có thể được xác minh bằng tiếng Anh?". Đúng. Bất kỳ danh từ. Tôi sẽ ném đá về điều đó. Tôi thường xuyên bị ném đá về điều đó. Ngay cả các thông số kỹ thuật cũng nên khắc phục điều đó.]


5
Bạn nói rằng sử dụng "nên" không dẫn đến "đặt câu hỏi"; kinh nghiệm của tôi là nó, đặc biệt là với những người mới thử nghiệm / TDD. Nó cũng có tác dụng phân biệt kết quả từ bối cảnh và sự kiện. "Và đơn hàng đến kho" không cho tôi biết nếu tôi khiến đơn hàng đến bằng cách nhấn nút hoặc nếu nó sẽ tự động xảy ra, trong khi "Và đơn hàng sẽ đến kho" cho tôi biết điều này là một cái gì đó tôi nên kiểm tra. BDD là về đàm thoại, không hợp pháp, tiếng Anh (hoặc ngôn ngữ tự nhiên lựa chọn).
Lunivore

3
Tôi đánh giá cao rằng bạn có ngôn ngữ khác nhau ngoài kia. BDD bắt đầu ở Luân Đôn mặc dù ... với từ "nên";) OP đã hỏi liệu có sự đồng thuận về vấn đề này hay không, và đã có từ năm 2004 -> dannorth.net/int sinh
bdd

1
Đó là ý tưởng mà bạn sử dụng "nên" theo cách hợp pháp, không nghi vấn mà tôi không thấy hữu ích. Kiểu trái ngược với lối tư duy khám phá có chủ ý mà BDD bắt đầu. Tôi dành cả đời mình để cố gắng giúp đỡ những người bắt đầu với "spec" và sau đó cảm thấy như họ không thể đặt câu hỏi.
Lunivore

1
Nếu bạn chỉnh sửa câu trả lời của mình để nó bao gồm một câu như "Một số người thích" nên "vì nó dẫn đến việc đặt câu hỏi" thay vì những gì nó hiện đang nói, đó là "nó không dẫn đến việc đặt câu hỏi", tôi sẽ rất vui mừng. Đối với tôi, khía cạnh đặt câu hỏi của BDD là một trong những điều quan trọng nhất và cách bạn thực hiện theo cách này sẽ loại bỏ khía cạnh này thay vì cung cấp thêm ngữ cảnh. Cảm ơn bạn về cuộc trò chuyện này, bất kể bạn có chỉnh sửa câu trả lời hay không; Tôi thực sự đánh giá cao cuộc đối thoại tôn trọng.
Lunivore

10
Các tiêu chuẩn IETF để viết RFC đặc biệt khẳng định rằng 'phải' và 'SẼ' được 'YÊU CẦU', 'nên' là 'ĐƯỢC KHUYẾN', và 'THÁNG' là 'BẮT BUỘC'.
oosterwal

4

Hoàn toàn là một vấn đề của sở thích phong cách. Nó sôi sục để hỏi, bạn / khách hàng của bạn thích suy nghĩ về hệ thống trong thì hiện tại hay tương lai?

Các vòng loại như "nên" hoặc "sẽ" ngụ ý thì tương lai, nhưng điều này là mềm mại và đọc đủ tốt khi suy nghĩ ở thì hiện tại. Thiếu một vòng loại chắc chắn chỉ ra thì hiện tại (tức là ngay lúc này).

Tôi thích sử dụng một vòng loại vì nó đọc khá tốt trong cả hai trường hợp, trong khi thiếu vòng loại đọc một chút kỳ lạ trong quá trình phát triển khi mọi thứ đều căng thẳng trong tương lai.

Trong mọi trường hợp, nếu bạn quyết định sử dụng vòng loại, tôi thực sự khuyên bạn nên sử dụng "phải" thay vì "nên" . "Nên" có thể được hiểu là tùy chọn (mặc dù khẳng định ngược lại của S.Lott), nhưng "phải" loại bỏ hoàn toàn bất kỳ sự mơ hồ nào - phải có nghĩa rõ ràng là "không bắt buộc".


Và bởi vì tôi chưa thể bình luận (hạn chế nghiệp), đây là câu trả lời cho S.Lott về Should / Shall vs. Will / Will: có rất nhiều sự mơ hồ về việc sẽ và sẽ, ngay cả trong văn bản hợp đồng pháp lý. Xem bài viết này để được giải thích .


1

Theo tôi, bạn nên luôn luôn sử dụng 'nên'.

Lý do - với BDD, khi bạn viết bài kiểm tra, phần mềm chưa làm những gì bạn muốn nó làm, vì vậy nói rằng "làm điều gì đó" là sai. Nó "nên làm một cái gì đó", và các bài kiểm tra sẽ vượt qua miễn là nó tiếp tục làm điều gì đó.


"Chưa tồn tại" dường như là lý do nhiều hơn để sử dụng thì hiện tại thay vì "nên". BDD là để thử nghiệm chấp nhận và nếu một hệ thống chưa làm điều gì đó thì nó phải thất bại ngay lập tức. Dường như có sự phân chia giữa các BDD cho đến khi sử dụng "nên" hay không.
Brenden

1

Tôi ủng hộ việc sử dụng người thứ ba, hiện tại không có vòng loại.

Lập luận chính của tôi là: Một bài kiểm tra là một câu chuyện.

Một câu chuyện bao gồm các cảnh. Mỗi cảnh mô tả:

  • môn học
  • bối cảnh
  • hoạt động

Thí dụ:

MÔ TẢ : getReceiptchức năng

TIẾP THEO : biên nhận tồn tại

IT : trả lại biên lai

Giống như một câu chuyện hay, một bài kiểm tra tốt rất dễ đọc.

Một câu chuyện cho bạn biết những gì chương trình làm, ví dụ

  • bắt đầu một giao dịch
  • đưa ra yêu cầu
  • bình thường hóa phản ứng
  • kết thúc giao dịch
  • trả lại biên lai

Mặt khác, sử dụng vòng loại (không quan trọng nếu đó là "nên" hoặc "phải") biến bài kiểm tra thành một danh sách các xác nhận, ví dụ:

  • nên bắt đầu một giao dịch
  • nên đưa ra yêu cầu
  • nên bình thường hóa phản ứng
  • nên kết thúc giao dịch
  • nên trả lại biên lai

Không có câu chuyện liên tục: tâm trí của bạn đang đánh giá một danh sách các xác nhận.

Đây là chủ quan, nhưng đọc ngôn ngữ tự nhiên (một câu chuyện) đơn giản hơn đọc một danh sách các xác nhận.


1

Từ behaviour-driven.org với tựa đề "GettingTheWordsRight" :

Nói tóm lại, những từ mà chúng ta sử dụng để mô tả những thứ ảnh hưởng đến cách mà chúng ta (và những người khác) nghĩ về những điều đó. Đây không chỉ là một câu hỏi đơn giản về sự nhỏ nhặt về ngữ nghĩa, vì một số từ nhất định mang theo sắc thái ảnh hưởng đến cách chúng ta diễn giải ý nghĩa của cụm từ ở cả cấp độ trí tuệ và cảm xúc. Ngôn ngữ của chúng tôi rất phong phú với các từ và cụm từ mô tả nên có vẻ hợp lý khi sử dụng các từ sẽ truyền đạt rõ ràng ý định của các yếu tố mà chúng tôi muốn mô tả trong mã.

Trong trường hợp của BDD, cá nhân tôi hầu như luôn sử dụng từ này khi đặt tên cho các bài kiểm tra, bởi vì cách sử dụng của nó ngụ ý rằng trong khi ý định là một bài kiểm tra để cung cấp một kết quả nhất định, những hậu quả không mong muốn khác có thể sẽ được xử lý với nếu một kết quả kiểm tra sẽ được coi là hợp lệ. Bạn có thể có thể sử dụng các từ mong đợi hoặc phảitương tự, tuy nhiên, những từ này ngụ ý một quan điểm cấp bách hơn sao cho tên của bài kiểm tra có thể bị nhầm thành "không có gì sai với bài kiểm tra, giả sử việc thực hiện bị rối", trong khi * nên "ngụ ý rằng bài kiểm tra có khả năng đúng, nhưng có thể cần phải kiểm tra lại lỗi nếu kết quả kiểm tra dường như không được thêm vào. Tôi thích điều này, vì nó ảnh hưởng đến suy nghĩ của bạn đến nỗi bạn được khuyến khích giữ một tâm trí cởi mở khi bạn viết mã, điều này rất quan trọng khi bạn muốn tránh bị mắc kẹt khi bạn cố gắng gỡ lỗi mã của mình và thấy mình đang tìm sai chỗ vì một giả định.

Tuy nhiên, tôi đã thấy ứng dụng gần như 'tôn giáo' của từ này không thành công khi nó được thi hành như một tiền tố cho các tên kiểm tra, vì nó đã buộc các lập trình viên tham gia phải trải qua một số môn thể dục ngôn ngữ và tinh thần để cung cấp một tên kiểm tra là có ý nghĩa, và trong những trường hợp như vậy, điều đó có nghĩa là ý định để có được những từ đúng không đáp ứng mong đợi của nó và kết quả là các bài kiểm tra trở nên khó giải mã. Khi loại tình huống này tăng lên, tôi thường sử dụng từ nêntại bất kỳ vị trí nào trong tên phương thức thử nghiệm, để đảm bảo tên truyền tải phương thức của nó một cách đơn giản và rõ ràng. Tuy nhiên, tôi chắc chắn sẽ không thực thi một cách sử dụng từ cụ thể nếu các từ khác phù hợp như nhau trong một ngữ cảnh cụ thể. Tuy nhiên, mẹo là chọn những từ không có chỗ để tranh luận về những gì đại diện cho mã và điều đó khiến bạn phải suy nghĩ về những điều mà mã của bạn phải làm mà không cần dựa vào hàm ý đơn thuần.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.