มีคำศัพท์ที่ใช้สำหรับ "ของจริง" ไอเอ็นจี "ของปลอม" และเปลี่ยนเป็นบูลีนหรือไม่? [ปิด]


23

ให้บอกว่าฉันพยายามอธิบายรหัสของฉันในการประชุมทางเทคนิค

ก่อนอื่นฉันตั้งค่าบูลีนfoobarเป็นtrue

และ

ประการที่สองฉันตั้งค่าบูลีนfoobarเป็นfalse

ดูเหมือนคำพูดเล็กน้อย ถ้าfoobarถูกเปิดฉันอาจพูดได้ว่า

ประการที่สามฉันสลับ foobar

ผ่านความหมายที่นี่คุณรู้ว่ามันเป็นบูลีน ดังนั้นฉันไม่ควรจะสามารถ:

ประการที่สี่ฉันTruthify foobar

และ

ประการที่ห้าฉันปลอมแปลง foobar

ซึ่งจะบอกเป็นนัยถึงผู้ฟังของฉันว่าเรากำลังเผชิญกับตัวแปรบูลีนหรือไม่ มีคำศัพท์ที่เหมาะสมสำหรับสิ่งนี้หรือไม่? ขอบคุณ


16
"ฉันตั้งค่า foobar เป็นจริง / เท็จ" ไม่ใช่คำที่ไม่ดีและเป็นที่ชัดเจนว่าเป็นบูล "Toggle" ค่อนข้างชัดเจนสำหรับผู้ฟัง IMO
Filip Milovanović

8
"ก่อนอื่นฉันตั้งค่า foobar แบบบูลีนเป็นจริงและอันดับสองฉันตั้งค่า foobar แบบบูลเป็นเท็จ" คุณไม่สามารถตั้งค่าเป็นเท็จตั้งแต่แรกได้หรือไม่ ;)
David Arno

2
ฉันมักจะคิดว่ามันถูกเรียกว่าพลิก แต่เห็นได้ชัดว่านั่นเป็นคำศัพท์สำหรับบิตไม่ใช่ bools
e_i_pi

16
ฉันอ่านเท็จว่าเทียบเท่ากับการสร้างการปลอมแปลงและไม่ได้ตั้งค่าเป็นเท็จ
CodesInChaos

6
คุณแน่ใจหรือว่าคุณต้องการอธิบายรหัสของคุณในระดับต่ำ แน่นอนว่าถ้ามีคนต้องการคำอธิบายระดับต่ำเช่นนั้นพวกเขาแค่อ่านรหัส ฉันไม่ได้บอกว่าไม่มีเหตุผลที่จะใช้คำศัพท์ดังกล่าว แต่ฉันคาดว่ามันจะหายาก
Dukeling

คำตอบ:


52
  • การตั้งค่าให้ที่แท้จริงคือการตั้งค่ามัน
  • การตั้งค่าเป็นเท็จกำลังล้างค่า
  • การเปลี่ยนค่าปัจจุบันคือการสลับมัน

นอกจากนี้คุณยังสามารถใช้"ตั้งค่าเป็นจริง"และ"ตั้งค่าเป็นเท็จ"ได้


10
ฉันไม่สัมพันธ์การตั้งค่าเป็นเท็จเป็นการล้างค่า การล้างสำหรับฉันหมายถึง: ไม่จริงหรือเท็จ
Pieter B

49
@PieterB: ก็ขึ้นอยู่กับบริบท หากเรากำลังพูดถึงธงบูลีนดังนั้น "ตั้งค่า" และ "ล้าง" ธงนั้นเป็นคำศัพท์ทั่วไป
Filip Milovanović

7
@ FilipMilovanovićในบริบทของตัวแปรการตั้งค่าตัวแปรหมายถึงการกำหนดค่าให้กับตัวแปรดังกล่าวในบริบทของตัวแปรบูลีนค่านี้อาจเป็นจริงหรือเท็จ มันจะแปลกที่จะพูดว่า: เฮ้การตั้งค่าตัวแปรหมายถึงการกำหนดค่าให้กับมัน ... ยกเว้นเมื่อมันเป็นตัวแปรบูลีนจริง ๆ แล้วเมื่อเราตั้งค่าเราหมายความว่าเรากำหนดค่า: "จริง"
Pieter B

6
@PieterB ถ้ามันเป็น "ไม่จริงหรือเท็จ" ก็ไม่ใช่บูลีนไบนารี (ซึ่งเป็นสิ่งที่คนส่วนใหญ่คิดเมื่อได้ยินคำ) แต่เป็นสิ่งที่ไม่จริง / เท็จ / ไม่แน่นอน ที่ถูกกล่าวคำศัพท์ชุด / ล้างมาจากธง ไม่ใช่ตัวแปรบูลีนทั้งหมดที่เป็นแฟล็กดังนั้นคำศัพท์จึงไม่เหมาะสมสำหรับการใช้งานหลายกรณี
Cubic

