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

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

2
แนวทางปฏิบัติที่ดีที่สุดสำหรับการควบคุมเวอร์ชันใน Unity?
ฉันสับสนเล็กน้อยเกี่ยวกับวิธีใช้การควบคุมเวอร์ชันด้วย Unity โดยเฉพาะกับวัตถุเช่นฉากหรือรูปแบบสำเร็จรูปที่ไม่ใช่แค่โค้ด เรามีปัญหาเมื่อเร็ว ๆ นี้เมื่อเพื่อนร่วมงานของฉันและฉันกำลังทำงานในส่วนต่าง ๆ ของฉากเดียวกัน ซึ่งส่งผลให้เกิดความขัดแย้งการแตกแขนงและการผสานมากมาย ในที่สุดการแก้ไขของฉันก็ถูกแทนที่ด้วยการเปลี่ยนแปลงของเขาต่อไป วิธีเดียวที่ฉันเห็นในขณะนี้คือเรากำลังผลัดกันทำงานกับวัตถุเดียวกัน แต่มันก็ไม่สะดวกโดยเฉพาะอย่างยิ่งเนื่องจากงานทั้งหมดที่เรากำลังทำอยู่ในฉาก ผู้คนมักทำอะไรในสถานการณ์เหล่านี้ (เรากำลังใช้ Mercurial, BitBucket และ SourceTree)

3
การออกแบบ REST API สำหรับหน้าเว็บที่มีพ่อมด
ฉันมีหน้าเว็บที่มีรูปแบบตัวช่วยสร้าง ปุ่มส่งไปยัง API จะอยู่ในขั้นตอนที่ 4 ของตัวช่วยสร้าง อย่างไรก็ตามฉันต้องการให้ข้อมูลที่ป้อนถูกจัดเก็บในฐานข้อมูลก่อนที่จะย้ายไปยังขั้นตอนถัดไปในตัวช่วย ฉันต้องการให้ REST API ทำงานสำหรับหน้าเว็บที่มีแท็บเดียว ดังนั้นฉันจึงออกแบบ API ให้ทำแบบสอบถามพารามิเตอร์ action = draft หรือส่ง หากการดำเนินการเป็นแบบร่างเฉพาะฟิลด์ที่บังคับเท่านั้น หากมีการส่งการกระทำฟิลด์ทั้งหมดจะถูกบังคับใช้ การตรวจสอบในชั้นบริการของ REST API จะดำเนินการตามพารามิเตอร์การสืบค้น ดูเหมือนว่าฉันจะระบุ if / else ในเอกสารอย่างชัดเจน นี่เป็นรูปแบบที่ยอมรับได้ของการออกแบบ RESTful หรือไม่ อะไรคือการออกแบบที่ดีที่สุดตามข้อกำหนดเหล่านี้
11 design  rest 

