คำถามติดแท็ก boolean

9
ฉันจะโทรด้วยบูลีนที่ชัดเจนขึ้นได้อย่างไร? กับดักบูลีน
ตามที่ระบุไว้โดยในความคิดเห็นโดย @ benjamin-gruenbaum สิ่งนี้เรียกว่ากับดักบูลีน: สมมติว่าฉันมีฟังก์ชั่นเช่นนี้ UpdateRow(var item, bool externalCall); และในคอนโทรลเลอร์ของฉันค่าexternalCallนั้นจะเป็นจริงเสมอ วิธีที่ดีที่สุดในการเรียกใช้ฟังก์ชันนี้คืออะไร ฉันมักจะเขียน UpdateRow(item, true); แต่ฉันถามตัวเองฉันควรจะประกาศบูลีนเพียงเพื่อระบุว่า 'ความจริง' มีคุณค่าอย่างไร? คุณสามารถรู้ได้โดยดูการประกาศของฟังก์ชั่น แต่จะเร็วและชัดเจนขึ้นถ้าคุณเห็นอะไรบางอย่าง bool externalCall = true; UpdateRow(item, externalCall); PD: ไม่แน่ใจว่าคำถามนี้ตรงกับที่นี่จริงหรือไม่ถ้าไม่ฉันจะขอข้อมูลเพิ่มเติมเกี่ยวกับเรื่องนี้ได้จากที่ไหน PD2: ฉันไม่ได้ติดแท็กภาษาใด ๆ 'เพราะฉันคิดว่ามันเป็นปัญหาทั่วไปมาก อย่างไรก็ตามฉันทำงานกับ c # และคำตอบที่ยอมรับนั้นใช้ได้กับ c #
76 boolean  const 

16
ทำไมต้องใช้! boolean_variable มากกว่า boolean_variable == false
ความคิดเห็นเกี่ยวกับคำถามนี้: การตรวจสอบว่าวิธีการส่งกลับเท็จ: กำหนดผลลัพธ์ให้กับตัวแปรชั่วคราวหรือทำให้วิธีการภาวนาโดยตรงในเงื่อนไข? บอกว่าคุณควรใช้!booleanแทนboolean == falseเมื่อทดสอบเงื่อนไข ทำไม? สำหรับฉันนั้นboolean == falseเป็นธรรมชาติมากขึ้นในภาษาอังกฤษและชัดเจนยิ่งขึ้น ฉันขอโทษถ้านี่เป็นเพียงเรื่องของสไตล์ แต่ฉันสงสัยว่ามีเหตุผลอื่นอีก!booleanหรือไม่สำหรับการตั้งค่านี้

2
ฉันควรใช้“ is” เป็นคำนำหน้าสำหรับตัวแปรบูลีนเสมอหรือไม่ [ปิด]
ฉันควรใช้isเป็นคำนำหน้าสำหรับตัวแปรบูลีนเสมอหรือไม่ สิ่งที่เกี่ยวกับ booleans ที่บ่งบอกถึงบางสิ่งบางอย่างในอดีต? ฉันควรจะเขียนisInitializedหรือwasInitialized? ฉันควรเขียนถึงคุณสมบัติIsManyMembersหรือHasManyMembersไม่? มีวิธีปฏิบัติที่ดีที่สุดหรือไม่? หรือฉันควรเขียนตามกฎภาษาอังกฤษ?

8
ฟิลด์บูลีนใหม่ดีกว่าการอ้างอิงค่า Null หรือไม่หากค่าสามารถขาดหายไปอย่างมีความหมายได้
ตัวอย่างเช่นสมมติว่าฉันมีคลาสMemberซึ่งมี lastChangePasswordTime: class Member{ . . . constructor(){ this.lastChangePasswordTime=null, } } ซึ่ง lastChangePasswordTime อาจไม่มีความหมายเนื่องจากสมาชิกบางคนอาจไม่เปลี่ยนรหัสผ่าน แต่ถ้าหาก nulls เป็นสิ่งชั่วร้ายสิ่งที่ควรใช้เมื่อค่าสามารถขาดความหมายได้อย่างไร และhttps://softwareengineering.stackexchange.com/a/12836/248528ฉันไม่ควรใช้ null เพื่อแสดงค่าขาดหายไปอย่างมีความหมาย ดังนั้นฉันพยายามเพิ่มธงบูลีน: class Member{ . . . constructor(){ this.isPasswordChanged=false, this.lastChangePasswordTime=null, } } แต่ฉันคิดว่ามันค่อนข้างล้าสมัยเพราะ: เมื่อ isPasswordChanged เป็นเท็จ lastChangePasswordTime จะต้องเป็นโมฆะและการตรวจสอบ lastChangePasswordTime == null เกือบจะเหมือนกันกับการตรวจสอบ isPasswordChanged เป็นเท็จดังนั้นฉันชอบเช็ค lastChangePasswordTime == null โดยตรง เมื่อเปลี่ยนลอจิกที่นี่ฉันอาจลืมอัปเดตทั้งสองฟิลด์ หมายเหตุ: เมื่อผู้ใช้เปลี่ยนรหัสผ่านฉันจะบันทึกเวลาเช่นนี้: …
39 null  boolean 

