คำถามติดแท็ก out-parameters

8
มีวิธีที่ดีกว่าในการใช้พจนานุกรม C # มากกว่า TryGetValue หรือไม่
ฉันพบว่าตัวเองมักจะค้นหาคำถามออนไลน์และวิธีแก้ปัญหาหลายอย่างรวมถึงพจนานุกรม อย่างไรก็ตามเมื่อใดก็ตามที่ฉันพยายามที่จะใช้พวกเขาฉันได้กลิ่นที่น่ากลัวนี้ในรหัสของฉัน เช่นทุกครั้งที่ฉันต้องการใช้ค่า: int x; if (dict.TryGetValue("key", out x)) { DoSomethingWith(x); } นั่นคือโค้ด 4 บรรทัดที่จะทำสิ่งต่อไปนี้: DoSomethingWith(dict["key"]) ฉันได้ยินมาว่าการใช้คีย์เวิร์ด out เป็นรูปแบบการต่อต้านเพราะทำให้ฟังก์ชั่นกลายพันธุ์พารามิเตอร์ของพวกเขา นอกจากนี้ฉันพบว่าตัวเองมักต้องการพจนานุกรม "กลับด้าน" ที่ฉันพลิกคีย์และค่าต่างๆ ในทำนองเดียวกันฉันมักจะทำซ้ำผ่านรายการในพจนานุกรมและพบว่าตนเองกำลังแปลงคีย์หรือค่าไปยังรายการ ฯลฯ เพื่อทำสิ่งนี้ให้ดีขึ้น ฉันรู้สึกว่ามีวิธีการใช้พจนานุกรมที่ดีกว่าและสง่างามกว่าอยู่เกือบตลอดเวลา แต่ฉันรู้สึกแย่

3
ตัวชี้ที่ไม่ใช่ตัวเลือกเทียบกับการอ้างอิงที่ไม่ใช่แบบ const ใน C ++
ในคุณสมบัติ C ++ อื่น ๆ , อาร์กิวเมนต์อ้างอิงของคู่มือสไตล์ Google C ++ , ฉันอ่านว่าต้องไม่ใช้การอ้างอิงที่ไม่ใช่ const พารามิเตอร์ทั้งหมดที่ส่งผ่านโดยการอ้างอิงจะต้องระบุว่า const เป็นที่ชัดเจนว่าการดูการเรียกใช้ฟังก์ชันที่ใช้การอ้างอิงเป็นอาร์กิวเมนต์ทำให้ผู้เขียนโปรแกรม C สับสน แต่ C และ C ++ เป็นภาษาที่แตกต่างกันในขณะนี้ หากจำเป็นต้องใช้พารามิเตอร์เอาต์พุตโดยใช้ตัวชี้สำหรับพารามิเตอร์เอาต์พุตที่ต้องการอาจทำให้ฟังก์ชันการทำงานทั้งหมดถูกข้ามไปซึ่งทำให้การใช้งานฟังก์ชั่นมีความซับซ้อนมากขึ้น (เพิ่มความซับซ้อนของวงจรและความลึกของฟังก์ชัน) ฉันต้องการสร้างรหัส C ++ ให้เข้าใจและบำรุงรักษาได้ง่ายที่สุดดังนั้นโดยทั่วไปฉันสนใจที่จะอ่านคู่มือการเขียนโค้ดสไตล์ แต่เพื่อปรับแนวทางปฏิบัติที่ดีที่สุดในทีมฉันคิดว่าความเข้าใจเหตุผลเบื้องหลังองค์ประกอบของแนวทางนำเสนอเป็นปัจจัยสำคัญ การอ้างอิงที่ไม่ใช่ const นั้นแย่จริง ๆ หรือไม่? การห้ามเฉพาะ Google เท่านั้นหรือเป็นกฎที่ยอมรับกันโดยทั่วไปหรือไม่ อะไรคือเหตุผลของความพยายามพิเศษสำหรับการใช้พารามิเตอร์เอาต์พุตเป็นพอยน์เตอร์?
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.