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

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 

4
ควรใช้คำหลัก const แบบใดใน C เพื่อหาตัวแปรเมื่อใดและเพื่ออะไร
ในขณะที่รับรหัสของฉันได้รับการตรวจสอบที่นี่ปัญหาการใช้constคำหลักเกิดขึ้น ฉันเข้าใจว่ามันใช้สำหรับการใช้งานพฤติกรรมอ่านอย่างเดียวกับตัวแปร ฉันสับสนเกี่ยวกับสถานการณ์ต่าง ๆ ว่าจะมีประโยชน์เมื่อใด ควรใช้เพื่อความชัดเจนในฟังก์ชั่นต้นแบบหรือไม่ ควรใช้เป็นมาตรการรักษาความปลอดภัยระหว่างการพัฒนารหัสหรือไม่ มันควรจะใช้ในขอบเขตของฟังก์ชั่นต่าง ๆ เพื่อประกาศค่าคงที่แบบรันไทม์หรือไม่? ควรจะใช้เลยหรือไม่? คำถามเหล่านี้เป็นเพียงตัวอย่างของความสับสนที่ฉันเผชิญ ความสับสนทั่วไปคือ ควรconstใช้คำหลักในการเขียนโปรแกรม C เมื่อใด สิทธิประโยชน์หลายประเภทที่สามารถได้รับจากการใช้คำหลักนี้ใน C คืออะไร? มีข้อเสียของการใช้constคำหลักหรือไม่ มีการชี้ว่าคำถามนี้อาจกว้างเกินไปเนื่องจากคำถามเหล่านี้มีรายละเอียดตามคำถามของฉัน ฉันแค่อยากจะชี้แจงว่าคำถามเหล่านี้เป็นเพียงเพื่อชี้แจงความสับสนเกี่ยวกับคำถามหลัก ควรใช้คำหลัก const แบบใดใน C เพื่อหาตัวแปรเมื่อใดและเพื่ออะไร นอกจากนี้ยังสามารถใช้ถ้อยคำใหม่เป็น การใช้constคำหลักที่เหมาะสมใน C` ด้วยข้อดีข้อเสียของสิ่งเดียวกัน

7
อาจมีการเปลี่ยนแปลงค่าคงที่เมื่อเวลาผ่านไป?
ในระหว่างขั้นตอนการพัฒนามีตัวแปรบางอย่างที่จำเป็นต้องได้รับการแก้ไขในการรันเดียวกัน แต่อาจจำเป็นต้องแก้ไขตลอดเวลา เช่น a booleanto signal debug mode ดังนั้นเราจึงทำสิ่งต่าง ๆ ในโปรแกรมที่ปกติแล้วเราจะไม่ทำ มันเป็นสไตล์ที่ไม่ดีหรือไม่ที่มีค่าเหล่านี้ในค่าคงที่เช่นfinal static int CONSTANT = 0ใน Java? ฉันรู้ว่าค่าคงที่ยังคงเหมือนเดิมในช่วงรันไทม์ แต่มันควรจะเหมือนกันในระหว่างการพัฒนาทั้งหมดยกเว้นการเปลี่ยนแปลงที่ไม่ได้วางแผนไว้แน่นอน? ฉันค้นหาคำถามที่คล้ายกัน แต่ไม่พบสิ่งใดที่ตรงกับของฉันอย่างแน่นอน
28 const  constants 

7
ความแตกต่างระหว่างไม่เปลี่ยนรูปและ const
ฉันมักจะเห็นคำศัพท์immutableและconstใช้สลับกันได้ อย่างไรก็ตามจากประสบการณ์ (เล็กน้อย) ของฉันทั้งสองต่างกันมากใน 'สัญญา' ที่พวกเขาทำในรหัส: ไม่เปลี่ยนรูปทำให้สัญญาที่วัตถุนี้จะไม่เปลี่ยนแปลงใด ๆ (เช่น Python tuples, สตริง Java) Const ทำสัญญาที่อยู่ในขอบเขตของตัวแปรนี้มันจะไม่ถูกแก้ไข (ไม่มีสัญญาใด ๆ เกี่ยวกับสิ่งที่เธรดอื่น ๆ อาจทำกับวัตถุที่ชี้ไปในช่วงเวลานี้เช่นคีย์เวิร์ด C / C ++) เห็นได้ชัดว่าทั้งสองไม่เทียบเท่ากันยกเว้นภาษานั้นเป็นแบบเธรดเดียว (PHP) หรือมีทั้งระบบการพิมพ์เชิงเส้นหรือแบบ uniquness (Clean, Mercury, ATS) ครั้งแรกฉันเข้าใจแนวคิดทั้งสองนี้ถูกต้องหรือไม่ ประการที่สองหากมีความแตกต่างทำไมพวกเขาเกือบใช้เฉพาะแทนกันได้?

6
ความสามารถในการอ่านเป็นเหตุผลที่ถูกต้องหรือไม่ที่จะไม่ใช้พารามิเตอร์ const in (การอ้างอิง)
เมื่อเขียนฟังก์ชั่นบางอย่างฉันพบคำสำคัญ const ในพารามิเตอร์ดังนี้: void MyClass::myFunction(const MyObject& obj,const string& s1,const string& s2,const string& s3){ } มักทำให้เกิดการแบ่งบรรทัดออกเป็น 2 บรรทัดใน IDE หรือ vim ดังนั้นฉันต้องการลบคำหลัก const ทั้งหมดในพารามิเตอร์: void MyClass::myFunction(MyObject& obj,string& s1,string& s2,string& s3){ } นั่นเป็นเหตุผลที่ถูกต้องหรือไม่ที่จะไม่ใช้ const? มันสามารถบำรุงรักษาเพื่อให้วัตถุพารามิเตอร์ไม่เปลี่ยนแปลงด้วยตนเอง?

4
ปัญหาของการนำ C ++ เหมือน const เป็นภาษามีอะไรบ้าง
ฉันสนใจในความคิดของ C ++ - constไม่ใช่การประหารแบบconstนั้น ยกตัวอย่าง C # - มันไม่มี C ++ - เหมือน const และเหตุผลที่เป็นปกติ - ผู้คนและเวลา ที่นี่นอกจากนี้ดูเหมือนว่าทีม C # ดูการดำเนินการ C ++ ของconstการตลาด CLR และมีเพียงพอที่จุดนี้ (ดูว่าทำไมไม่มีวิธีสมาชิก const ใน c # และพารามิเตอร์ const ; ขอบคุณ Svick) ถ้าเราก้าวไปไกลกว่านั้นมีอะไรอีกไหม? มีอะไรที่ลึกกว่านี้ไหม? ยกตัวอย่างเช่นการสืบทอดหลาย ๆ อย่างซึ่งมักจะยากที่จะเข้าใจ (สำหรับผู้ใช้) และดังนั้นจึงไม่ได้เพิ่มในภาษา (เช่นปัญหาเพชร) เป็นสิ่งที่มีอยู่ในธรรมชาติของconstที่ก่อให้เกิดปัญหาว่ามันจะดีกว่าสำหรับภาษาที่จะหลีกเลี่ยงมันได้หรือไม่ สิ่งที่ต้องการตัดสินใจว่าconstควรจะลึกหรือตื้น (มีconstคอนเทนเนอร์หมายความว่าฉันไม่สามารถเพิ่มองค์ประกอบใหม่หรือแก้ไของค์ประกอบที่มีอยู่เช่นกันถ้าองค์ประกอบเป็นประเภทอ้างอิง) ปรับปรุง : …

6
ศูนย์เป็นค่าคงที่หรือไม่?
ฉันได้เจอสำนวนการเขียนโปรแกรมนี้เมื่อเร็ว ๆ นี้: const float Zero = 0.0; ซึ่งจะใช้ในการเปรียบเทียบ: if (x > Zero) {..} ใครสามารถอธิบายได้ว่าสิ่งนี้มีประสิทธิภาพมากขึ้นหรือสามารถอ่านหรือบำรุงรักษาได้ดีกว่า: if (x > 0.0) {..} หมายเหตุ: ฉันสามารถคิดอื่น ๆเหตุผลที่จะกำหนดนี้คงอิ่มเพียงแค่สงสัยเกี่ยวกับการใช้งานในนี้บริบท

2
กลยุทธ์ C + DRY แห้ง
สำหรับการหลีกเลี่ยงการทำซ้ำที่ไม่เกี่ยวข้องกับ C ++ const มีกรณีที่ const_cast จะทำงานได้ แต่ฟังก์ชั่น const ส่วนตัวที่ส่งกลับไม่ใช่ const จะไม่? ในรายการC ++ ของ Scott Meyers ที่มีประสิทธิผล 3 เขาแนะนำว่า const_cast ที่รวมกับการส่งสัญญาณคงที่นั้นเป็นวิธีที่มีประสิทธิภาพและปลอดภัยในการหลีกเลี่ยงรหัสซ้ำเช่น const void* Bar::bar(int i) const { ... return variableResultingFromNonTrivialDotDotDotCode; } void* Bar::bar(int i) { return const_cast<void*>(static_cast<const Bar*>(this)->bar(i)); } เมเยอร์สอธิบายต่อไปว่าการใช้ฟังก์ชัน const เรียกฟังก์ชันที่ไม่ใช่ const นั้นเป็นอันตราย รหัสด้านล่างคือตัวอย่างที่แสดงให้เห็น: ตรงกันข้ามกับข้อเสนอแนะของเมเยอร์สบางครั้ง const_cast รวมกับตัวบล็อกคงเป็นอันตราย บางครั้งฟังก์ชั่น …
14 c++  dry  const 

4
ใน C / C ++ ฉันควรใช้ 'const' ในพารามิเตอร์และตัวแปรท้องถิ่นเมื่อทำได้หรือไม่
คำถามนี้เป็นแรงบันดาลใจคำถามเกี่ยวกับfinalใน java ใน C / C ++ ฉันควรใช้constทุกครั้งที่ทำได้หรือไม่ ฉันรู้ว่ามีคำถามที่เกี่ยวข้องกับการใช้constในพารามิเตอร์อยู่แล้ว น่าเสียดายที่คำถามนั้นและคำตอบนั้นไม่ได้ตอบคำถามของฉันอย่างเต็มที่เพราะมันเป็นเพียงเกี่ยวกับพารามิเตอร์ของฟังก์ชั่น แต่ฉันก็อยากจะรู้เกี่ยวกับกรณีอื่น ๆ (เช่น: ตัวแปรท้องถิ่น) นอกจากนี้คำตอบเกือบทั้งหมดสำหรับคำถามนั้นบอกว่าเราควรใช้constเพราะมันมีข้อมูลที่เป็นประโยชน์เกี่ยวกับการเข้าถึงของตัวแปร แต่สิ่งนี้ดูเหมือนจะขัดแย้งกับคำตอบเกี่ยวกับการใช้ขั้นสุดท้ายใน Javaซึ่งรัฐfinalอาจไม่จำเป็นหากไม่มีข้อมูลเพิ่มเติมและควรละเว้นการรักษารหัสให้สั้นและสะอาด ดังนั้นฉันควรใช้constทุกครั้งที่ทำได้หรือไม่ ถ้าเป็นเช่นนั้นทำไมคำแนะนำสำหรับconstC ++ แตกต่างจากคำแนะนำสำหรับfinalใน Java

3
ผู้คนใช้จำนวนมากเมื่อเขียนโปรแกรมใน Objective C หรือไม่
สิ่งที่เกี่ยวข้อง: คำเตือน“ ส่ง 'const NSString *' ไปยังพารามิเตอร์ประเภท 'NSString *' ยกเลิกคำจำกัดความของคำบ่น บางครั้งฉันคิดว่ามันมีประโยชน์ ฉันอาจต้องผ่านตารางและต้องการตรวจสอบให้แน่ใจว่าเนื้อหาของตารางไม่เปลี่ยนแปลง อย่างไรก็ตามในที่สุดตัวอย่างโปรแกรม Objective-C, constผมไม่เคยเห็น คำถามของฉันคือทำไม
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.