13
การใช้พารามิเตอร์บูลีนผิดพลาดหรือไม่
ตามที่มันเป็นความผิดที่จะใช้พารามิเตอร์แบบบูลเพื่อตรวจสอบพฤติกรรม? ฉันรู้ถึงความสำคัญของการหลีกเลี่ยงการใช้พารามิเตอร์บูลีนเพื่อกำหนดพฤติกรรมเช่น: รุ่นเดิม public void setState(boolean flag){ if(flag){ a(); }else{ b(); } c(); } เวอร์ชั่นใหม่: public void setStateTrue(){ a(); c(); } public void setStateFalse(){ b(); c(); } แต่วิธีการเกี่ยวกับกรณีที่พารามิเตอร์บูลีนจะใช้ในการกำหนดค่าแทนพฤติกรรม? เช่น: public void setHint(boolean isHintOn){ this.layer1.visible=isHintOn; this.layer2.visible=!isHintOn; this.layer3.visible=isHintOn; } ฉันกำลังพยายามกำจัดการตั้งค่าสถานะ isHintOn และสร้าง 2 ฟังก์ชันที่แยกกัน: public void setHintOn(){ this.layer1.visible=true; this.layer2.visible=false; this.layer3.visible=true; } public …

6
เมื่อใดที่คุณควรใช้ bools ใน C ++
เรามีงานที่มอบหมายสำหรับชั้นเรียนของเราซึ่งเราต้องสร้างเกมโอเอกซ์ ผู้คนชอบที่จะทำให้ตัวเองสับสนดังนั้นพวกเขาจึงเขียนเกมที่ซับซ้อนซึ่งรวมถึงเมนู ในตอนท้ายของเกมคุณต้องมีตัวเลือกให้เล่นอีกครั้งหรือออกจากโปรแกรม ฉันใช้intตัวแปรสำหรับเรื่องนั้น แต่ฉันสังเกตเห็นเพื่อนร่วมชั้นบางคนใช้บูล มันมีประสิทธิภาพมากกว่านี้ไหม? ความแตกต่างระหว่างการจัดเก็บคำตอบที่ควรเก็บค่าสองค่าในintแทนที่จะเก็บไว้ในบูลคืออะไร วัตถุประสงค์ที่แน่นอนของตัวแปรเหล่านี้คืออะไร?
34 c++  boolean 

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

3
เหตุใดบูลีนประเภทใน C ++ จึงสนับสนุน แต่ไม่ใช่ -
ทำไมโอเปอเรเตอร์ถึง--ไม่มีอยู่สำหรับบูลในขณะนั้นสำหรับโอเปอเรเตอร์++? ฉันลองใช้ C ++ แล้วและฉันไม่รู้ว่าคำถามของฉันใช้ได้กับภาษาอื่นหรือไม่ ฉันยินดีที่จะรู้ว่ายัง ฉันรู้ว่าฉันสามารถใช้โอเปอเรเตอร์++กับบูล มันทำให้บูลใด ๆ เท่ากับจริง bool b = false; b++; // Now b == true. ทำไมเราไม่สามารถใช้โอเปอเรเตอร์--ในทางตรงกันข้ามได้ bool b = true; b--; // Now b == false; มันไม่มีประโยชน์มาก แต่ฉันอยากรู้