7
@PieterB: ใช่ - เป็นเรื่องแปลกที่จะพูดว่า "ตั้งค่าตัวแปรบูล" และคาดหวังให้ทุกคนเข้าใจว่าหมายถึง "ตั้งค่าเป็นจริง"; แต่ถ้ามันหมายถึงธงแล้ว "ตั้งค่าสถานะ" เป็นสิ่งที่ใช้กันทั่วไปและหมายถึงการตั้งค่าของบูลที่เป็นตัวแทนของธงที่เป็นจริง (หรือบิตที่เป็นตัวแทนของธงเป็น 1) (PS แต่คำตอบโดย immibis ไม่ได้ใช้เวลาที่เข้าบัญชี.)
ฆาMilovanović

66

ถ้าเป็นไปได้แทนที่จะมุ่งเน้นที่ค่าบูลีนคุณควรพยายามอธิบายว่ามันหมายถึงอะไร ตัวอย่างบางส่วน:

  • บริการหรือไม่ start / stop แทนที่จะเป็น start = true / false
  • เทคนิคพิเศษในเอ็นจิ้นเกมหรือไม่? เปิดปิด
  • สัญญาณไฟฟ้า ชุด / การตั้งค่า
  • ...

วิธีนี้คุณจะได้พูดในแง่ที่เป็นธรรมชาติมากขึ้น และในการประชุมของคุณแทนที่จะเป็น "การทำให้เป็นจริงแล้วทำให้เป็นเท็จ" คุณก็แค่ "เริ่ม foobar แล้วหยุดมัน" (ถ้า foobar เป็นบริการจริง ๆ )

เมื่อคุณต้องการพูดคุยเกี่ยวกับค่าบูลีนคุณสามารถไปด้วย "set / reset" หรือ "set to true" และ "set to false" "สลับ" ฟังดูค่อนข้างดีในทุกบริบท

และถ้าคุณทำงานในร้านบูลีน (สิ่งที่อาจหมายถึง) คุณอาจต้องการคำมากกว่าคำในพจนานุกรม ในกรณีที่ truthify และปลอมแปลงเป็นเพียงบางส่วนของคุณmicrospeak


16
ต้องยอมรับ ... บูลีนคือการใช้งานซึ่งเป็นแบบอย่างสิ่งที่คุณกำลังพูดถึง ... ดังนั้นพูดถึงเรื่องนั้นแทน!
__Factor

2
ฉันไม่ชอบพูดถึงการตั้งค่าบูลีนว่าทำให้เป็นจริง เนื่องจากวิธีที่ฉันทำงานกับตัวแปรที่พวกเขาเริ่มโดยไม่กำหนดค่าเริ่มต้นหมายความว่าคุณยังไม่สามารถใช้ตัวแปรเหล่านั้นได้และการตั้งค่าตัวแปร (จริงหรือเท็จ) เป็นการเริ่มต้น สำหรับการตั้งค่าหมายถึงความจริงเสมอจะทำให้เกิดความสับสน
Pieter B

1
นอกจากนี้การใช้คำศัพท์นี้แปลเป็นรหัสเช่นกัน มันมักจะไม่แน่นอนเสมอไปดีกว่าถ้าใช้สองค่า enum แทนที่จะเป็นชนิดบูลในตัว signal = HighVoltageหรือsignal = Activeเป็น IMHO signal = trueชัดเจนมากขึ้นกว่า
Cubic

โปรดทราบว่าคุณสมบัติบูลีน / ตัวแปรที่ตั้งชื่ออย่างถูกต้องจะเปิดเผยชื่อที่คุณควรใช้สำหรับค่าทันที คิดว่าisStarted, isActive, isCaseSensitive, mockConnection... @PieterB: ผมบางส่วนเห็นด้วยกับคุณ "ตั้งค่าบูลีน" ไม่ได้หมายถึงการตั้งค่าเป็นจริง อย่างไรก็ตาม "ตั้งค่าisActiveสถานะ" สามารถตีความได้อย่างสมเหตุสมผลว่าหมายถึงตั้งค่าเป็นจริง
Flater

