Có thuật ngữ nào cho các trò chơi đúng sự thật, và các trò chơi giả mạo khác không? [đóng cửa]


23

Hãy nói rằng tôi đang cố gắng mô tả mã của mình trong một cuộc họp kỹ thuật.

Đầu tiên, tôi đặt boolean foobarthànhtrue

Thứ hai, tôi đặt boolean foobarthànhfalse

có vẻ hơi dài dòng Nếu foobarđược bật, tôi có thể nói,

Thứ ba, tôi chuyển đổi foobar

Thông qua hàm ý ở đây, bạn biết nó là một boolean. Vì vậy, tôi không thể:

Thứ tư, tôi thành thật foobar

Thứ năm, tôi làm sai lệch foobar

Điều này cũng sẽ thông qua hàm ý, nói với người nghe của tôi rằng chúng ta đang xử lý một biến boolean? Có thuật ngữ thích hợp cho việc này? Cảm ơn.


16
"Tôi đặt foobar thành true / false" không phải là từ đó, và rõ ràng đó là một bool. "Toggle" khá rõ ràng đối với người nghe, IMO.
Filip Milovanović

8
"Đầu tiên, tôi đặt foobar boolean thành true và, Thứ hai, tôi đặt foobar boolean thành false". Bạn không thể đặt nó sai ở vị trí đầu tiên sao? ;)
David Arno

2
Tôi luôn nghĩ rằng nó được gọi là lật, nhưng rõ ràng đó là thuật ngữ của bit , không phải là bools
e_i_pi

16
Tôi đã đọc sai lệch tương đương với việc tạo ra một sự giả mạo và không đặt giá trị thành sai.
CodeInChaos

6
Bạn có chắc chắn bạn sẽ mô tả mã của mình ở mức thấp như vậy không? Chắc chắn nếu ai đó muốn một mô tả cấp thấp như vậy, họ sẽ chỉ đọc mã. Tôi không nói rằng không bao giờ có một lý do để sử dụng thuật ngữ như vậy, nhưng tôi hy vọng nó sẽ hiếm.
Dukeling

Câu trả lời:


52
  • Việc đặt giá trị là true được thiết lập
  • Đặt nó thành false là xóa nó.
  • Thay đổi giá trị hiện tại là thay đổi nó.

Dĩ nhiên, bạn cũng có thể sử dụng "cài đặt thành đúng""đặt thành sai" .


10
Tôi không tương quan đặt giá trị thành sai khi xóa nó. Rõ ràng đối với tôi có nghĩa là: không đúng hoặc sai.
Pieter B

49
@PieterB: Vâng, nó phụ thuộc vào bối cảnh; nếu chúng ta đang nói về một cờ Boolean, thì "cài đặt" và "xóa" cờ là một thuật ngữ khá phổ biến.
Filip Milovanović

7
@ FilipMilovanović Trong ngữ cảnh của các biến, đặt biến có nghĩa là gán giá trị cho biến đã nói, trong ngữ cảnh của biến boolean, giá trị này có thể đúng hoặc sai. Thật kỳ lạ khi nói: này, đặt biến có nghĩa là gán giá trị cho nó ... ngoại trừ khi đó là biến boolean thì thực sự khi chúng ta đặt nó, chúng tôi có nghĩa là chúng ta gán giá trị: "true"
Pieter B

6
@PieterB Nếu nó có thể là "không đúng hoặc sai", thì đó không phải là một boolean nhị phân (đó là những gì hầu hết mọi người nghĩ về khi họ nghe từ này), nhưng là một điều đúng / sai / không xác định. Điều đó đang được nói, thuật ngữ tập hợp / rõ ràng đến từ cờ. Không phải tất cả các biến boolean đều là cờ, vì vậy thuật ngữ này không phù hợp cho nhiều trường hợp sử dụng.
Khối

7
@PieterB: Yeas - thật lạ khi nói "đặt biến bool" và mong mọi người hiểu nó có nghĩa là "đặt nó thành đúng"; nhưng nếu nó đại diện cho một cờ, thì "đặt cờ" là thứ thường được sử dụng và có nghĩa là đặt giá trị của bool đại diện cho cờ thành đúng (hoặc bit đại diện cho cờ thành 1). (PS Nhưng câu trả lời của Immibis không tính đến điều đó.)
Filip Milovanović

66

Nếu có thể, thay vì tập trung vào giá trị boolean, bạn nên cố gắng mô tả những gì nó đại diện. Vài ví dụ:

  • một dịch vụ? bắt đầu / dừng thay vì bắt đầu = đúng / sai
  • một hiệu ứng đặc biệt trong một công cụ trò chơi? bật / tắt
  • một tín hiệu điện? đặt / đặt lại
  • ...

Bằng cách này, bạn sẽ nói theo cách tự nhiên hơn. Và do đó, trong cuộc họp của bạn, thay vì "xác thực foobar sau đó làm sai lệch nó", bạn chỉ đơn giản là "bắt đầu foobar rồi dừng nó" (thực sự nếu foobar là một dịch vụ).