3
ทำไมชื่อดั้งเดิมของบูลีนบูลีนจึงไม่ใช่ 'บูล'
Java มี int และ Integer boolean และ Boolean ดูเหมือนจะไม่สอดคล้องกันสักหน่อย boolvs Booleanเพื่อใช้ชื่อที่สั้นลงที่กำหนดไว้สำหรับประเภทดั้งเดิม? หรือ integerเทียบIntegerกับชื่อประเภทที่สอดคล้องกัน? ฉันคิดว่า C ++ ได้ตัดสินใจที่จะใช้boolไม่น้อยก่อนหน้านี้กว่า Java ตัดสินใจที่จะใช้booleanและอาจจะยังมีบางส่วน (ที่ไม่ได้มาตรฐานในเวลา?) ส่วนขยาย C boolเกินไปดังนั้นก็จะมีความสำคัญทางประวัติศาสตร์ ฉันสังเกตเห็นว่าฉันมักจะพยายามใช้สัญชาตญาณในboolตอนแรก (สิ่งดี ๆ ที่ทันสมัยแก้ไขได้ทันทีโดยไม่ต้องมีการคอมไพล์รอบพิเศษ) ดังนั้นจึงเป็นการดีที่จะทราบเหตุผลเบื้องหลังสถานการณ์ปัจจุบัน หากมีคนจำเรื่องราว (หรือบางส่วน) หรือแม้แต่สามารถค้นหาและเชื่อมโยงไปยังการสนทนาทางประวัติศาสตร์ที่เกี่ยวข้องในเน็ตนั่นก็คงจะดีมาก
28 java  history  boolean 