1
@Cubic: ฉันไม่เห็นด้วย การขยายตัวออกไปในอนาคตดูเหมือนว่าไม่จำเป็น signal = trueย่อมไม่ชัดเจน แต่ถ้าคุณกำลังจะใช้แล้วคุณอาจรวมทั้งการใช้งานsignal = Active isSignalActive = trueโปรดทราบว่าสิ่งนี้นำไปใช้กับผู้ให้คำอธิบายที่ชัดเจนและร่วมกันอย่างสมบูรณ์ ใช้งาน / ไม่ใช้งานเหมาะกับการเรียกเก็บเงิน HighVoltage ไม่ได้เนื่องจาก "ไม่ใช่แรงดันไฟฟ้าสูง" อาจหมายถึง "แรงดันไฟฟ้าต่ำ" หรืออาจหมายถึง "แรงดันไฟฟ้าต่ำหรือปานกลาง" ในกรณีหลังอาร์กิวเมนต์บูลีนจะไม่สามารถใช้งานได้ ในสมัยก่อนก็ทำได้
Flater

2

ฉันชอบ "ชุด" / "ชัดเจน" แต่ระวังความกำกวมในการใช้ถ้อยคำของคุณ ดังที่ฟิลิปส์ชี้ให้เห็น "ตั้งค่าตัวแปรบูล" สามารถใช้เพื่อหมายถึงการเขียนค่าลงในตัวแปร แต่ "การตั้งค่าสถานะ" นั้นชัดเจนยิ่งขึ้น


คำศัพท์ที่เกี่ยวข้อง: เปลี่ยน 0 / ไม่ใช่ศูนย์จำนวนเต็มเป็นค่า 0/1 เรียกว่า "booleanizing"

หากคุณใช้ค่า 0/1 เป็นจำนวนเต็ม (แทนที่จะเป็นจริง / เท็จbool) คุณอาจต้องการใช้คำนั้น มิฉะนั้นจะเกิดขึ้นได้ก็ต่อเมื่อคุณกำลังพูดถึงค่าใช้จ่ายในการดำเนินการที่คอมไพเลอร์ต้องดำเนินการ (หรือถ้าคุณกำลัง vectorizing ด้วยตนเองเปรียบเทียบ SIMD เพื่อสร้างบิตทั้งหมด / ศูนย์ - all-one ในแต่ละองค์ประกอบเวกเตอร์)

ใน C และ C ++, a boolสามารถแปลงกลับเป็นจำนวนเต็มเป็น 0 หรือ 1 โดยปริยายและในการใช้งานปกติboolจะถูกเก็บไว้เป็นค่าหนึ่งไบต์ที่เป็น 0 หรือ 1 (ไม่ใช่แค่ค่าที่ไม่ใช่ศูนย์) ช่วยให้มีประสิทธิภาพa && bแต่ในทางปฏิบัติคอมไพเลอร์ C จำนวนมากพลาดการปรับแต่ง


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

ฟังก์ชันดังกล่าวรวบรวมคำสั่งหลายคำสั่ง (ไม่รวมถึงret) ในสถาปัตยกรรมส่วนใหญ่ (MIPS เป็นข้อยกเว้นที่น่าสนใจโดยมีคำแนะนำเปรียบเทียบลงทะเบียนแทนการลงทะเบียนสถานะ / รหัสเงื่อนไขแยกต่างหาก) บนตัวรวบรวมคอมไพเลอร์ Godbolt สำหรับ x86-64, MIPS และนิ้วหัวแม่มือ ARMเราจะเห็นเวอร์ชั่น x86-64 คือ:

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

ขออภัยตัวอย่างของสิ่งบูลีนที่มีขนาดใหญ่ / นอกหัวข้อเล็กน้อย!


0

ฉันคิดว่า "ตั้งค่าFoobarเป็นจริง" และ "ตั้งค่าFoobarเป็นเท็จ" ตรงไปตรงมาและรวบรัด ฉันไม่เชื่อว่ามีคำเฉพาะสำหรับวลีเหล่านั้นและเมื่อคุณจำเป็นต้องมีทั้งเทคนิคและแม่นยำบางครั้งก็เป็นการดีที่จะยินดีที่จะพูดน้อยกว่าเสี่ยงที่จะทำให้ผู้ชมสับสน


-1

"การตั้งค่า" เป็นวิธีที่ถูกต้องในการอธิบายการกระทำของการกำหนดค่าให้กับตัวแปร ถ้าคุณอยากรู้เรื่องนี้คุณสามารถเรียกมันว่า "การมอบหมาย" แต่ "ชุด" นั้นแพร่หลายมาก ในความเป็นจริงมันเป็นสำนวน Java ในการเขียนsetFoobar()(และgetFoobar()) วิธีการดำเนินการที่ได้รับมอบหมาย C # จะเป็นขั้นตอนที่ไกลออกไปด้วยgetและsetคำจำกัดความของสถานที่ให้บริการ