Khi bạn thực sự cần nói về một giá trị boolean, bạn có thể đi với "set / reset" hoặc "set thành true" và "set thành false". "Toggle" nghe khá hay trong mọi ngữ cảnh.

Và nếu bạn làm việc trong một cửa hàng boolean (bất cứ điều gì có thể có nghĩa) thì có lẽ bạn cần nhiều từ hơn những gì từ điển cung cấp. Trong trường hợp đó, sự thật và giả mạo chỉ đơn giản là một phần của microspeak của bạn .


16
Phải đồng ý ... boolean là cách triển khai mô hình những gì bạn THỰC SỰ đang nói về ... thay vào đó hãy nói về điều đó!
Có lẽ là

2
Tôi không thích nói về việc thiết lập một boolean là làm cho nó đúng. Bởi vì cách tôi làm việc với các biến chúng bắt đầu chưa được khởi tạo, có nghĩa là về cơ bản bạn chưa thể sử dụng chúng và hành động đặt biến (đúng hoặc sai) là khởi tạo. Để thiết lập luôn có nghĩa là đúng sẽ gây nhầm lẫn.
Pieter B

1
Ngoài ra, việc sử dụng thuật ngữ này cũng chuyển thành mã; Tất nhiên - không phải lúc nào cũng vậy - tốt hơn là sử dụng một enum hai giá trị thay vì kiểu boolean dựng sẵn; signal = HighVoltagehoặc signal = Activelà IMHO rõ ràng hơn nhiều signal = true.
Khối

Lưu ý rằng một thuộc tính / biến boolean được đặt tên đúng sẽ luôn tiết lộ ngay tên bạn nên sử dụng cho các giá trị. Hãy suy nghĩ về isStarted, isActive, isCaseSensitive, mockConnection, ... @PieterB: Tôi phần nào đồng ý với bạn. "Đặt boolean" vốn không có nghĩa là đặt nó thành đúng. Tuy nhiên, "Đặt isActivecờ" có thể được hiểu một cách hợp lý có nghĩa là đặt nó thành đúng.
Flater

1
@Cubic: Tôi không đồng ý. Mở rộng trong tương lai sang một bên, một enum nhị phân dường như không cần thiết. signal = truethực sự không rõ ràng, nhưng nếu bạn sẽ sử dụng signal = Activethì bạn cũng có thể sử dụng isSignalActive = true. Lưu ý rằng điều này áp dụng chủ yếu cho các mô tả rõ ràng là bổ sung lẫn nhau và chính xác. Hoạt động / Không hoạt động phù hợp với hóa đơn. Điện áp cao không, vì "không phải điện áp cao" có thể có nghĩa là "điện áp thấp", hoặc nó có thể có nghĩa là "điện áp thấp hoặc trung bình". Trong trường hợp sau, đối số boolean rõ ràng không áp dụng. Trước đây, nó làm.
Flater

2

Tôi thích "thiết lập" / "rõ ràng", nhưng hãy cẩn thận với sự mơ hồ trong cách diễn đạt của bạn. Như Filip chỉ ra , "đặt biến bool" có thể được dùng để viết một số giá trị cho biến. Nhưng "dựng cờ" thì rõ ràng hơn.


Thuật ngữ liên quan: biến số nguyên 0 / khác không thành giá trị 0/1 được gọi là "booleanizing" .

Nếu bạn thực sự sử dụng giá trị 0/1 làm số nguyên (thay vì là đúng / sai bool), bạn có thể muốn sử dụng từ đó. Nếu không, nó có thể sẽ chỉ xuất hiện nếu bạn nói về chi phí của các hoạt động mà trình biên dịch phải thực hiện. (Hoặc nếu bạn đang vectơ thủ công với SIMD so sánh để tạo ra các bit all-zero / all-one trong mỗi phần tử vector).

Trong C và C ++, a boolcó thể chuyển đổi hoàn toàn thành số nguyên dưới dạng 0 hoặc 1 và trên các triển khai bình thường boolđược lưu trữ dưới dạng giá trị một byte là 0 hoặc 1 (không chỉ là giá trị khác không). Cho phép hiệu quả a && b, nhưng trong thực tế, nhiều trình biên dịch C đã bỏ lỡ tối ưu hóa .


bool booleanize(int a) { return a; }   // C++

Hàm đó biên dịch thành nhiều hướng dẫn (không bao gồm ret) trên hầu hết các kiến ​​trúc. (MIPS là một ngoại lệ thú vị, có các hướng dẫn so sánh đăng ký thay vì đăng ký cờ / mã điều kiện riêng biệt). trên trình khám phá trình biên dịch Godbolt cho x86-64, MIPS và ARM , chúng ta có thể thấy phiên bản x86-64 là:

    test    edi, edi    # set flags according to   a & a
    setne   al
    ret                 # return value in AL, the low byte of RAX