8
มีคำศัพท์ที่ใช้สำหรับ "ของจริง" ไอเอ็นจี "ของปลอม" และเปลี่ยนเป็นบูลีนหรือไม่? [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดเมื่อปีที่แล้ว ให้บอกว่าฉันพยายามอธิบายรหัสของฉันในการประชุมทางเทคนิค ก่อนอื่นฉันตั้งค่าบูลีนfoobarเป็นtrue และ ประการที่สองฉันตั้งค่าบูลีนfoobarเป็นfalse ดูเหมือนคำพูดเล็กน้อย ถ้าfoobarถูกเปิดฉันอาจพูดได้ว่า ประการที่สามฉันสลับ foobar ผ่านความหมายที่นี่คุณรู้ว่ามันเป็นบูลีน ดังนั้นฉันไม่ควรจะสามารถ: ประการที่สี่ฉันTruthify foobar และ ประการที่ห้าฉันปลอมแปลง foobar ซึ่งจะบอกเป็นนัยถึงผู้ฟังของฉันว่าเรากำลังเผชิญกับตัวแปรบูลีนหรือไม่ มีคำศัพท์ที่เหมาะสมสำหรับสิ่งนี้หรือไม่? ขอบคุณ

7
วิธีเปลี่ยนตารางความจริงให้เป็นขนาดเล็กที่สุดหาก / บล็อก
ฉันจะใช้ตารางความจริงและเปลี่ยนเป็นกระชับได้อย่างไรถ้าบล็อก ตัวอย่างเช่นสมมติว่าฉันมีตารางความจริงนี้ที่ A และ B เป็นเงื่อนไขและ x, y และ z เป็นการกระทำที่เป็นไปได้: A B | x y z ------------- 0 0 | 0 0 1 0 1 | 0 0 1 1 0 | 0 1 0 1 1 | 1 0 0 สิ่งนี้สามารถแปลงเป็นด้านล่างถ้าบล็อก: if(A) { if(B) { do(x) } else …

12
แก้ไขข้อคิดเห็นเพื่อใส่อาร์กิวเมนต์ของฟังก์ชันบูลีนที่เป็น“ false” หรือไม่
จากโครงการโอเพนซอร์สบางโครงการฉันรวบรวมสไตล์การเข้ารหัสต่อไปนี้ void someFunction(bool forget); void ourFunction() { someFunction(false /* forget */); } ฉันมีข้อสงสัยเสมอเกี่ยวกับความfalseหมายของที่นี่ มันหมายถึง "ลืม" หรือ "ลืม" อ้างถึงพารามิเตอร์ที่เกี่ยวข้อง (เช่นในกรณีข้างต้น) และ "false" มีไว้เพื่อลบล้างหรือไม่ มีการใช้รูปแบบใดบ่อยที่สุดและวิธีใดดีที่สุด (หรือวิธีที่ดีกว่า) เพื่อหลีกเลี่ยงความคลุมเครือ

4
การส่งบูลีนกลับมาเมื่อประสบความสำเร็จหรือล้มเหลวเป็นเรื่องที่ต้องกังวล
ฉันมักจะพบว่าตัวเองคืนบูลีนจากวิธีการที่ใช้ในหลาย ๆ ตำแหน่งเพื่อให้มีตรรกะทั้งหมดรอบวิธีนั้นในที่เดียว วิธีการโทร (ภายใน) ทั้งหมดจำเป็นต้องทราบว่าการดำเนินการนั้นสำเร็จหรือไม่ ฉันใช้ Python แต่คำถามไม่ได้เจาะจงเฉพาะภาษานั้น มีเพียงสองตัวเลือกที่ฉันนึกได้ เพิ่มข้อยกเว้นถึงแม้ว่าสถานการณ์จะไม่ได้ยอดเยี่ยมและอย่าลืมจับข้อยกเว้นนั้นในทุกที่ที่มีการเรียกใช้ฟังก์ชัน คืนบูลีนขณะที่ฉันกำลังทำ นี่คือจริงๆตัวอย่างง่ายๆที่แสดงให้เห็นว่าสิ่งที่ผมพูดถึง import os class DoSomething(object): def remove_file(self, filename): try: os.remove(filename) except OSError: return False return True def process_file(self, filename): do_something() if remove_file(filename): do_something_else() แม้ว่ามันจะใช้งานได้ แต่ฉันไม่ชอบวิธีนี้ในการทำอะไรบางอย่างมัน "มีกลิ่น" และบางครั้งอาจทำให้เกิดการซ้อนกันหลายครั้ง แต่ฉันไม่สามารถคิดถึงวิธีที่ง่ายกว่านี้ได้ ฉันสามารถใช้ปรัชญา LBYL มากขึ้นและใช้os.path.exists(filename)ก่อนที่จะพยายามลบ แต่ก็ไม่รับประกันว่าไฟล์จะไม่ถูกล็อคในระหว่างนี้ (มันไม่น่าเป็นไปได้ แต่เป็นไปได้) และฉันยังต้องพิจารณาว่าการลบนั้นสำเร็จหรือไม่ นี่เป็นการออกแบบที่ "ยอมรับได้" และหากไม่ใช่สิ่งที่จะเป็นวิธีที่ดีกว่าในการออกแบบสิ่งนี้

2
ทำไม PHP จึงถือว่า“ 0” เป็น FALSE ในบริบทบูลีน
"0" ซึ่งเป็นสตริงที่มีอักขระหนึ่งตัวไม่ใช่สิ่งที่ว่างเปล่าอย่างสังหรณ์ใจ ทำไม PHP จึงถือว่าเป็น FALSE เมื่อถูกแปลงเป็นบูลีนซึ่งแตกต่างจากภาษาการเขียนโปรแกรมอื่น ๆ
12 php  strings  boolean 

5
การประเมินการลัดวงจรเมื่อใดที่ไม่ดี
เพื่อความชัดเจนมากขึ้นฉันจะระบุว่าฉันใช้เวลากับภาษาต่าง ๆ มากมาย แต่จนถึงตอนนี้ก็อาจเป็นไปได้ว่ามันจะใช้งานได้ตลอดเวลาหรือไม่รองรับเลย ตอนนี้ทำงานมีฉันเริ่มต้นในโครงการที่ต้อง VB.net และฉันเห็นมันให้มันทั้งสองในแง่ของและและandalso อันแรกไม่ลัดวงจรและอันที่สองทำ ดังนั้นสิ่งนี้ทำให้ฉันสงสัยว่าทำไม การติดตั้งแบบนี้ดูเหมือนจะบอกเป็นนัยว่ามันจะเกิดขึ้นค่อนข้างบ่อยครั้งหนึ่งที่ต้องการเปลี่ยนโหมด แต่ฉันไม่สามารถคิดว่าในสถานการณ์ใด ๆ ที่มันจะเป็นสิ่งที่ดีที่จะใช้ไฟฟ้าลัดวงจร ฉันรู้ว่านี่อาจเป็นทางเลือกที่ดีกว่าดังนั้นถ้าฉันต้องใส่มันในบางที่อื่นก็แค่บอกฉันว่าที่ไหน แม้ว่าฉันหวังว่ามีอย่างน้อยคำตอบอย่างเป็นทางการว่าทำไมมีตัวเลือกทั้งสองจะดีขึ้นแล้วมักจะทำไฟฟ้าลัดวงจรเมื่อมันใช้ได้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.