เมื่อพูดถึงประเด็นที่สองของคุณเกี่ยวกับการใช้ "factify" และ "falsify" เป็น "โดยนัยให้ผู้ฟังของฉันทราบว่าเรากำลังจัดการกับตัวแปรบูลีน" คุณกำลังบอกผู้ฟังว่าตัวแปรบูลีนเมื่อคุณพูดว่า:

ฉันตั้งค่าFoobarให้true


1
'มาตรฐาน' ใน Java สำหรับวิธีการที่ส่งกลับคุณสมบัติบูลีนเป็นจริงisFoobar()
JimmyJames

-1

AssertหรือRetractสามารถใช้งานได้บ่อยครั้งเมื่อพูดถึงข้อเสนอแทนที่จะเป็นตัวแปรง่ายๆเช่นใน Prolog โดยทั่วไปจะมีเงื่อนไขที่แตกต่างกันขึ้นอยู่กับสิ่งที่บูลีนแทนมากกว่าหนึ่งคำทั่วไปสำหรับทุกภาษาที่มีค่าบูลีน (ตั้งค่า / ล้างธงหรือบิตเปิดใช้งาน / ปิดใช้งานอุปกรณ์หรือโหมด, ยืนยัน / หดข้อเสนออาจมากกว่า)


ฉันเห็นด้วยกับการยืนยันยกเว้นว่าสำหรับโปรแกรมเมอร์ที่มีความหมายแตกต่างกันไปแล้ว (เช่นการโยนข้อยกเว้นหากการแสดงออกไม่เป็นจริง)
ChrisW

@ChrisW ฉันไม่รู้ว่าคุณคิดอย่างไรกับคนที่เขียนโปรแกรม Prolog ถ้าไม่ใช่โปรแกรมเมอร์ แต่มันถูกใช้ใน Prolog ในปี 1972 ดังนั้นมันจึงเป็น C มาโครที่เปลี่ยนความหมายที่มีอยู่
Pete Kirkham

-1

การเปลี่ยนค่าบูลีนที่จากtrueไปfalseหรือในทางกลับกันจะเรียกว่ากวน

ในการตั้งค่าบูลีนเป็นจะfalseกล่าวว่าเป็นเท็จบูลีน ฉันจะเข้าใจคุณถ้าคุณพูดว่า "สัตยาบัน" อย่างไรก็ตามสิ่งนี้ไม่ถูกต้อง ฉันไม่แน่ใจว่าคำกริยานั้นใช้ทำอะไรtrueเพื่ออะไรที่ถูกต้อง

ฉันจะรอใครซักคนที่มีคำตอบที่ดีกว่าให้มาก่อนที่คุณจะเริ่มใช้


1
ปัญหาที่นี่คือคุณอาจใช้คำที่เป็นปฏิปักษ์ , ปลอมแปลง , แต่ฉันจะใช้สลับและรีเซ็ต / ล้างตามลำดับ ในความเป็นจริงจนอ่านคำถามนี้ผมไม่เคยเจอปลอมแปลง บางทีฉันเพียงแค่ได้รับแม้ว่าจะเก่าและฉันไม่ได้ถึงวันที่มีแง่อินเทรนด์ในปีนี้ :)
เดวิดอาร์โน

7
'falsify' มีความหมายในภาษาอังกฤษที่ไม่สอดคล้องกับการใช้งานของคุณสำหรับตัวแปรบูลีน หากคุณบอกฉันว่าคุณ "ปลอมแปลง" ตัวแปรของคุณฉันอาจเข้าใจสิ่งที่คุณกำลังจะพูด แต่ฉันจะแยกวิเคราะห์สิ่งนั้นก่อนที่คุณพยายามบอกฉันว่าคุณโกหกเกี่ยวกับคุณค่าที่พวกเขามี
คิว

1
IMO ตรงข้ามกับ "การปลอมแปลง" จะเป็น "การอ้างสิทธิ์" เป็นภาษาอังกฤษ แต่ ("ยืนยัน") จะให้ความรู้สึกที่ไม่ถูกต้องกับโปรแกรมเมอร์
ChrisW

-3

บูลีนเป็นเทียบเท่าของ SPST (เสาเดียวจากเส้นข้างเดียว) สวิทช์ไฟฟ้า: หนึ่งผลัดกันมันบนหรือปิด


2
"เปิดdoneตัวแปร" หรือ " errorตัวแปรถูกปิด" ทั้งสองปิดเสียงอย่างน้อยสำหรับฉัน ทางเลือกที่แนะนำโดยคำตอบอื่น ๆ ดูเหมือนจะแพร่หลายมากขึ้น - "ตั้งค่าdoneตัวแปร / บูล / แฟล็ก [เป็นจริง]" หรือ " errorล้างค่าสถานะ"
Sebi
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.