1
การใช้คำสั่งการแก้ไขวิธีการของ Python สำหรับการฉีดที่ต้องพึ่งพา - นี่มันแย่ไหม?
ฉันดู Pycon ของ Raymond Hettinger พูดว่า "Super Considered Super" และเรียนรู้เล็กน้อยเกี่ยวกับ PROON ของ MRO (Method Resolution Order) ซึ่งทำให้ชั้นเรียนเป็น "ผู้ปกครอง" ในลักษณะเชิงเส้น เราสามารถใช้สิ่งนี้เพื่อประโยชน์ของเราเช่นในรหัสด้านล่างเพื่อทำการฉีดพึ่งพา ตอนนี้ตามธรรมชาติฉันต้องการใช้superสำหรับทุกสิ่ง! ในตัวอย่างด้านล่างที่Userระดับประกาศอ้างอิงมันโดยการสืบทอดจากทั้งสองและLoggingService UserServiceนี่ไม่ใช่สิ่งที่พิเศษเป็นพิเศษ ส่วนที่น่าสนใจคือเราสามารถใช้การแก้ไขวิธีสั่งซื้อยังจำลองการอ้างอิงในระหว่างการทดสอบหน่วย โค้ดด้านล่างนี้สร้างสิ่งMockUserServiceที่สืบทอดมาUserServiceและนำเสนอวิธีการที่เราต้องการจำลอง validate_credentialsในตัวอย่างด้านล่างเราให้การดำเนินการของ เพื่อที่จะได้MockUserServiceจัดการกับการโทรใด ๆ ที่validate_credentialsเราจำเป็นต้องวางไว้ก่อนUserServiceใน MRO นี้ทำได้โดยการสร้างชั้นห่อหุ้มรอบUserเรียกว่าMockUserและมีมันสืบทอดมาจากและUserMockUserService ตอนนี้เมื่อเราทำMockUser.authenticateและในทางกลับกันการเรียกใช้มาsuper().validate_credentials() MockUserServiceก่อนUserServiceในการสั่งซื้อวิธีการแก้ปัญหาและเนื่องจากมีการใช้งานที่เป็นรูปธรรมของvalidate_credentialsการดำเนินการนี้จะถูกนำมาใช้ Yay - เราประสบความสำเร็จUserServiceในการทดสอบหน่วยการเรียนรู้ของเรา พิจารณาว่าUserServiceอาจทำการโทรผ่านเครือข่ายหรือฐานข้อมูลราคาแพง - เราเพิ่งลบปัจจัยแฝงของสิ่งนี้ นอกจากนี้ยังไม่มีความเสี่ยงในการUserServiceสัมผัสข้อมูลสด / กระทุ้ง class LoggingService(object): """ Just a contrived logging class …

2
วิธีแก้ปัญหาสำหรับการใช้งานการดำเนินการเกี่ยวกับโครงสร้างข้อมูลที่เชื่อมโยงหรือวงกลมในภาษาที่มีข้อมูลที่ไม่เปลี่ยนรูปแบบ
ฉันต้องการเรียนรู้วิธีสร้างกราฟและดำเนินการบางอย่างกับพวกเขาใน Haskell แต่คำถามนั้นไม่เฉพาะเจาะจงกับ Haskell และแทนที่จะเป็นกราฟเราอาจพิจารณาเชื่อมโยงรายการเป็นสองเท่า คำถาม: อะไรจะเป็นสำนวนหรือแนะนำวิธีการใช้รายการเชื่อมโยงทวีคูณ (หรืออื่น ๆ ที่เชื่อมโยงทวีคูณหรือโครงสร้างข้อมูลแบบวงกลม) และการดำเนินงานในภาษาที่สนับสนุนและสนับสนุนสำหรับโครงสร้างข้อมูลที่ไม่เปลี่ยนรูปแบบ (Haskell, Clojure เป็นต้น) ? โดยเฉพาะอย่างยิ่งวิธีการใช้การอัปเดตในสถานที่ซึ่งภาษาต้องห้ามอย่างเป็นทางการ? ฉันสามารถจินตนาการได้อย่างง่ายดายว่าหากมีการดำเนินการในท้องถิ่นในรายการที่ลิงก์ซ้ำกัน (หากมีการแทรกรายการไว้) อาจไม่จำเป็นต้องคัดลอกรายการทั้งหมดทันทีเนื่องจากความเกียจคร้านของภาษา อย่างไรก็ตามเนื่องจากรายการมีการเชื่อมโยงเป็นสองเท่าหากมีการแก้ไขในที่เดียวจึงไม่มีโหนดเก่าที่สามารถใช้ในรายการเวอร์ชันใหม่และพวกเขาจะต้องทำเครื่องหมายคัดลอกคัดลอกเก็บขยะไม่ช้า . เห็นได้ชัดว่าสิ่งเหล่านี้เป็นการดำเนินการที่ซ้ำซ้อนหากจะใช้เฉพาะสำเนาที่ปรับปรุงแล้วของรายการ แต่พวกเขาจะเพิ่มสัดส่วน "ค่าใช้จ่าย" ตามขนาดของรายการ นี่หมายความว่าสำหรับงานดังกล่าวข้อมูลที่ไม่เปลี่ยนรูปแบบนั้นไม่เหมาะสมและภาษาที่ประกาศได้โดยไม่ต้องมีการสนับสนุน "ดั้งเดิม" สำหรับข้อมูลที่ไม่แน่นอนไม่ดีเท่าที่จำเป็นหรือไม่? หรือมีวิธีแก้ปัญหาที่ยุ่งยากบ้างไหม? ป.ล. ฉันได้พบบทความและงานนำเสนอบางอย่างเกี่ยวกับเรื่องนี้ในอินเทอร์เน็ต แต่มีความยากลำบากในการติดตามพวกเขาในขณะที่ฉันคิดว่าคำตอบของคำถามนี้ไม่ควรใช้มากกว่าหนึ่งย่อหน้าและอาจเป็นไดอะแกรม ... ฉันหมายถึงถ้ามี ไม่มีวิธีแก้ปัญหา "ฟังก์ชั่น" สำหรับปัญหานี้คำตอบน่าจะเป็น "ใช้ C" หากมีอย่างใดอย่างหนึ่งมันจะซับซ้อนแค่ไหน? คำถามที่เกี่ยวข้อง "โครงสร้างข้อมูลในการโปรแกรมเชิงฟังก์ชัน" . คำถามเฉพาะของฉันเกี่ยวกับการใช้การอัปเดตแบบแทนที่ไม่ใช้ทางเลือกที่ไม่มีประสิทธิภาพ การกลายพันธุ์ภายในของโครงสร้างข้อมูลถาวร " . ดูเหมือนจะเน้นไปที่การใช้งานในระดับต่ำในภาษาที่ไม่ได้ระบุในขณะที่คำถามของฉันเกี่ยวกับการเลือกภาษาที่ถูกต้อง (การใช้งานหรืออื่น ๆ …

2
การแบ่งปันรหัส angularJS ข้ามแอพไฮบริดไอออนิกและเว็บไซต์มือถือทั่วไป
ตกลงดังนั้นใน 'ห้องแล็บนวัตกรรม' ของเราในปัจจุบันมีการผลักดันให้ใช้ Ionic ซึ่งเป็นเฟรมเวิร์กแอพไฮบริดที่สร้างขึ้นบน Cordova สำหรับการเข้าถึงดั้งเดิมและ angularJS สำหรับ 'รหัสเว็บ' นอกจากนี้ยังมีบางโปรเจ็กต์ที่เป็นเว็บบนมือถือแท้โดยใช้ Angular + bootstrap สำหรับการออกแบบที่ตอบสนองได้ สิ่งที่เป็นโครงการบางโครงการที่กำลังจะมาถึงจะต้องมีทั้งเว็บไซต์มือถือและแอพพื้นฐาน (อิออนไฮบริด) คุณสมบัติและหน้าจอส่วนใหญ่จะเหมือนกันแชร์แบ็คเอนด์และ UI ส่วนใหญ่ แต่ก็ยังมีความแตกต่างอยู่บ้าง ดังนั้นคำถามของฉันคือ วิธีสร้างสถาปัตยกรรมโครงการเพื่อให้สามารถเป็นทั้งโครงการไอออนิกและเว็บไซต์เชิงมุมปกติที่มีวิธีการปรับใช้ที่แตกต่างกัน 2 แบบ โค้ดส่วนใหญ่จะถูกนำกลับมาใช้ใหม่ แต่บางมุมมองสำหรับเว็บไซต์มือถือและบางมุมมองสำหรับแอปไฮบริด (ใช้ส่วนประกอบและแบบแผนดั้งเดิมมากขึ้น) อาจมีความแตกต่างของเส้นทางเช่นกัน นั่นเป็นความคิดที่ดีใช่ไหม และในรหัสที่ใช้ร่วมกันมีวิธีง่ายๆที่จะรู้ว่าในกรณีใดคุณ? IF บางคำสั่งที่ไม่ได้ใช้งานอยู่นอกบริบทของพวกเขา ฯลฯ รู้สึกเหมือนมีลิงค์ที่ขาดหายบางประเภทที่ฉันอาจไม่รู้ ขอบคุณล่วงหน้า.

2
การผูกปลายเชิงวัตถุ
ในคำจำกัดความของอลันเคย์ที่เน้นวัตถุมีคำจำกัดความนี้บางส่วนที่ฉันไม่เข้าใจ: OOP สำหรับฉันหมายถึงเพียงการส่งข้อความการเก็บรักษาในท้องถิ่นและการป้องกันและการซ่อนกระบวนการของรัฐและการผูกมัดขั้นสุดท้ายของทุกสิ่ง แต่ "LateBinding" หมายถึงอะไร ฉันจะใช้สิ่งนี้กับภาษาอย่าง C # ได้อย่างไร และทำไมเรื่องนี้สำคัญมาก

9
ฉันเข้าใจว่าตัวชี้แบบสแต็คคืออะไร แต่ใช้เพื่ออะไร
ตัวชี้สแต็กชี้ไปที่ด้านบนของสแต็กซึ่งเก็บข้อมูลเกี่ยวกับสิ่งที่เราเรียกว่า "LIFO" เพื่อขโมยความคล้ายคลึงของคนอื่นมันเหมือนกับกองอาหารที่คุณใส่และนำไปปรุงอาหารที่ด้านบน ตัวชี้สแต็ก OTOH ชี้ไปที่ "จาน" ด้านบนของสแต็ก อย่างน้อยมันก็เป็นจริงสำหรับ x86 แต่ทำไมคอมพิวเตอร์ / โปรแกรม "สนใจ" ตัวชี้สแต็คชี้ไปที่อะไร? กล่าวอีกนัยหนึ่งจุดประสงค์อะไรที่มีตัวชี้สแต็กและการรู้ว่าจะให้บริการที่ใด คำอธิบายที่เข้าใจได้โดยโปรแกรมเมอร์ C จะได้รับการชื่นชม
11 stack  x86 

1
globals แบบคงที่และเนมสเปซที่ไม่ระบุชื่อใน C ++
เหตุใด C ++ จึงสร้างความแตกต่างระหว่างสถิตแบบคงที่ (การเชื่อมโยงภายใน) และสัญลักษณ์ในเนมสเปซที่ไม่มีชื่อ (การเชื่อมโยงภายนอก แต่ไม่มีวิธีการอ้างถึงจากภายนอกอย่างไรก็ตาม) เหตุผลเหล่านี้ยังคงใช้ได้หรือมีเหตุผลใหม่หรือไม่? มีสถานที่ใดบ้างที่ยังคงแตกต่างกันไป แต่ต้องมีกฎเกณฑ์ที่สหภาพนิรนามทั่วโลก (หรือขอบเขตของเนมสเปซ)staticที่ไม่ระบุชื่อและต้องเป็นอะไร สำหรับคะแนนโบนัสหากไม่มีเหตุผลดีๆที่ทำให้พวกเขาแตกต่างกันมีการขอให้เทียบเท่าหรือไม่? เมื่อ C ++ แนะนำเนมสเปซ (C ++ 98) และเนมสเปซที่ไม่มีชื่อโดยเฉพาะรูปทรงแบบคงที่ถูกเลิกใช้แล้วล้าสมัยและด้อยกว่าสิ่งใหม่ในความกระตือรือร้นแม้ว่ามันจะถูกเปลี่ยนกลับด้วย C ++ 11 : การ คัดค้านคำสำคัญ ... ไม่มาก ก่อน C ++ 11 สัญลักษณ์ที่มีการเชื่อมโยงภายในไม่สามารถใช้เป็นอาร์กิวเมนต์ของเทมเพลต: ทำไม C ++ 03 จึงต้องการให้พารามิเตอร์เทมเพลตมีการเชื่อมโยงภายนอก

5
ขอบเขตระดับแพ็กเกจ Java มีประโยชน์หรือไม่
ฉันเข้าใจความคิดเกี่ยวกับขอบเขตของแพ็คเกจและบางครั้งฉันก็คิดว่าฉันต้องการมัน อย่างไรก็ตามทุกครั้งที่ฉันตั้งใจจะลองใช้มันฉันพบว่ามันไม่ตรงกับความต้องการที่ฉันคิดว่าจะให้บริการ ปัญหาหลักของฉันมักจะเป็นสิ่งที่ฉันต้องการ จำกัด ขอบเขตไม่เคยอยู่ในแพ็คเกจเดียวกัน พวกเขาอาจเชื่อมโยงแนวความคิดทั้งหมด แต่การแบ่งตรรกะของข้อมูลภายในแอปพลิเคชันมีพวกเขาเป็นแพคเกจลูกที่แยกต่างหากของแพคเกจขนาดใหญ่ เช่นฉันอาจมีแบบจำลอง Mission และฉันต้องการเครื่องมือ Mission อื่น ๆ เท่านั้นเช่น MissionServices ของฉันเพื่อใช้วิธีการบางอย่าง อย่างไรก็ตามฉันลงเอยด้วย Missions.models และ Missions.services เป็นแพ็คเกจของฉันดังนั้น MissionModel และ MissionService จึงไม่ใช่ขอบเขตของแพ็คเกจเดียวกัน ดูเหมือนว่าจะไม่มีสถานการณ์ที่แพคเกจบรรจุสิ่งที่ฉันต้องการให้มีสิทธิ์ในการยกระดับอย่างเหมาะสมโดยไม่ต้องมีหลายสิ่งที่ฉันไม่ต้องการได้รับสิทธิ์เหล่านั้น และฉันไม่ค่อยรู้สึกถึงประโยชน์ของการกำหนดขอบเขตของวิธีการที่จะปรับเปลี่ยนสถาปัตยกรรมโปรเจคของฉันให้วางทุกอย่างในแพ็คเกจเดียวกัน บ่อยครั้งที่มุมมองหรือการผกผันของการควบคุมบางอย่างกลับกลายเป็นวิธีที่ดีกว่าสำหรับปัญหาใด ๆ ที่ฉันพิจารณาโดยย่อว่าการกำหนดขอบเขตของแพ็กเกจ ฉันอยากรู้ว่านี่เป็นเรื่องจริงสำหรับนักพัฒนา Java ทุกคนหรือเป็นเพียงความบังเอิญของงานที่ฉันทำ ขอบเขตของแพ็คเกจมีการใช้งานมากในโลกแห่งความเป็นจริงหรือไม่? มีหลายกรณีที่มีการพิจารณาว่าเป็นรูปแบบที่ดีต่อการใช้งานหรือเป็นส่วนใหญ่ที่เห็นว่าเป็นพฤติกรรมดั้งเดิมที่ไม่ค่อยถูกใช้ประโยชน์ในการพัฒนาสมัยใหม่หรือไม่? ฉันไม่ได้ถามอะไรเกี่ยวกับสาเหตุที่ขอบเขตส่วนบุคคลของแพคเกจเป็นค่าเริ่มต้นฉันกำลังถามว่าควรใช้เมื่อใดโดยไม่คำนึงถึงค่าเริ่มต้น การอภิปรายส่วนใหญ่เกี่ยวกับสาเหตุที่เป็นค่าเริ่มต้นไม่ได้เข้าจริงๆเมื่อขอบเขตของแพคเกจมีประโยชน์จริง ๆ แทนที่จะเถียงเพียงเพราะเหตุที่ขอบเขตที่ใช้กันทั่วไปอีกสองอันไม่ควรเป็นค่าเริ่มต้นดังนั้นแพ็คเกจชนะโดยกระบวนการกำจัด นอกจากนี้คำถามของฉันเป็นเรื่องเกี่ยวกับปัจจุบันรัฐในการพัฒนา โดยเฉพาะอย่างยิ่งเราได้พัฒนาจนถึงจุดที่เครื่องมือและกระบวนทัศน์อื่นทำให้ขอบเขตของแพคเกจมีประโยชน์น้อยลงจากนั้นก็กลับมาเมื่อการตัดสินใจเพื่อให้เป็นค่าเริ่มต้น
11 java  scope 

1
แนะนำคำขอดึงสำหรับทีม 2 คน - รวมคำขอของฉันเองหรือ
ฉันแนะนำคอมไพล์ให้กับสมาชิกในทีมจูเนียร์ (Co-op) ตอนนี้พวกเขามีความสะดวกสบายกับพื้นฐานของการเพิ่มกระทำการผลักและดึง ตอนนี้ฉันต้องการแนะนำพวกเขาเพื่อดึงคำขอและสาขา หากพวกเขาเริ่มทำคำขอดึงในสาขาฉันควรทำเช่นเดียวกันสำหรับการทำงานอย่างต่อเนื่องของฉัน? ฉันจะเป็นหนึ่งในการรวมคำขอดึงของพวกเขามาฉันไม่แน่ใจว่ามันจะทำให้รู้สึกมากที่สุดสำหรับฉันที่จะทำงานในสาขา (โดยทั่วไปการปฏิบัติที่ดีฉันรู้ แต่ฉันอยากรู้เกี่ยวกับสถานการณ์เฉพาะ 2 devs กับจูเนียร์หนึ่ง ) และถ้าเป็นเช่นนั้นหมายความว่าฉันจะรวมสาขาของตัวเองเป็นเจ้านาย ฉันจะทำคำขอดึงสำหรับงาน / สาขาของฉันด้วยหรือไม่? โดยทั่วไปเราใช้ขั้นตอนการทำงานของ GitHub คุณสมบัติขั้นต้นสำหรับการเปลี่ยนแปลงเหล่านี้: https://www.atlassian.com/git/tutorials/comparing-workflows/feature-branch-workflow มีวัตถุประสงค์ในการใช้คำขอดึงบน repo ของฉันเองหรือไม่ถ้าฉันเป็นนักพัฒนาซอฟต์แวร์คนเดียว? มีประโยชน์ แต่ไม่ค่อยมีความเจาะจง ขั้นตอนการทำงานกับคน 2 คนในโครงการดูเหมือนจะเป็นเรื่องทั่วไปมากขึ้น และ ฉันควรเปิดคำขอดึงจากสาขาใน repo อย่างเป็นทางการหรือทางแยกของฉัน? ดูเหมือนจะเกี่ยวกับส้อม

1
โครงสร้างอัลกอริทึม / ข้อมูลเพื่อตอบ“ ฉันสามารถทำสูตรอะไรได้บ้างกับชุดส่วนผสมนี้”
เป็นทางการให้s ( U , Q ) = { V | V ∈ UและV ⊆ Q } โดยที่U , Q , และVทั้งหมดเป็นตัวแทนของชุดและUโดยเฉพาะเจาะจงมากขึ้นแสดงชุดของชุด เพื่อเป็นตัวอย่างคุณอาจเป็นชุดของส่วนผสม (ชุด) ที่จำเป็นสำหรับสูตรอาหารต่าง ๆ ในตำราอาหารที่มีQแทนชุดส่วนผสมที่ฉันมีVแทนสูตรที่ฉันสามารถทำกับส่วนผสมเหล่านั้นได้ แบบสอบถามs ( U , Q) สอดคล้องกับคำถาม "ฉันสามารถทำอะไรกับส่วนผสมเหล่านี้ได้บ้าง?" สิ่งที่ฉันกำลังมองหาคือการแสดงข้อมูลที่ดัชนีUในลักษณะที่สนับสนุนการสืบค้นที่มีประสิทธิภาพของs ( U , Q ) โดยที่Qและสมาชิกทั้งหมดของUจะมีขนาดเล็กเมื่อเทียบกับสหภาพของสมาชิกทั้งหมดของU . นอกจากนี้ฉันต้องการให้อัปเดตUอย่างมีประสิทธิภาพ(เช่นเพิ่มหรือลบสูตรอาหาร) ฉันไม่สามารถช่วยได้ แต่คิดว่าปัญหานี้ต้องเข้าใจดี แต่ฉันไม่สามารถหาชื่อหรือข้อมูลอ้างอิงได้ ใครบ้างรู้กลยุทธ์ในการแก้ปัญหานี้อย่างมีประสิทธิภาพหรือสถานที่ที่ฉันสามารถอ่านเพิ่มเติมเกี่ยวกับเรื่องนี้? เท่าที่ความคิดเกี่ยวกับการแก้ปัญหาหนึ่งคิดว่าผมคือการสร้างต้นไม้ตัดสินใจสำหรับชุดU ที่แต่ละโหนดในต้นไม้คำถาม "รายการส่วนผสมของคุณมีxหรือไม่" จะถูกถามด้วยx …

4
การลดสำเร็จรูปในชั้นเรียนที่ใช้ส่วนต่อประสานผ่านองค์ประกอบ
ฉันได้เรียน: Aว่าเป็นคอมโพสิตของจำนวนของชั้นเรียนขนาดเล็กB, และCD B, CและDใช้อินเตอร์เฟซIB, ICและIDตามลำดับ ตั้งแต่AรองรับทุกการทำงานของB, CและD, AการดำเนินการIB, ICและIDเช่นกัน แต่นี้โชคไม่ดีที่นำไปสู่การเป็นจำนวนมากเส้นทางใหม่ในการดำเนินการA ชอบมาก interface IB { int Foo {get;} } public class B : IB { public int Foo {get {return 5;}} } interface IC { void Bar(); } public class C : IC { public void Bar() { } } …

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

2
จะทำการเชื่อมต่อฐานข้อมูลทั่วไปสำหรับชั้นเรียนของฉันได้ที่ไหน
ฉันมีหลายคลาส (Repositories) ซึ่งทำหน้าที่ในการบันทึก / ดึงข้อมูลวัตถุบางอย่างใน / จากฐานข้อมูล; พวกเขาทั้งหมดต้องสร้างการเชื่อมต่อกับฐานข้อมูลเดียว ฉันคิดว่าเพื่อหลีกเลี่ยงการนิยามใหม่ConnectionStringและSqlConnectionในแต่ละชั้นเรียนให้ผ่านการเชื่อมต่อแบบเปิดกับพวกเขา เมื่อใดที่ / เวลาที่ดีที่สุดในการกำหนด / เปิดการเชื่อมต่อนั้นและส่งผ่านไปยังชั้นเรียนคืออะไร? มีวิธี / รูปแบบที่ดีกว่าในการเข้าถึงทรัพยากรทั่วไปนี้หรือไม่?
11 c#  sql  class-design 

6
อัลกอริทึมสำหรับ UI ที่แสดงแถบเลื่อนเปอร์เซ็นต์ X ซึ่งค่าที่เชื่อมโยงรวมอยู่เสมอ 100%
ระบบที่ฉันสร้างประกอบด้วยชุดของตัวเลื่อน UI (จำนวนแตกต่างกัน) แต่ละตัวมีระดับ 0-100 โดยตัวเลื่อนฉันหมายถึง UI ที่คุณจับองค์ประกอบและลากขึ้นและลงเช่นการควบคุมระดับเสียง พวกเขาเชื่อมต่อกันด้วยอัลกอริทึมที่ช่วยให้มั่นใจว่าพวกเขาจะรวม 100 เสมอดังนั้นเมื่อเลื่อนหนึ่งเลื่อนขึ้นอื่น ๆ ทั้งหมดเลื่อนลงในที่สุดถึงศูนย์ เมื่อคนหนึ่งถูกเลื่อนลงคนอื่น ๆ ก็จะขยับขึ้น ทุกครั้งที่ผลรวมจะต้องเป็น 100 ดังนั้นที่นี่เลื่อนมีค่าต่าง ๆ แต่พวกเขารวม 100%: ----O------ 40 O---------- 0 --O-------- 20 --O-------- 20 --O-------- 20 หากตัวเลื่อนแรกเลื่อนขึ้นจาก 40 เป็น 70 ตัวเลื่อนอื่น ๆ จะต้องเลื่อนลงตามค่า (เนื่องจากตัวเลื่อนถูกลาก) หมายเหตุสามสไลเดอร์เปลี่ยนจาก 20 เป็น 10 และหนึ่งอยู่ที่ศูนย์เนื่องจากไม่สามารถลดลงได้ -------O--- 70 O---------- 0 -O--------- …
11 algorithms  gui  ui 

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