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

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

5
จะอ้างถึง ByRef และ ByVal ในฉลากแบบเลื่อนลงได้อย่างไร [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน4 ปีที่แล้ว MSDNหน้าByRefและByValคำหลักที่ไม่เป็นประโยชน์มาก ยกเว้นว่าฉันจะข้ามไปพวกเขาจะถูกเรียกว่า "คำหลัก" ทุกที่ หนึ่งในผู้สนับสนุนหลักของโครงการRubberduckกำลังทำงานในการปรับโครงสร้างEncapsulate Field ที่น่าสนใจมากและ UI ก็เข้ากันได้ดีมาก .. ยกเว้นฉันมีปัญหากับป้ายกำกับด้านบนรายการแบบเลื่อนลงสำหรับByRef/ ByValซึ่งระบุว่า "การเข้าถึง": ฉันไม่ชอบ "การเข้าถึง" เพราะฉันใช้ที่อื่นเพื่อPublic/ Private/ Friendเข้าถึงตัวดัดแปลงที่ให้ความรู้สึกแม่นยำมากขึ้น ฉันไม่ต้องการใช้ "ตัวแก้ไข" เนื่องจาก IMO เป็นเพียงย่อสำหรับ "ตัวดัดแปลงการเข้าถึง" ฉันต้องการให้ป้ายกำกับนั้นถูกต้อง แต่ดูเหมือนว่าคำศัพท์ของฉันจะขาดหายไปและฉันไม่รู้ว่าจะเรียกคำหลักเหล่านี้ว่าอะไร ป้ายกำกับนี้ควรบอกว่าอะไรว่าถูกต้อง คำที่ฉันกำลังมองหาคืออะไร? "ครอบครัวของคำหลัก" ทำByRef/ ByValเป็นของอะไร
9 naming  ui  vba 

3
มี CPU ที่ดำเนินการเพิ่มประสิทธิภาพการเขียนแคช L1 ที่เป็นไปได้หรือไม่
เมื่อ CPU ที่มีแคช L1 ทำการเขียนสิ่งที่เกิดขึ้นตามปกติคือ (สมมติว่าบรรทัดแคชที่กำลังเขียนอยู่ในแคช L1 อยู่แล้ว) แคช (นอกเหนือจากการอัปเดตข้อมูล) ทำเครื่องหมายว่าบรรทัดแคชนั้นสกปรก และจะเขียนบรรทัดที่มีข้อมูลที่ปรับปรุงในภายหลัง การปรับให้เหมาะสมอย่างหนึ่งที่เป็นไปได้คือให้แคชเปรียบเทียบเนื้อหาของการเขียนและเนื้อหาก่อนหน้าของแคชและถ้ามันเหมือนกันอย่าทำเครื่องหมายบรรทัดว่าสกปรก เนื่องจากสิ่งนี้อาจทำให้แคชสามารถหลีกเลี่ยงการเขียนกลับในบางโอกาสฉันสามารถดูว่าผู้ผลิต CPU อาจเห็นสิ่งนี้ว่าคุ้มค่ากับประตูที่ต้องใช้ในการทำตรรกะนี้ คำถามของฉัน: มีซีพียูที่ทำงานเพิ่มประสิทธิภาพนี้หรือไม่? ข้อมูลพื้นฐานเกี่ยวกับสาเหตุที่ฉันถาม: ฉันกำลังเขียนโค้ดบางอย่างที่จำเป็นต้องมีการเข้าถึงหน่วยความจำคงที่ นั่นคือคนที่สามารถฟังพฤติกรรมของแคชไม่ควรอนุมานสิ่งที่ฉันทำ การเข้าถึงของฉันบางอย่างเป็นการเขียนและวิธีที่ชัดเจนในการใช้รหัสนี้การเขียนจำนวนมากจะเขียนข้อมูลเดียวกันกับที่มีอยู่แล้ว ฉันต้องทำการเขียนเพราะขึ้นอยู่กับข้อมูลข้อมูลที่ฉันเขียนอาจจะเหมือนกันหรือไม่เหมือนกันและเป็นสิ่งสำคัญที่จะต้องดำเนินการเดียวกันโดยไม่คำนึงถึง หาก CPU ปรับให้เหมาะสมโดยการไม่เขียน 'no-change-write' นั่นหมายความว่าพฤติกรรมของแคชจะแตกต่างกันไปขึ้นอยู่กับสิ่งที่ฉันทำซึ่งจะทำลายเป้าหมายของฉัน ดังนั้นมี CPU ที่พยายามเพิ่มประสิทธิภาพการเขียนด้วยวิธีนี้หรือไม่
9 caching  cpu 

1
เมื่องานอะซิงโครนัสทำให้ UX ไม่ดี
ฉันกำลังเขียน COM add-in ที่ขยาย IDE ที่ต้องการอย่างยิ่ง มีคุณสมบัติหลายอย่างที่เกี่ยวข้อง แต่ให้แคบลงเป็น 2 เพื่อประโยชน์ของโพสต์นี้: มีเครื่องมือExplorer ในหน้าต่างที่แสดงมุมมองแบบต้นไม้ที่ช่วยให้ผู้ใช้นำทางโมดูลและสมาชิกของพวกเขา มีเครื่องมือตรวจสอบรหัสหน้าต่างที่แสดงDataGridviewที่ให้ผู้ใช้สำรวจปัญหารหัสและแก้ไขให้โดยอัตโนมัติ เครื่องมือทั้งสองมีปุ่ม "รีเฟรช" ที่เริ่มงานแบบอะซิงโครนัสที่แยกวิเคราะห์รหัสทั้งหมดในโครงการที่เปิดอยู่ทั้งหมด รหัส Explorer ที่ใช้ผลการแจงการสร้างTreeViewและรหัสการตรวจสอบการใช้ผลการแจงที่จะพบปัญหารหัสและแสดงผลลัพธ์ในของDataGridView สิ่งที่ฉันพยายามที่จะทำที่นี่คือการแบ่งปันผลแยกระหว่างคุณสมบัติเพื่อที่ว่าเมื่อรหัส Explorer ในการรีเฟรชแล้วรหัสการตรวจสอบรู้เกี่ยวกับมันและสามารถฟื้นฟูตัวเองได้โดยไม่ต้องทำซ้ำการทำงานแยกว่ารหัส Explorer ที่ก็ไม่ได้ . ดังนั้นสิ่งที่ฉันทำฉันทำให้ parser class เป็นผู้ให้บริการเหตุการณ์ที่คุณสมบัติสามารถลงทะเบียนได้ที่: private void _parser_ParseCompleted(object sender, ParseCompletedEventArgs e) { Control.Invoke((MethodInvoker) delegate { Control.SolutionTree.Nodes.Clear(); foreach (var result in e.ParseResults) { var node = new …

1
ความแม่นยำโดยนัยของฟังก์ชันเลขทศนิยม
ในขณะที่ตรวจสอบการใช้งานฟังก์ชั่นของโปรแกรมเมอร์อื่นเพื่อคำนวณ CDF การแจกแจงแบบปกติฉันได้แนะนำให้แทนที่การใช้งานทั้งหมดด้วยฟังก์ชันในตัวของ Python หรือใช้ SciPy ซึ่งเป็นห้องสมุดวิทยาศาสตร์ทั่วไป โปรแกรมเมอร์อีกชี้ให้เห็นว่าค่าmath.erfc()มิได้scipy.stats.norm.cdf()ให้การค้ำประกันความแม่นยำใด ๆ ในเอกสารของพวกเขา ดังนั้นฉันจึงควรระมัดระวังเกี่ยวกับการเปลี่ยนอัลกอริทึมการประมาณ (ซึ่งนำมาจากแหล่งที่ได้รับการเคารพและมีขอบเขตข้อผิดพลาดที่เป็นเอกสาร ) ความจริงแล้วความคิดที่จะสงสัยความถูกต้องและแม่นยำของฟังก์ชั่นในตัวหรือห้องสมุดไม่เคยข้ามความคิดของฉัน หลังจากที่ทุกคนฉันได้รับการเรียกฟังก์ชั่นเหมือนsin()และsqrt()สำหรับปีโดยไม่ต้องคิดมาก - เหตุผลที่ควรmath.erf()หรือscipy.stats.norm.cdf()จะแตกต่างกันหรือไม่? แต่ตอนนี้ฉันกังวล คำถามของฉันคือ: โดยทั่วไปหากเอกสารไม่มีการกล่าวถึงเป็นพิเศษแสดงว่าฟังก์ชั่นเหล่านี้มีความถูกต้องสมบูรณ์ในตำแหน่งทศนิยมสุดท้ายภายในความแม่นยำที่นำเสนอโดยทศนิยมความแม่นยำสองเท่าของ IEEE หรือไม่? นั่นเป็นเรื่องจริงสำหรับ Python math.erf()หรือ SciPy scipy.stats.norm.cdf()หรือไม่? คุณจะบอกได้อย่างไร นี้หน้าคนสำหรับsin()กล่าวว่า ... ฟังก์ชั่นเหล่านี้อาจสูญเสียความแม่นยำเมื่อข้อโต้แย้งของพวกเขาอยู่ใกล้กับหลาย pi หรืออยู่ห่างจาก 0.0 ทำไมคำเตือนควรมีอยู่เมื่อฟังก์ชันไซน์เป็นคาบและสมมาตร ดูเหมือนว่าจะมีภาระที่ผู้เรียกเข้ารับการป้อนข้อมูลเป็นมาตรฐานเพื่อให้ได้ความแม่นยำสูงสุด ในทางตรงกันข้ามเอกสารของ Mozilla สำหรับMath.sin()บอกว่าไม่มีอะไรเกี่ยวกับความถูกต้องหรือความแม่นยำ นั่นหมายความว่ามันถูกต้องสมบูรณ์หรือเป็น "ความรู้ทั่วไป" ที่Math.sin()จะแม่นยำในบางสถานการณ์ใน JavaScript เช่นที่อื่นหรือไม่

8
รายการลำดับความสำคัญของงานที่เก็บไว้ในฐานข้อมูล
ฉันพยายามคิดถึงวิธีที่ดีที่สุดในการทำสิ่งต่อไปนี้: ฉันมีรายการงานที่จัดเก็บในฐานข้อมูล งานมีลำดับความสำคัญที่กำหนดไว้ คุณสามารถเปลี่ยนลำดับความสำคัญของงานเพื่อจัดลำดับใหม่ที่ควรดำเนินการ ฉันกำลังคิดถึงบางสิ่งที่คล้ายกับ Pivotal Tracker ดังนั้นลองจินตนาการว่าเรามีสิ่งต่อไปนี้: 1 Task A 2 Task B 3 Task C 4 Task D 5 Task E เราตัดสินใจว่า E เป็นภารกิจที่สำคัญที่สุดแล้ว 1 Task E 2 Task A 3 Task B 4 Task C 5 Task D ฉันต้องการอัปเดตงานทั้งหมด 5 รายการเพื่อให้ลำดับความสำคัญใหม่แก่พวกเขา ถ้า Task B มีความสำคัญมากกว่า AI ก็จะมี …

13
ฉันควรมีทักษะกี่รายการในประวัติย่อของฉัน [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นหัวข้อสำหรับ Software Engineering Stack Exchange ปิดให้บริการใน5 ปีที่ผ่านมา ฉันเป็นโปรแกรมเมอร์บำรุงรักษาและฉันทำงานกับรายการเทคโนโลยีที่ค่อนข้างใหญ่ทุกเดือนหากไม่ใช่ทุกวัน ตัวอย่างเช่นฉันมีความสามารถ (ไม่ใช่ผู้เชี่ยวชาญ) ในภาษาต่อไปนี้: Java (รวมถึง J2EE) ค# VB6 ASP คลาสสิก เมื่อฉันไปทำงานในเรซูเม่ของฉันฉันควรแสดงรายการเทคโนโลยีกี่รายการ ดูเหมือนไม่มีจุดหมายหรือมีปัญหาในการแสดงรายการทั้งหมด ฉันไม่ชอบการอ่านรายการเทคโนโลยีมากมายเมื่อฉันอ่านประวัติย่อ ฉันควรระบุจำนวนเท่าไรและเลือกได้อย่างไร?
9 resume 

3
Clang / LLVM พร้อมสำหรับช่วงไพร์มหรือไม่? [ปิด]
ตามที่เป็นอยู่ในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบคำถาม & คำตอบของเรา เราคาดหวังว่าคำตอบจะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้อาจเรียกร้องให้มีการอภิปรายโต้แย้งโต้แย้งหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงและเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อขอคำแนะนำ ปิดให้บริการใน6 ปีที่ผ่านมา เสียงดังกราวสามารถใช้แทน gcc? ประสบการณ์ของคุณเกี่ยวกับสิ่งนั้น? มีข้อเสียอะไรบ้าง? ประสิทธิภาพของการคอมไพล์ดีกว่า gcc มาก แต่ประสิทธิภาพของโค้ดที่สร้างขึ้นเมื่อรันมัน? มีเครื่องมือที่ดีเป็น front-end (IDE) ให้ทำงานบน Linux หรือ Windows หรือไม่? แก้ไข: ฉันหมายถึงคอมไพเลอร์ C C ++ มันยังไม่ค่อยดีเท่าไหร่

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

4
การเปลี่ยนชื่อวิธีรักษาการห่อหุ้มได้หรือไม่?
ฉันกำลังอ่านหน้านี้เกี่ยวกับเมื่อ getters / setters เป็นธรรมและ OP ให้ตัวอย่างรหัสต่อไปนี้: class Fridge { int cheese; void set_cheese(int _cheese) { cheese = _cheese; } int get_cheese() { return cheese; } } void go_shopping(Fridge fridge) { fridge.set_cheese(fridge.get_cheese() + 5); } ยอมรับคำตอบรัฐ: โดยวิธีการในตัวอย่างของคุณ, ฉันจะให้ชั้นและวิธีการแทนและ จากนั้นคุณจะยังคงมีการห่อหุ้มFridgeputCheese()takeCheese()get_cheese()set_cheese() การห่อหุ้มนั้นถูกเก็บรักษาไว้อย่างไรโดยการเปลี่ยนชื่อจากรับ / ตั้งค่าเป็นputCheese()/ takeCheese()คุณเห็นได้ชัดว่าได้รับ / ตั้งค่าดังนั้นทำไมไม่ปล่อยไว้เป็นรับ / ตั้งค่า? ในคำตอบเดียวกันมันยังระบุ: มี getters …

5
แนวปฏิบัติที่ดีที่สุด - การห่อถ้ารอบ ๆ การเรียกใช้ฟังก์ชัน vs การเพิ่มการออกก่อนหน้าถ้าการป้องกันในการทำงาน
ฉันรู้ว่านี่สามารถใช้เฉพาะกรณีได้ แต่ฉันพบว่าตัวเองสงสัยว่าสิ่งนี้บ่อยเกินไป มีไวยากรณ์ที่ต้องการโดยทั่วไปหรือไม่ ฉันไม่ได้ถามว่าอะไรคือวิธีที่ดีที่สุดเมื่ออยู่ในฟังก์ชั่นฉันกำลังถามว่าฉันควรออกจากเร็วหรือควรจะไม่เรียกฟังก์ชั่นนี้ Wrap ถ้าเรียกฟังก์ชันรอบ if (shouldThisRun) { runFunction(); } มีฟังก์ชั่นif ( guard ) runFunction() { if (!shouldThisRun) return; } ตัวเลือกหลังมีความเป็นไปได้ที่จะลดความซ้ำซ้อนของรหัสหากฟังก์ชั่นนี้เรียกว่าหลายครั้ง แต่บางครั้งมันก็รู้สึกผิดที่จะเพิ่มเข้าไปที่นี่แล้วคุณอาจสูญเสียความรับผิดชอบเดียวของฟังก์ชั่น นี่เป็นตัวอย่าง ถ้าฉันมีฟังก์ชั่น updateStatus () ที่จะอัพเดทสถานะของบางสิ่ง ฉันต้องการเฉพาะสถานะที่อัปเดตหากมีการเปลี่ยนแปลงสถานะ ฉันรู้ว่าสถานที่ในรหัสของฉันที่สถานะมีศักยภาพในการเปลี่ยนแปลงและฉันรู้ว่าสถานที่อื่น ๆ ที่มีการเปลี่ยนแปลงท้าทาย ฉันไม่แน่ใจว่ามันเป็นแค่ฉันหรือเปล่า แต่มันก็ค่อนข้างสกปรกที่จะตรวจสอบฟังก์ชั่นภายในเพราะฉันต้องการให้ฟังก์ชั่นนี้บริสุทธิ์ที่สุดเท่าที่จะเป็นไปได้ - ถ้าฉันเรียกมันว่าฉันคาดว่าสถานะจะได้รับการอัพเดต แต่ฉันไม่สามารถบอกได้ว่าจะดีกว่าที่จะวางสายในสถานที่ไม่กี่แห่งที่ฉันรู้ว่ามีศักยภาพที่จะไม่เปลี่ยนแปลง

7
การทดสอบแบบ end-to-end และการรวมเข้าด้วยกันนั้นคุ้มค่าสำหรับสิ่งที่ไม่ใช่ภารกิจหรือไม่?
เป็นที่ทราบกันดีว่าการทดสอบแบบครบวงจรและการรวมระบบนั้นมีค่าใช้จ่ายสูง แน่นอนว่าถ้าเราพัฒนาแอพพลิเคชั่นที่ผู้คนอาจตายถ้าสิ่งผิดพลาดมันเป็นการลงทุนที่คุ้มค่า อย่างไรก็ตามในแอปพลิเคชันที่มีข้อผิดพลาดไม่ใช่จุดจบของโลกจะไม่ถูกกว่าที่จะข้ามการทดสอบ E2E และการทดสอบการรวมเข้าด้วยกันและแทนที่จะจัดทำแผนสำรองหากมีอะไรผิดพลาด ชอบคือการทดสอบด้วยตนเองของเรื่องราวของผู้ใช้ + การทดสอบหน่วย + โดยใช้ภาษาที่พิมพ์แบบคงที่เพียงพอหรือไม่ เช่นหากร้านค้าบนเว็บสั่งซื้อสินค้าสูญหายพวกเขาสามารถส่งสินค้าฟรี + สินค้าอื่นเป็นคำขอโทษแทน ผู้ใช้ปลายทางอาจมีความสุขมากกว่าเดิมและ บริษัท โดยรวมจะช่วยประหยัดเงิน ฉันเดาว่าคำถามของฉันคือโดยทั่วไปการทดสอบการรวมและการทดสอบ E2E มีค่าใช้จ่ายเท่าไหร่และประหยัดได้เท่าไหร่ มีวิธีการคำนวณความเสี่ยง / ต้นทุนสำหรับสิ่งนี้หรือไม่?
9 testing  qa  pricing  risk 

9
มรดกเทียบกับองค์ประกอบสำหรับชิ้นหมากรุก
การค้นหาอย่างรวดเร็วของ stackexchange นี้แสดงให้เห็นว่าในองค์ประกอบทั่วไปโดยทั่วไปถือว่ามีความยืดหยุ่นมากกว่าการสืบทอด แต่เช่นเคยขึ้นอยู่กับโครงการ ฯลฯ และมีหลายครั้งที่การสืบทอดเป็นตัวเลือกที่ดีกว่า ฉันต้องการสร้างเกมหมากรุกสามมิติที่แต่ละชิ้นมีตาข่ายอาจเป็นภาพเคลื่อนไหวที่แตกต่างกันไปเรื่อย ๆ ในตัวอย่างที่เป็นรูปธรรมนี้ดูเหมือนว่าคุณสามารถโต้แย้งกรณีสำหรับทั้งสองวิธีฉันผิดหรือเปล่า? การสืบทอดจะมีลักษณะเช่นนี้ (พร้อมตัวสร้างที่เหมาะสม ฯลฯ ) class BasePiece { virtual Squares GetValidMoveSquares() = 0; Mesh* mesh; // Other fields } class Pawn : public BasePiece { Squares GetValidMoveSquares() override; } ซึ่งแน่นอนว่าเป็นไปตามหลักการ "เป็น -a" ในขณะที่องค์ประกอบจะมีลักษณะเช่นนี้ class MovementComponent { virtual Squares GetValidMoveSquares() = 0; } …

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

1
“ TILT” หมายถึงอะไรในความคิดเห็น
ฉันกำลังอ่านClean Codeของ Robert C. Martin และวลีนั้นTILTลึกลับปรากฏขึ้นในตัวอย่างโค้ดบางอย่าง ตัวอย่าง (ใน Java โดยวิธี): ... public String errorMessage() { switch (status) { case ErrorCode.OK: // TILT - Should not get here. return ""; case ErrorCode.UNEXPECTED_ARGUMENT: return "Unexpected argument"; case ErrorCode.MISSING_ARGUMENT: return "Missing argument"; ... } ... จากบริบทนี้ฉันเดาTILTว่าจะกำหนดสถานะที่ไม่สามารถเข้าถึงได้และรวมไว้เพียงเพื่อทำให้คอมไพเลอร์ (ตัวอย่างเช่นในโค้ดด้านบนTILTปรากฏในErrorCode.OKกรณีเนื่องจากไม่ควรมีข้อความแสดงข้อผิดพลาดหากรัฐเป็นOK) แต่ ฉันไม่แน่ใจ. ไม่มีใครรู้ว่าสิ่งที่TILTหมายถึง / หมายถึง?

3
ฉันยังจำเป็นต้องใช้จุดคงที่เพื่อรับประกันว่าคอมพิวเตอร์จะได้ผลลัพธ์เหมือนกันสำหรับการดำเนินการทางคณิตศาสตร์อีกต่อไปหรือไม่?
ฉันบอกคอมพิวเตอร์ที่ทันสมัยที่สุดว่าเป็นไปตามมาตรฐานจุดลอยตัวเดียวกันหมายความว่าพวกเขาทุกคนจะได้รับคำตอบเดียวกันสำหรับการดำเนินการทางคณิตศาสตร์ที่กำหนดหากอินพุตเหมือนกันหรือไม่? ฉันถามเพราะฉันกำลังค้นคว้าหาข้อมูลเกี่ยวกับการสร้างเกม RTS บนเครือข่ายและการซิงค์ตำแหน่งของยูนิตนับร้อยดูเหมือนจะเป็นวิธีที่ไม่ดี ดังนั้นถ้าฉันส่งเฉพาะอินพุตเท่านั้นฉันต้องรับประกันว่าลูกค้าทั้งหมดจะได้รับผลลัพธ์เดียวกันโดยให้พวกเขาเรียกใช้การจำลองจากอินพุตเหล่านั้น ฉันอ่านว่าเกม RTS ที่เก่ากว่าใช้การคำนวณจุดคงที่ แต่ฉันไม่รู้ว่ายังคงต้องใช้กับคอมพิวเตอร์ที่ทันสมัยหรือไม่หากพวกเขาปฏิบัติตามมาตรฐานเดียวกันหรือไม่ ฉันยังบอกด้วยว่าถึงแม้จะไม่แน่ชัด แต่ผลลัพธ์ของจุดลอยตัวนั้นถูกกำหนดไว้สำหรับอินพุตเดียวกัน คอมพิวเตอร์ยังคงมีการเบี่ยงเบนแม้ว่าพวกเขาจะเป็นไปตามมาตรฐานจุดลอยตัวเดียวกันหรือไม่? ฉันกำลังเขียนเกมนี้ใน C # ไม่แน่ใจว่าเรื่องนั้นคิดว่าฉันจะพูดถึงมันต่อไป

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