Xin lỗi ví dụ này về những gì booleanizing có một chút lớn / lạc đề!


0

Tôi nghĩ "đặt Foobarthành đúng" và "đặt Foobarthành sai" là đơn giản và ngắn gọn. Tôi không tin có những từ riêng lẻ cho những cụm từ đó và khi bạn cần cả về kỹ thuật và chính xác, đôi khi tốt hơn là sẵn sàng nói một chút hơn là có nguy cơ gây nhầm lẫn cho khán giả của bạn.


-1

"Cài đặt" là cách chính xác để mô tả hành động gán giá trị cho biến. Nếu bạn muốn có được mô phạm về nó, bạn có thể gọi nó là "chuyển nhượng", nhưng "thiết lập" là rất phổ biến. Trong thực tế, đó là Java thành ngữ để viết setFoobar()(và getFoobar()) các phương thức để thực hiện phép gán. C # đưa nó đi một bước xa hơn với các định nghĩa thuộc tính getvà thuộc settính.

Liên quan đến quan điểm thứ hai của bạn về việc sử dụng "trueify" và "giả mạo" thành "thông qua hàm ý, hãy nói với người nghe của tôi rằng chúng ta đang xử lý một biến boolean", bạn đã nói với người nghe rằng biến của bạn là Boolean khi bạn nói:

Tôi đặt Foobarthànhtrue


1
'Tiêu chuẩn' trong Java cho các phương thức trả về các thuộc tính boolean thực sự làisFoobar()
JimmyJames

-1

Khẳng định hoặc Rút lại cũng có thể được sử dụng, thường xuyên nhất khi nói về mệnh đề chứ không phải là biến đơn giản, ví dụ như trong Prolog. Thông thường có các thuật ngữ khác nhau tùy thuộc vào những gì boolean thể hiện, thay vì một thuật ngữ chung cho tất cả các ngôn ngữ có giá trị boolean (đặt / xóa cờ hoặc bit, bật / tắt thiết bị hoặc chế độ, xác nhận / rút lại đề xuất, có thể nhiều hơn).


Tôi đồng ý với khẳng định , ngoại trừ điều đó đối với một lập trình viên có nghĩa là điều gì đó khác biệt (ví dụ: ném một ngoại lệ nếu biểu thức không đúng).
ChrisW

@ChrisW Tôi không biết bạn nghĩ những người lập trình Prolog là gì nếu không phải là lập trình viên, nhưng nó được sử dụng trong Prolog năm 1972, vì vậy, đó là macro C đã thay đổi ý nghĩa hiện có.
Pete Kirkham

-1

Để thay đổi giá trị của boolean từ truesang falsehoặc ngược lại được gọi là phủ định .

Để đặt giá trị của boolean thành falseđược coi là làm sai lệch giá trị boolean. Tôi sẽ hiểu bạn nếu bạn nói "sự thật", tuy nhiên, điều này không đúng. Tôi không chắc động từ là gì để làm một cái gì đó true, vì vậy nó có thể đúng.

Tôi sẽ đợi một người có câu trả lời tốt hơn xuất hiện trước khi bạn bắt đầu sử dụng "sự thật" willy-nilly.


1
Vấn đề ở đây là bạn có thể sử dụng các thuật ngữ phủ định , làm sai lệch , nhưng tôi sẽ sử dụng chuyển đổiđặt lại / xóa tương ứng. Trong thực tế cho đến khi đọc câu hỏi này, tôi sẽ không bao giờ gặp phải giả mạo . Có lẽ tôi chỉ già đi và tôi không cập nhật với các điều khoản hợp thời trang năm nay :)
David Arno

7
'falsify' có nghĩa trong ngôn ngữ tiếng Anh không thực sự phù hợp với cách sử dụng của bạn cho các biến boolean; Nếu bạn nói với tôi rằng bạn đang "làm sai lệch" các biến của mình, tôi có thể hiểu những gì bạn đang cố nói, nhưng trước tiên tôi sẽ nói rằng khi bạn cố nói với tôi rằng bạn đang nói dối về những giá trị mà họ có.
Khối

1
IMO ngược lại với "giả mạo" sẽ là "khẳng định", bằng tiếng Anh, nhưng điều đó ("khẳng định") mang lại ấn tượng sai cho một lập trình viên.
ChrisW

-3

Một boolean là một tương đương với một SPST (đơn cực, ném duy nhất) công tắc điện: một lượt nó trên hoặc tắt .


2
"Bật donebiến" hoặc " errorBiến bị tắt" cả hai đều tắt âm thanh, ít nhất là với tôi. Các lựa chọn thay thế được đề xuất bởi các câu trả lời khác có vẻ phổ biến hơn - "Đặt donebiến / bool / flag [thành true]" hoặc " errorCờ bị xóa".
Sebi
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.