วิศวกรรมซอฟต์แวร์

ถาม - ตอบสำหรับมืออาชีพนักวิชาการและนักเรียนที่ทำงานในวงจรการพัฒนาระบบ

4
ฉันจะเรียนรู้วิธีที่ถูกต้องในการใช้คุณสมบัติครึ่งหนึ่งได้อย่างไร [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน4 ปีที่แล้ว ฉันเป็นผู้นำทีมพัฒนาและฉันต้องการเผยแพร่ผลิตภัณฑ์ของเราบ่อยที่สุดเท่าที่จะเป็นไปได้ (การจัดส่งอย่างต่อเนื่อง) ในหลายกรณีเราต้องใช้คุณลักษณะที่ใช้เวลานานกว่าการนำไปใช้ในช่วงเวลาระหว่างการเผยแพร่ ฉันยังต้องการให้ผู้คนยอมรับรหัสของพวกเขาในชีวิตประจำวัน (Integration Integration) การใช้คุณลักษณะใหม่หลายครั้งต้องมีการเปลี่ยนแปลงคุณสมบัติที่มีอยู่และแน่นอนว่าคุณสมบัติที่มีอยู่ยังคงต้องทำงานแม้ว่าคุณสมบัติใหม่จะยังไม่เสร็จสิ้น หากผู้พัฒนาใช้วิธีการที่ถูกต้องพวกเขาสามารถปรับคุณสมบัติที่มีอยู่อย่างระมัดระวังและทั้งหมดข้างต้นไม่ใช่ปัญหา อย่างไรก็ตามวิธีการที่เหมาะสมคืออะไรจริง? ใจความพร้อมของฉันในการเขียนโปรแกรมบอกฉันว่าจะทำอย่างไรในแต่ละกรณี แต่ฉันต้องเรียนรู้เพิ่มเติมและฉันต้องการสื่อการอ่านที่ฉันสามารถอ่านและอ้างอิงสมาชิกในทีมเพื่ออ่าน หรือวิธีอื่นใดในการเรียนรู้วิธีที่ถูกต้องในการเรียนรู้วิธีนี้จะทำ นั่นคือคำถาม ฉันจะแน่ใจได้อย่างไรว่าสมาชิกในทีมเรียนรู้วิธีที่ถูกต้องในการนำคุณลักษณะครึ่งหนึ่งไปใช้ ฉันค้นหาคนที่อ้างว่ามีกลยุทธ์เกี่ยวกับเรื่องนี้ แต่ยังไม่พบยกเว้นคนที่เขียนความคิดแบบสุ่มเล็กน้อยในหัวข้อ บางทีฉันอาจไม่ได้ใช้คำค้นหาที่ถูกต้องหรืออาจไม่มีใครทำแนวทางที่เชื่อถือได้เกี่ยวกับเรื่องนี้

3
เป็นไปได้หรือไม่ที่จะคอมไพล์ภาษาระดับสูงขึ้นเพื่อให้สามารถอ่าน C ++ ได้? [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน6 ปีที่ผ่านมา C ++ เป็นภาษาที่ยอดเยี่ยมในหลาย ๆ ด้าน แต่บางสิ่งที่ยุ่งยากในการเขียนโดยไม่ต้องใช้ IDE ในฐานะผู้ใช้ VIM มันน่าสนใจมากถ้าฉันสามารถใช้ภาษาระดับสูงขึ้นซึ่งทำให้ฉันสามารถเขียน C ++ ด้วย S-Expressions และอาจมีมาโครคล้าย Lisp ซึ่งทำให้สามารถสร้างโค้ดที่สะอาดได้ในขณะเดียวกันก็หลีกเลี่ยงการเขียน patters เดิม ครั้งแล้วครั้งเล่า. ฉันถาม freenode และทดสอบแนวคิดหลายอย่างเช่นการคอมไพล์ Lisp-> C กับคอมไพเลอร์เช่น ECL และ Bigloo แต่ไม่มีสิ่งใดที่สร้างโค้ด C ที่สะอาดเป็นพิเศษ มีงานใด ๆ ในปัญหานี้หรือไม่?

4
นักพัฒนาหยุดการคอมมิชชันที่ผิดสาขาบน DVCS
ปัญหา ฉันอยู่ในโครงการซอฟต์แวร์ที่มีนักพัฒนาประมาณ 10 คนเราแบ่งปันซอร์สโค้ดผ่าน Mercurial เรามีการพัฒนาและสาขาการผลิตต่อการเปิดตัว ซ้ำแล้วซ้ำอีกในระหว่างโครงการเรามีซอร์สโค้ดจากหนึ่งสาขาคือ v1 เข้าสู่ patch และบำรุงรักษาสาขาสำหรับซอฟต์แวร์รุ่นก่อนหน้าเช่น v2 ซึ่งส่งผลให้เวลาที่ใช้ในการสำรองการกระทำผิดหรือรหัส (อาจไม่ใช่ -QAd) การเข้าถึงและการปรับใช้ในสาขาที่ไม่ถูกต้องหากเราไม่สังเกตเห็นว่ารหัสผิดไป สาขาและผสานการออกแบบ / วิธีการของเรา v1-test v1-patch1 v1-patch2 ^---------^-----------^ v1-prod / / \ \ -----------------------/ \ \ v1-dev \ \ \ --------------------------\ v2-dev \ \ \ ^-------^------------- v2-prod v2-test v2-patch1 ดังนั้นเราจะทำงานในสาขาพัฒนาการเผยแพร่จนกว่าจะถือว่าพร้อมแล้วจึงทำการปิดสาขาสำหรับการทดสอบ / UAT / สาขาการผลิตเดียวซึ่งการเผยแพร่และการบำรุงรักษาทั้งหมดเสร็จสิ้นแล้ว แท็กใช้เพื่อสร้างรุ่นของสาขานี้ …

1
ในการพัฒนาซอฟต์แวร์อิสระ บริษัท ควรมีบทลงโทษแบบใดเมื่อพวกเขาพลาดกำหนดเวลา [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน6 ปีที่ผ่านมา ฉันกำลังคุยกับผู้พัฒนาร่วม เขามีลูกค้าที่ต้องการให้แน่ใจว่าเขาส่งตรงเวลา ลูกค้าต้องการผลสะท้อนสำหรับวันครบกำหนดที่ไม่ได้รับ ในขณะที่ฉันไม่ทำงานอิสระฉันไม่สามารถให้คำตอบได้ ดังนั้นคำถามของฉันคือ: ผลกระทบอะไรบ้างที่คุณ (มือปืนรับจ้าง) เห็นด้วยกับลูกค้าของคุณหากคุณพลาดกำหนดส่งมอบของคุณ (นอกเหนือจากการถูกไล่ออก)?

9
การออกแบบสำหรับการสืบทอดสามารถทำให้มีค่าใช้จ่ายเพิ่มเติมได้อย่างไร [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน6 ปีที่ผ่านมา ดังนั้นฉันต้องการสืบทอดจากsealed classในcsharpและถูกไฟไหม้ ไม่มีทางที่จะเปิดผนึกจนกว่าคุณจะเข้าถึงแหล่งข้อมูลได้ ฉันคิดว่า "ทำไมsealedถึงมีอยู่จริง" 4 เดือนที่แล้ว ฉันไม่สามารถเข้าใจได้แม้จะอ่านสิ่งต่าง ๆ มากมายเช่น: ความปรารถนาของ Jon Skeet " คลาสถูกปิดผนึกโดยค่าเริ่มต้นใน. NET " ชอบการแต่งมากกว่าการสืบทอด? "คุณไม่ควรปิดคลาสทั้งหมด (... )" คุณจะล้อเลียนคลาสที่ปิดสนิทได้อย่างไร ฉันพยายามย่อยทุกอย่างตั้งแต่นั้นมา แต่มันก็มากเกินไปสำหรับฉัน ในที่สุดเมื่อวานฉันลองอีกครั้ง ฉันสแกนพวกเขาทั้งหมดอีกครั้งและอีกไม่กี่: ทำไมชั้นเรียนควรเป็นอย่างอื่นนอกจาก "นามธรรม" หรือ "ขั้นสุดท้าย / ปิดผนึก" ในการเขียนโปรแกรมกว่า 15 ปีครั้งแรกที่ฉันได้ยินเกี่ยวกับSOLIDจากคำตอบของคำถามที่เชื่อมโยงแล้วและเห็นได้ชัดว่าฉันไม่ได้อ่านมาตลอด 4 เดือนที่ผ่านมา ในที่สุดหลังจากการไตร่ตรองมากมายฉันตัดสินใจที่จะแก้ไขคำถามเดิมอย่างหนักตามชื่อเรื่องใหม่ คำถามเดิมกว้างเกินไปและอัตนัย มันเป็นพื้นถาม: ในชื่อเก่า: เหตุผลหนึ่งที่ดีในการใช้ตราประทับ ในร่างกาย: …
12 c#  inheritance 

1
การแก้ไข __dict__ ของวัตถุเพื่อกำหนดคุณสมบัติให้ถือว่าเป็น Pythonic หรือไม่?
ฉันมีคลาสที่ขยายวัตถุจากแถวที่พบในฐานข้อมูล (หรือแหล่งอื่นเช่น MongoDB ไฟล์ CSV เป็นต้น) ในการตั้งค่าคุณสมบัติของวัตถุมันไม่สิ่งที่ต้องการหรือself.__dict__.update(**properties)obj.__dict__.update(**properties) สิ่งนี้ถือว่าเป็น Pythonic หรือไม่ นี่เป็นรูปแบบที่ดีที่ฉันควรใช้ต่อไปหรือว่านี่เป็นรูปแบบที่แย่หรือไม่?
12 python 

4
ฉันจะออกแบบอินเทอร์เฟซอย่างไรเพื่อให้ชัดเจนว่าคุณสมบัติใดที่อาจเปลี่ยนแปลงค่าของพวกเขาและสิ่งใดที่จะคงที่
ฉันมีปัญหาการออกแบบเกี่ยวกับคุณสมบัติ. NET interface IX { Guid Id { get; } bool IsInvalidated { get; } void Invalidate(); } ปัญหา: อินเตอร์เฟซนี้มีสองคุณสมบัติอ่านอย่างเดียวและId IsInvalidatedอย่างไรก็ตามความจริงที่ว่าพวกเขาเป็นแบบอ่านอย่างเดียวไม่สามารถรับประกันได้ว่าค่าของพวกเขาจะคงที่ สมมติว่ามันเป็นความตั้งใจของฉันที่จะทำให้ชัดเจนว่า ... Id แทนค่าคงที่ (ซึ่งอาจถูกแคชอย่างปลอดภัย) ในขณะที่ IsInvalidatedอาจเปลี่ยนค่าในช่วงอายุของIXวัตถุ (และไม่ควรแคช) ฉันจะปรับเปลี่ยนinterface IXเพื่อให้สัญญานั้นชัดเจนเพียงพอได้อย่างไร ความพยายามสามข้อของฉันในการแก้ปัญหา: อินเตอร์เฟสได้รับการออกแบบมาอย่างดี การปรากฏตัวของวิธีการที่เรียกว่าInvalidate()ช่วยให้โปรแกรมเมอร์ที่จะอนุมานว่ามูลค่าของทรัพย์สินที่มีชื่อคล้ายกันIsInvalidatedอาจได้รับผลกระทบจากมัน อาร์กิวเมนต์นี้มีไว้เฉพาะในกรณีที่เมธอดและคุณสมบัติมีชื่อคล้ายกัน เพิ่มส่วนต่อประสานนี้กับกิจกรรมIsInvalidatedChanged: bool IsInvalidated { get; } event EventHandler IsInvalidatedChanged; สถานะของ…Changedเหตุการณ์สำหรับIsInvalidatedสถานะที่คุณสมบัตินี้อาจเปลี่ยนค่าและการไม่มีเหตุการณ์ที่คล้ายกันสำหรับIdเป็นสัญญาว่าคุณสมบัตินั้นจะไม่เปลี่ยนค่าของมัน ฉันชอบโซลูชันนี้ แต่มีสิ่งเพิ่มเติมมากมายที่อาจไม่ได้ใช้เลย แทนที่คุณสมบัติIsInvalidatedด้วยเมธอดIsInvalidated(): bool IsInvalidated(); …
12 c#  design  .net  properties 

3
เป็นไปได้หรือไม่ที่จะแสดงการกลายพันธุ์ของวัตถุกราฟได้อย่างมีประสิทธิภาพกับสถานะที่เปลี่ยนแปลงไม่ได้?
ฉันกำลังฝึกใช้วัตถุที่ไม่เปลี่ยนรูปใน C ++ เป้าหมายส่วนตัวของฉันแสดงกราฟวัตถุทั่วไป (เป็นกอง) กับลำดับของกราฟที่ไม่เปลี่ยนรูป การสร้างกราฟหลายรุ่นนั้นไม่ได้ยากขนาดนั้น ปัญหาคือประสิทธิภาพ การกำหนดเวอร์ชันแบบเดรัจฉานต้องการสำเนากราฟเต็มรูปแบบและไม่สามารถยอมรับได้ ฉันพยายามแชร์โหนดที่ไม่เปลี่ยนแปลง แต่ในกรณีนี้ฉันมีปัญหาใหม่ การอ้างอิง การอ้างอิงถึงวัตถุอื่นต้องได้รับการอัปเดตทั้งกราฟ สิ่งนี้ต้องการการเยี่ยมชมโหนดทั้งหมดทุกครั้งที่ได้รับกราฟรุ่นใหม่ และสิ่งนี้กลายพันธุ์โหนดที่มีการอ้างอิงดังนั้นจึงควรได้รับมา (โดยการคัดลอก) ประสิทธิภาพจะไม่ดีไปกว่าการทำสำเนาที่ดุร้าย เท่าที่ฉันสามารถจินตนาการได้ไม่มีวิธีที่มีประสิทธิภาพจริง ๆ เพื่อเป็นตัวแทนของการกลายพันธุ์ของกราฟวัตถุกับรัฐที่ไม่เปลี่ยนรูป ดังนั้นฉันขอความคิดเกี่ยวกับเรื่องนี้ เป็นไปได้หรือไม่ที่จะแสดงการกลายพันธุ์ของกราฟวัตถุอย่างมีประสิทธิภาพด้วยสถานะไม่เปลี่ยนรูป?

5
วิธีการย้ายความคิดของฉันจาก C ++ ไปยัง C #
ฉันเป็นนักพัฒนา C ++ ที่มีประสบการณ์ฉันรู้ภาษาอย่างละเอียดและใช้คุณสมบัติบางอย่างของมันอย่างเข้มข้น นอกจากนี้ฉันรู้หลักการของ OOD และรูปแบบการออกแบบ ตอนนี้ฉันเรียนรู้ C # แต่ฉันไม่สามารถหยุดความรู้สึกที่ไม่สามารถกำจัดความคิด C ++ ได้ ฉันผูกตัวเองอย่างหนักเพื่อจุดแข็งของ C ++ ที่ฉันไม่สามารถอยู่ได้หากไม่มีคุณสมบัติบางอย่าง และฉันไม่สามารถหาวิธีแก้ปัญหาที่ดีสำหรับพวกเขาได้ใน C # อะไรแนวปฏิบัติที่ดี , รูปแบบการออกแบบ , สำนวนที่มีความแตกต่างกันใน C # จากมุมมองของ C ++ คุณสามารถแนะนำ? วิธีการได้รับการออกแบบ C ++ ที่สมบูรณ์แบบไม่ได้ดูโง่ใน C # โดยเฉพาะฉันไม่สามารถหาวิธีที่ดีในการจัดการกับ C # (ตัวอย่างล่าสุด): การควบคุมอายุการใช้งานของทรัพยากรที่ต้องมีการล้างข้อมูลที่กำหนด (เช่นไฟล์) นี่เป็นเรื่องง่ายที่มีusingอยู่ในมือ แต่จะใช้งานได้อย่างไรเมื่อมีการถ่ายโอนความเป็นเจ้าของทรัพยากร [... betwen threads]? ใน …

4
C # Minimal SQL Database
ฉันกำลังทำงานในโครงการขนาดเล็ก (ไม่ใช่การผลิต) ที่ฉันต้องการจัดเก็บข้อมูลเพียงพอว่าบางสิ่งเช่น CSV จะไม่มีประสิทธิภาพในการประมวลผลและเซิร์ฟเวอร์ SQL / MySQL จะมากเกินไป . Net มีวิธีใดในการจัดเก็บข้อมูลหลายรายการอย่างมีประสิทธิภาพด้วยความสามารถในการสืบค้นโดยไม่ต้องจัดการและเชื่อมต่อกับเซิร์ฟเวอร์แทนที่จะโหลดและประมวลผลไฟล์เดียว
12 c#  database  sql 

5
มีวิธีใดที่จะแสดงข้อดีของการแก้ปัญหาฐานข้อมูลและแอปพลิเคชันให้กับเพื่อนร่วมงาน
ฉันทำงานใน บริษัท ที่มีสเปรดชีต Excel อยู่ทุกที่ ในฐานะที่เป็นเพื่อนร่วมงานของฉันไม่ใช่โปรแกรมเมอร์ฉันมั่นใจว่าพวกเขาไม่ได้ไตร่ตรองว่าอาจมีวิธีการจัดการข้อมูลที่ดีขึ้น / ง่ายขึ้น / มากขึ้น ตามธรรมชาติแล้วฉันสนับสนุนแอปพลิเคชันที่สามารถใช้ประโยชน์จากคุณสมบัติที่คุณพบในฐานข้อมูลเชิงสัมพันธ์และส่วนหน้าแบบโต้ตอบซึ่งปรับให้เหมาะกับความต้องการของเวิร์กโฟลว์ต่างๆที่กระจายอยู่ในสเปรดชีตที่แตกต่างกันในปัจจุบัน ปัญหาที่ฉันมีคือฉันได้พยายามอธิบายข้อดีของระบบดังกล่าวให้กับฝ่ายต่างๆ แต่ขาดการเขียนพวกเขาตั้งแต่เริ่มต้นฉันมีเวลายากที่จะโน้มน้าวใจพวกเขาหรือแม้กระทั่งเปิดเผยให้หญ้าสีเขียว โดยทั่วไปผู้คนเข้าใจ Excel (แม้ว่าพวกเขาจะไม่ใช่ผู้ใช้ที่ทรงพลัง) แต่อาจจะคลุมเครือทั้งหมดเมื่อคำว่า 'ฐานข้อมูล' ปรากฏขึ้นหรือคุณเริ่มพูดถึง 'รหัส' ใครบ้างที่สามารถแนะนำวิธีการโดยมีหลักฐานว่าเวิร์กโฟลว์ได้รับการปรับปรุงโดยเปลี่ยนจากสเปรดชีตเป็นแอปพลิเคชันจริงหรือไม่

8
การเขียนซอฟต์แวร์ง่ายกว่าการอ่านและทำความเข้าใจตั้งแต่เริ่มต้นหรือไม่? [ปิด]
ตามที่เป็นอยู่ในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบคำถาม & คำตอบของเรา เราคาดหวังคำตอบที่จะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้มีแนวโน้มที่จะเรียกร้องให้มีการอภิปรายโต้แย้งโต้แย้งหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงและเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อขอคำแนะนำ ปิดให้บริการใน6 ปีที่ผ่านมา ฉันและเพื่อนของฉันกำลังคุยกันเรื่องวานนี้เกี่ยวกับความแตกต่างระหว่างการเขียนซอฟต์แวร์ C ++ ขนาดใหญ่และเข้าใจว่าเป็นการรับสมัครใหม่ เป็นไปได้ไหมว่าเมื่อซอฟต์แวร์ทำทีละบรรทัดและกระบวนการนี้คล้ายกับว่าเรา (มนุษย์) เรียนรู้สิ่งต่าง ๆ และสร้างสิ่งที่อยู่เหนือสิ่งอื่นการเขียนซอฟต์แวร์ขนาดใหญ่นั้นง่ายกว่าการอ่านและเข้าใจสิ่งที่มันทำ (การก้าวผ่านโค้ดช่วย แต่คุณต้องจำหลายคลาส / ไฟล์ต้นฉบับด้วยกันคุณไม่รู้ด้วยซ้ำว่าพวกมันถูกเขียนเพื่ออะไร มันฟังดูแปลกในตอนแรก แต่หลังจากที่เราคิดไปเล็กน้อยมันก็สมเหตุสมผล

4
เป็นไปได้ไหมที่จะใช้คอมไพเลอร์ Intel C / C ++ บน Linux เพื่อสร้างไฟล์ออบเจ็กต์ที่จะเชื่อมโยงกับ Windows
ทำไม? ขึ้นอยู่กับแหล่งที่มาของคุณคอมไพเลอร์ของ Intel น่าจะเป็นหรือคอมไพเลอร์ที่สร้างไฟล์ปฏิบัติการที่เร็วที่สุดสำหรับสถาปัตยกรรม x86 (ปรับปรุง 5 ถึง 100% เวลาในการประมวลผล) Intel เสนอคอมไพเลอร์สำหรับ Linux ภายใต้ใบอนุญาตที่ไม่ใช่เชิงพาณิชย์ฟรี (ฉันคิดว่าฉันอ่านมันฟรีที่ใดที่หนึ่งบนหน้าเว็บของพวกเขา: Intel - การพัฒนาซอฟต์แวร์ที่ไม่ใช่เชิงพาณิชย์ ) นอกจากนี้ยังมีใบอนุญาตที่ไม่ใช่เชิงพาณิชย์สำหรับนักเรียนฟรี แต่ใบอนุญาตนี้ไม่สามารถใช้ได้แม้ว่าจะมีเครื่องมือสำหรับระบบปฏิบัติการหลักทั้งสาม (การเชื่อมโยงหลุดเนื่องจากข้อ จำกัด ด้านชื่อเสียง) เป้าหมาย ฉัน (ในฐานะนักเรียนที่ไม่ใช่นักศึกษา) ต้องการใช้คอมไพเลอร์ของ Intel สำหรับการปรับปรุงความเร็วในการดำเนินการที่เป็นไปได้ภายใต้ใบอนุญาตที่ไม่ใช่เชิงพาณิชย์เพื่อรวบรวมไฟล์วัตถุที่สามารถเชื่อมโยงเพื่อสร้างไฟล์ประมวลผลและไลบรารีลิงค์แบบไดนามิกสำหรับ Windows X) รายละเอียดเพิ่มเติม: สิ่งที่ฉันอนุมานจากเอกสารนี้คือคอมไพเลอร์ Intel สร้างออบเจ็กต์ไฟล์ที่เข้ากันได้กับคอมไพเลอร์ที่โดดเด่นของแพลตฟอร์ม Sub-คำถาม: รูปแบบไฟล์ออบเจ็กต์ของ gcc, g ++, cl, mingw32, icc, icpc, และ icl บน Windows และ …

1
ความหมายของคำศัพท์ในการเขียนโปรแกรมคืออะไร
ฉันกำลังดู Objects C บางเอกสาร .. และได้รับสิ่งนี้: UIGraphicsBeginImageContext: สร้างบริบทกราฟิกบิตแมปและทำให้เป็นบริบทปัจจุบัน นอกจากนี้คำเดียวกันนี้ถูกใช้ใน Robotlegs: ( http://www.adobe.com/devnet/actionscript/articles/intro-robotlegs-pt1.html ) บริบท: บริบทเป็นกลไกการเริ่มต้นที่เริ่มต้นการฉีดพึ่งพาและยูทิลิตี้หลักต่างๆที่ Robotlegs ใช้ ความหมายตามพจนานุกรมของบริบทเมื่อฉัน googled ดูเหมือนจะไม่ตรงกับวิธีที่ใช้ในการเขียนโปรแกรม: con · text / ˈkäntekst / คำนามสถานการณ์ที่จัดรูปแบบสำหรับเหตุการณ์คำสั่งหรือแนวคิดและในแง่ที่สามารถเข้าใจและประเมินได้อย่างสมบูรณ์ ส่วนต่าง ๆ ของสิ่งที่เขียนหรือพูดที่นำหน้าและปฏิบัติตามคำหรือข้อความทันทีและอธิบายความหมายของมัน ทุกคนสามารถโยนแสงได้บ้าง! โวลต์

5
การเสริมความแข็งแกร่งโค้ดด้วยการจัดการข้อยกเว้นที่ไร้ประโยชน์อาจเป็นไปได้
เป็นวิธีปฏิบัติที่ดีที่จะใช้การจัดการข้อยกเว้นที่ไร้ประโยชน์หรือไม่ในกรณีที่ส่วนอื่นของรหัสไม่ได้เข้ารหัสอย่างถูกต้อง? ตัวอย่างพื้นฐาน คนที่เรียบง่ายดังนั้นฉันจึงไม่สูญเสียทุกคน :) สมมติว่าฉันกำลังเขียนแอพที่จะแสดงข้อมูลของบุคคล (ชื่อที่อยู่ ฯลฯ ) ข้อมูลที่ถูกแยกออกจากฐานข้อมูล สมมติว่าฉันเป็นผู้เขียนส่วน UI และคนอื่นกำลังเขียนรหัสแบบสอบถาม DB ทีนี้ลองจินตนาการว่าข้อมูลจำเพาะของแอพของคุณบอกว่าถ้าข้อมูลของบุคคลนั้นไม่สมบูรณ์ (สมมติว่าชื่อหายไปในฐานข้อมูล) ผู้ที่เข้ารหัสแบบสอบถามควรจัดการสิ่งนี้โดยส่งกลับ "NA" สำหรับฟิลด์ที่หายไป เกิดอะไรขึ้นถ้าแบบสอบถามมีการเข้ารหัสไม่ดีและไม่จัดการกรณีนี้ จะเป็นอย่างไรถ้าคนที่เขียนข้อความค้นหาจัดการกับผลลัพธ์ที่ไม่สมบูรณ์และเมื่อคุณพยายามที่จะแสดงข้อมูลทุกอย่างก็ขัดข้องเพราะรหัสของคุณไม่ได้เตรียมที่จะแสดงสิ่งที่ว่างเปล่า? ตัวอย่างนี้เป็นพื้นฐานมาก ฉันเชื่อว่าพวกคุณส่วนใหญ่จะพูดว่า "ไม่ใช่ปัญหาของคุณคุณไม่ต้องรับผิดชอบต่อความผิดพลาดนี้" แต่ก็ยังคงเป็นส่วนหนึ่งของรหัสของคุณที่ขัดข้อง ตัวอย่างอื่น สมมติว่าตอนนี้ฉันเป็นคนเขียนแบบสอบถาม ข้อกำหนดไม่ได้พูดเหมือนกับข้างต้น แต่คนที่เขียนแบบสอบถาม "แทรก" ควรตรวจสอบให้แน่ใจว่าเขตข้อมูลทั้งหมดจะเสร็จสมบูรณ์เมื่อเพิ่มบุคคลในฐานข้อมูลเพื่อหลีกเลี่ยงการแทรกข้อมูลที่ไม่สมบูรณ์ ฉันควรจะปกป้องแบบสอบถาม "เลือก" ของฉันเพื่อให้แน่ใจว่าฉันให้ข้อมูลที่สมบูรณ์เกี่ยวกับ UI หรือไม่ คำถาม ถ้าข้อมูลจำเพาะไม่ได้พูดอย่างชัดเจนว่า "คนนี้เป็นคนที่รับผิดชอบในการจัดการสถานการณ์นี้"? ถ้าบุคคลที่สามใช้แบบสอบถามอื่น (คล้ายกับแบบสอบถามแรก แต่ใช้ฐานข้อมูลอื่น) และใช้รหัส UI ของคุณเพื่อแสดง แต่ไม่จัดการกรณีนี้ในรหัสของเขา ฉันควรทำสิ่งที่จำเป็นเพื่อป้องกันความผิดพลาดที่อาจเกิดขึ้นแม้ว่าฉันจะไม่ใช่คนที่ควรจัดการกับคดีที่ไม่ดี? ฉันไม่ได้มองหาคำตอบเช่น "(s) เขาเป็นคนรับผิดชอบต่อความผิดพลาด" เนื่องจากฉันไม่ได้แก้ไขข้อขัดแย้งที่นี่ฉันอยากรู้ว่าฉันควรป้องกันโค้ดของฉันจากสถานการณ์ที่ไม่ใช่ความรับผิดชอบของฉันหรือไม่ …

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