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

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

2
อัลกอริทึมเพื่อผสานสองอาร์เรย์ที่เรียงลำดับด้วยจำนวนการเปรียบเทียบขั้นต่ำ
ป.ร. ให้ไว้สองอาร์เรย์เรียง, BประเภทTที่มีขนาดnและม. ฉันกำลังมองหาอัลกอริทึมที่ผสานสองอาร์เรย์เข้ากับอาร์เรย์ใหม่ (ขนาดสูงสุด n + m) หากคุณมีการเปรียบเทียบราคาถูกนี่ค่อนข้างง่าย เพียงนำจากอาเรย์ที่มีอิลิเมนต์แรกที่ต่ำที่สุดจนกระทั่งหนึ่งหรือทั้งสองอาร์เรย์ถูกสำรวจอย่างสมบูรณ์จากนั้นเพิ่มอิลิเมนต์ที่เหลือ บางสิ่งเช่นนี้/programming/5958169/how-to-merge-two-sorted-arrays-into-a-sorted-array อย่างไรก็ตามสถานการณ์การเปลี่ยนแปลงเมื่อเปรียบเทียบสององค์ประกอบจะมีราคาแพงกว่าการคัดลอกองค์ประกอบจากแถวแหล่งที่มาที่ไปยังอาร์เรย์เป้าหมาย ตัวอย่างเช่นคุณอาจมีอาร์เรย์ของจำนวนเต็มหรือสตริงที่มีความแม่นยำตามอำเภอใจซึ่งการเปรียบเทียบอาจมีราคาค่อนข้างสูง เพียงสมมติว่าการสร้างอาร์เรย์และองค์ประกอบการคัดลอกนั้นฟรีและสิ่งเดียวที่มีค่าใช้จ่ายคือการเปรียบเทียบองค์ประกอบ ในกรณีนี้คุณต้องการที่จะผสานสองอาร์เรย์มีจำนวนต่ำสุดของการเปรียบเทียบองค์ประกอบ นี่คือตัวอย่างบางส่วนที่คุณควรจะทำได้ดีกว่าอัลกอริธึมการผสานอย่างง่าย: a = [1,2,3,4, ... 1000] b = [1001,1002,1003,1004, ... 2000] หรือ a = [1,2,3,4, ... 1000] b = [0,100,200, ... 1000] มีบางกรณีที่อัลกอริทึมการผสานอย่างง่ายจะเหมาะสมที่สุดเช่น a = [1,3,5,7,9,....,999] b = [2,4,6,8,10,....,1000] ดังนั้นอัลกอริธึมจึงควรลดระดับลงอย่างงดงามและทำการเปรียบเทียบสูงสุด n + m-1 ในกรณีที่อาร์เรย์ถูกอินเตอร์ลีบหรืออย่างน้อยก็ไม่ได้แย่ลงอย่างมีนัยสำคัญ สิ่งหนึ่งที่น่าจะทำได้ดีสำหรับรายการที่มีขนาดใหญ่ต่างกันคือใช้การค้นหาแบบไบนารีเพื่อแทรกองค์ประกอบของอาร์เรย์ขนาดเล็กลงในอาร์เรย์ที่ใหญ่กว่า …

5
กรณีใดบ้างที่ประเภทข้อมูล 'uint' และ 'short' เหมาะสมกว่ามาตรฐาน int (32)
ฉันเข้าใจความแตกต่างของความสามารถและคุณค่าที่พวกเขาสามารถนำเสนอได้ แต่ดูเหมือนว่าผู้คนมักจะใช้Int32โดยไม่คำนึงว่าเหมาะสมหรือไม่ ดูเหมือนว่าจะไม่มีใครเคยใช้รุ่นที่ไม่ได้ลงชื่อ ( uint) แม้ว่าจะใช้เวลานานกว่าจะเหมาะกว่าเพราะอธิบายค่าที่ไม่สามารถลบได้ (อาจเป็นตัวแทนของ ID ของบันทึกฐานข้อมูล) นอกจากนี้ดูเหมือนว่าจะไม่มีใครใช้short/Int16โดยไม่คำนึงถึงความจุที่ต้องการของค่า อย่างมีเหตุผลมีกรณีที่จะดีกว่าที่จะใช้uintหรือไม่short/Int16และถ้าเป็นเช่นนั้น?
24 c# 

5
การใช้ตัวดำเนินการแคสต์อย่างชัดเจนของฉันนั้นสมเหตุสมผลหรือแฮ็คที่ไม่ดี?
ฉันมีวัตถุขนาดใหญ่: class BigObject{ public int Id {get;set;} public string FieldA {get;set;} // ... public string FieldZ {get;set;} } และวัตถุที่เหมือน DTO เฉพาะด้าน: class SmallObject{ public int Id {get;set;} public EnumType Type {get;set;} public string FieldC {get;set;} public string FieldN {get;set;} } ฉันพบแนวคิดส่วนตัวในการส่ง BigObject ไปยัง SmallObject อย่างชัดเจนโดยรู้ว่าเป็นการดำเนินการทางเดียวที่ทำให้ข้อมูลสูญหาย - ใช้งานง่ายและอ่านได้ง่ายมาก: var small = …

6
รูปแบบตัววนซ้ำ - ทำไมจึงเป็นเรื่องสำคัญที่จะไม่เปิดเผยการเป็นตัวแทนภายใน
ฉันอ่านC # ออกแบบ Essentials ฉันกำลังอ่านเกี่ยวกับรูปแบบตัววนซ้ำ ฉันเข้าใจวิธีการนำไปใช้อย่างสมบูรณ์ แต่ฉันไม่เข้าใจความสำคัญหรือดูกรณีการใช้งาน ในหนังสือจะมีตัวอย่างให้ในกรณีที่มีคนต้องการได้รับรายชื่อของวัตถุ พวกเขาจะได้ทำเช่นนี้โดยการเปิดเผยทรัพย์สินของประชาชนเช่นหรือIList<T>Array หนังสือเล่มนี้เขียน ปัญหาเกี่ยวกับเรื่องนี้คือการเป็นตัวแทนภายในในทั้งสองชั้นเรียนเหล่านี้ได้สัมผัสกับโครงการภายนอก การเป็นตัวแทนภายในคืออะไร? ความจริงมันเป็นarrayหรือIList<T>? ฉันไม่เข้าใจจริงๆว่าทำไมสิ่งนี้เป็นสิ่งที่ไม่ดีสำหรับผู้บริโภค (โปรแกรมเมอร์ที่เรียกสิ่งนี้) รู้ ... หนังสือบอกว่ารูปแบบนี้ใช้งานได้โดยเปิดเผยGetEnumeratorฟังก์ชั่นของมันเพื่อให้เราสามารถเรียกGetEnumerator()และเปิดเผย 'รายการ' ด้วยวิธีนี้ ฉันคิดว่ารูปแบบนี้มีสถานที่ (เหมือนทั้งหมด) ในบางสถานการณ์ แต่ฉันไม่เห็นว่าที่ไหนและเมื่อไหร่

4
การเลือกภาษาโปรแกรมอย่างเป็นระบบ [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน5 ปีที่ผ่านมา ฉันกำลังมองหาวิธีการในการเลือกภาษา ฉันไม่ได้ขอความคิดเห็นเกี่ยวกับภาษา ฉันได้รับมอบหมายให้ดำเนินการเปรียบเทียบภาษาปัจจุบันของร้านค้ากับผู้อื่นที่มีให้ เราเป็นร้านพัฒนาเว็บไซต์ CEO ของเราต้องการเอกสารทางเทคนิคฉบับเต็มเกี่ยวกับภาษาบนเว็บทั้งหมดที่มีอยู่ภาษาแม่ที่เป็นอนุพันธ์ของ (เช่น jsp มาจาก java ซึ่งมาจาก c / c ++) ฉันจำเป็นต้องสร้างเมทริกซ์ที่มีปัจจัยสำคัญทั้งหมดของภาษาเฉพาะเช่นกันและการมาสั้น ๆ ของภาษานั้น ภาษาถูก จำกัด โดยแพลตฟอร์มหรือไม่มันถูกออกแบบมาสำหรับการเขียนโปรแกรมการทำงานขั้นตอนหรือ OO หรือสามารถใช้กับกระบวนทัศน์การเขียนโปรแกรมใด ๆ ได้หรือไม่? ฉันต้องมีข้อมูลทางเทคนิคน้อยลงเช่นขนาดของกลุ่มคนที่มีความสามารถสำหรับภาษาที่กำหนดและเงินเดือนเฉลี่ยในกลุ่มนั้น ตลาดจะดูทางเลือกของเราอย่างไร เราเริ่มมองหาที่ปรึกษาเพื่อช่วยให้เราเข้าใจทุกสิ่งเหล่านี้ แต่สิ่งที่เราได้พบว่าที่ปรึกษาส่วนใหญ่มาจากพื้นหลังการพัฒนาและบ่อยครั้งที่ดูเหมือนว่าคำตอบคือ " xxxเป็นภาษาที่ดีที่สุดเพราะเป็นสิ่งที่ฉัน ใช้มากที่สุดในช่วงnปีที่ผ่านมาและไม่เคยทำให้ฉันผิดหวังคุณสามารถเสริมด้วยyyyสำหรับส่วนหน้าและใช้ห้องสมุดzzz " ฉันรู้สึกหนักใจกับงานนี้และฉันรู้สึกว่าหลักสูตรที่ดีที่สุดของการดำเนินการตามที่ซีอีโอของเรากำลังมองหาคือการมองเข้าไปในโลกของสถาบันการศึกษาและจ้างอาจารย์ที่ไม่มีประสบการณ์การพัฒนาที่แท้จริงที่จะเข้ามา เกี่ยวกับภาษาที่เป็นไปได้ทั้งหมด มีใครอีกบ้างที่ต้องผ่านการฝึกนี้? หากคุณมีคุณสามารถแบ่งปันขั้นตอนและ / หรือวิธีการที่คุณใช้ในกระบวนการ?

5
การทดสอบเป็นส่วนที่จำเป็นของระเบียบวิธี Agile หรือไม่?
ฉันอยู่กับหลายทีมที่พยายามฝึกวิธีการแบบ Agile และบ่อยครั้งที่ทีมเหล่านี้เป็นศูนย์กลางการทดสอบ การทดสอบเป็นส่วนที่จำเป็นในการฝึกวิธีการ Agile หรือเป็นเพียงการฝึกหัด XP ที่ได้รับการฝึกฝนมาหลายปีหรือไม่?

3
“ เคยเปลี่ยนค่าของ 4 หรือไม่?” - สิ่งนี้เกิดขึ้นได้อย่างไรในแบบทดสอบ Hayes-Thomas
ในปี 1989 เฟลิกซ์ลีจอห์นเฮย์สและแองเจลาโทมัสเขียนทดสอบแฮกเกอร์รูปแบบของการตอบคำถามที่มีเรื่องตลกภายในหลาย ๆ ขณะที่“ คุณกินเมือกแม่พิมพ์? ” ฉันกำลังพิจารณาชุดต่อไปนี้: 0015 Ever change the value of 4? 0016 ... Unintentionally? 0017 ... In a language other than Fortran? มีเกร็ดเล็กเกร็ดน้อยเกี่ยวกับการสร้างหมายเลข“ 4” โดยเฉพาะในซีรี่ส์หรือไม่? การใช้ Fortran บางอย่างอนุญาตให้แก้ไขค่าของค่าคงที่หรือไม่ เป็นไปได้ในภาษาอื่นที่ใช้งานทั่วไปในเวลานั้นหรือไม่?
24 history  fortran 

1
การกระจายไฟล์หลามเดียว: โมดูลหรือแพ็คเกจ?
สมมติว่าฉันมีฟังก์ชั่นหลามที่มีประโยชน์หรือคลาส (หรืออะไรก็ตาม) ที่เรียกว่าuseful_thingซึ่งมีอยู่ในไฟล์เดียว มีสองวิธีที่จำเป็นในการจัดระเบียบต้นไม้ต้นกำเนิด วิธีแรกใช้โมดูลเดียว: - setup.py - README.rst - ...etc... - foo.py ที่กำหนดไว้ในuseful_thing foo.pyกลยุทธ์ที่สองคือการทำแพคเกจ: - setup.py - README.rst - ...etc... - foo |-module.py |-__init__.py ที่กำหนดไว้ในuseful_thing module.pyในกรณีแพคเกจ__init__.pyจะมีลักษณะเช่นนี้ from foo.module import useful_thing from foo import useful_thingเพื่อที่ว่าในทั้งสองกรณีที่คุณสามารถทำได้ คำถาม:วิธีใดที่เป็นที่ต้องการและทำไม แก้ไข: เนื่องจากผู้ใช้ริ้นกล่าวว่าคำถามนี้เกิดขึ้นไม่ดีฉันจะเพิ่มว่าการสอนบรรจุภัณฑ์งูใหญ่อย่างเป็นทางการดูเหมือนจะไม่แสดงความคิดเห็นว่าวิธีการใดที่อธิบายไว้ข้างต้นเป็นวิธีที่ต้องการ ฉันไม่ได้ให้รายการข้อดีข้อเสียส่วนตัวอย่างชัดเจนเพราะฉันสนใจว่ามีวิธีที่ชุมชนต้องการหรือไม่ไม่สร้างการอภิปรายข้อดี / ข้อเสีย :)

4
จะใช้ github, branch และรีลีสอัตโนมัติสำหรับการจัดการเวอร์ชั่นได้อย่างไร? [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน5 ปีที่ผ่านมา ฉันเข้าใจแนวคิดพื้นฐานของ Git / Github ส่วนใหญ่แล้วในตอนนี้อย่างไรก็ตามฉันยังคงมีปัญหาในการเข้าใจภาพรวมที่ใหญ่ขึ้น นี่คือบางสิ่งที่ฉันสามารถทำให้ทำงานได้จนถึงตอนนี้: ผลักดันมุ่งมั่น ทำงานกับสาขา รวม Github กับ Travis CI ซึ่งเป็นระบบการรวมอย่างต่อเนื่อง Via Travis CI สร้างโดยอัตโนมัติทุกคอมมิทถึงมาสเตอร์และวางจำหน่ายเป็น ZIP บน Github ภายใต้รีลีส อย่างไรก็ตามฉันเพิ่งทำงานกับโปรเจ็กต์เวอร์ชันอัลฟ่า / เบต้าเท่านั้นดังนั้นฉันจึงไม่เคยเห็นเวอร์ชันที่เผยแพร่ในทางปฏิบัติเลย ดังนั้นฉันต้องการเรียนรู้เพิ่มเติมเกี่ยวกับการกำหนดรุ่นการบำรุงรักษารุ่นแยกต่างหากการแก้ไขด่วนรุ่น ฯลฯ ฉันจะมั่นใจได้อย่างไรว่าสิ่งต่าง ๆ ต่อไปนี้เกิดขึ้น: มีเวอร์ชันของโครงการต่าง ๆ ของฉันเช่นเวอร์ชัน 1.1.0 และ 2.0.0 มีความสามารถในการผลักดันโปรแกรมแก้ไขด่วนในรุ่นเรียงลำดับของกระแทกกับรุ่น 1.1.1 หรือ 2.0.1 เป็นต้น สร้างระบบการรวมอย่างต่อเนื่องสร้างรุ่นนั้นโดยอัตโนมัติเมื่อกระทำและหากสำเร็จให้เผยแพร่รุ่นสำหรับรุ่นนั้นโดยเฉพาะ ฉันสงสัยระหว่างตัวเลือกต่อไปนี้: …

2
Git แข็งแกร่งแค่ไหนเมื่อพลังดับ?
วันหนึ่งฉันใช้ Git (ฉันยังใช้อยู่) และไฟฟ้าดับลงในขณะที่ฉันกำลังคอมมิท เมื่อฉัน (ที่จริงแล้วไฟฟ้า) กลับมา, repo คอมไพล์เสียหาย ฉันจำชื่อที่แน่นอนไม่ได้ แต่มันก็เหมือนกับ "refs ที่ไม่ถูกต้อง" หรืออะไรทำนองนั้น มันง่ายที่จะคาดเดาว่าการกระทำผิดปกติในระหว่างการดำเนินการ (ฉันกระทำผ่าน IntelliJ ซึ่งทำการเพิ่มดัชนีโดยอัตโนมัติ) นอกจากนี้ยังง่ายต่อการคาดเดาว่าที่จริงแล้ว 'กระทำ' ไม่ได้เป็นกรดเช่นเดียวกับการดำเนินงาน DBMS ที่มีชื่อเดียวกัน ถาม : มีวิธีใดบ้างที่จะทำให้มั่นใจได้ว่าการดำเนินการซื้อคืนที่มีการเปลี่ยนแปลงนั้นเป็นไปตามอะตอม เช่นถ้ากระแสไฟฟ้าดับลงอีกครั้งและฉันยอมรับฉันต้องการให้ระบบไฟล์ของฉันไม่อยู่ในสถานะที่เสียหาย
24 git 

3
อัลกอริทึมการบรรจุ 3d สำหรับการจัดส่งของรายการ
ฉันได้รับงานเพื่อสร้างการประมาณค่าจัดส่งซึ่งแสดงให้เห็นว่ามีที่พักที่ดีที่สุดในกล่องน้อยที่สุด: มีชุดกล่องสี่เหลี่ยมขนาดเท่าจำนวน จำกัด ที่ทราบ มีหลายรายการ retangular โดยพลการที่จะบรรจุภายในกล่อง ควรใช้กล่องให้น้อยที่สุดเท่าที่จะทำได้ เนื่องจากการจัดส่งสองกล่อง 1x1x1 มีราคาแพงกว่ากล่องหนึ่ง 1x2x1 นี่ควรเป็นลำดับความสำคัญที่นี่ ควรปรับให้เหมาะสมเพื่อใช้กล่องขนาดเล็กที่สุดเท่าที่จะเป็นไปได้ตามลำดับความสำคัญในระดับที่สอง (เช่น: หากนำเสนอด้วยตัวเลือกระหว่างหนึ่งกล่องที่ใหญ่กว่าและสองกล่องเล็กควรเลือกกล่องที่ใหญ่กว่า) รายการสามารถหมุนได้เพื่อให้พอดีกับกล่อง แต่การหมุนต้องถูก จำกัด ด้วยการเพิ่มขึ้นที่ 45 °เป็นอย่างน้อย (ในงานวิจัยของฉันดูเหมือนว่าการกำหนดค่าบางอย่างอนุญาตให้การหมุน 45 องศาเพื่อให้พอดีกับกล่องสี่เหลี่ยมในกล่องสี่เหลี่ยมขนาดใหญ่ขึ้น) เป็น 90 °การหมุนมาตรฐานที่จะต้องดำเนินการ กล่องมีขีด จำกัด น้ำหนักและรายการมีน้ำหนักโดยพลการ (เช่น: รายการที่มีขนาด 1x1x1 สามารถมีขนาดเล็กกว่ารายการ 2x2x2 อื่น ๆ ) ฉันได้ทำการวิจัยเล็กน้อยและพบว่ามีอัลกอริทึมที่เป็นนามธรรมบางอย่างเกี่ยวกับ bin bin และปัญหาเป้หลัง เรียงลำดับรายการตามลำดับที่ลดลง (ใหญ่กว่าก่อน) ในรายการ "รายการที่จะแพ็ค" สำหรับแต่ละรายการในรายการนี้: เลือกกล่องขนาดเล็กที่อยู่ในรายการ "กล่องที่ใช้แล้ว" …

4
วางแผนโป๊กเกอร์กับเพื่อนร่วมงานที่บกพร่องทางสายตา
ที่สำนักงานเราเพิ่งได้เพื่อนร่วมงานใหม่ที่มีความบกพร่องทางสายตา ฉันรับผิดชอบในการจัดการเซสชั่นการวางแผนโป๊กเกอร์และเพื่อนร่วมงานใหม่จะต้องเข้าร่วมเป็นสมาชิกของทีม เรามีไพ่โป๊กเกอร์ชุดดีเหล่านี้พร้อมวางแผนหมายเลขโป๊กเกอร์ แต่ไม่ได้ช่วยเพื่อนร่วมงานคนใหม่ของเราแน่นอน จนถึงตอนนี้เราได้แก้ไขปัญหานี้เพียงแค่ตั้งชื่อประมาณการให้เพื่อนร่วมงานคนใหม่พูดว่าการประเมินของพวกเขาทันทีหลังจากที่เหลือวางการ์ดของพวกเขาไว้แล้วที่เหลือก็พลิกการ์ดและฉันตั้งชื่อการประมาณเป็นแถว คำถามของฉัน:มีใครบ้างที่เคยมีประสบการณ์กับสถานการณ์แบบนี้และมีทางออกที่ดีกว่า? มีสิ่งเช่นบัตรโป๊กเกอร์อักษรเบรลล์หรือไม่? วิธีแก้ปัญหาในปัจจุบันใช้งานได้ แต่ฉันคิดว่านี่สามารถปรับปรุงได้สำหรับเราทุกคนโดยยกตัวอย่างเช่น Braille poker cards

6
เหตุใดจึงต้องใช้ lexer เป็นอาร์เรย์ 2d และสวิตช์ขนาดยักษ์
ฉันทำงานอย่างช้าๆเพื่อจบปริญญาของฉันและภาคเรียนนี้คือ Compilers 101 เรากำลังใช้Dragon Bookอยู่ ไม่นานในหลักสูตรและเรากำลังพูดถึงการวิเคราะห์คำศัพท์และวิธีการที่จะสามารถนำไปใช้ผ่านทางออปติคัลไฟไนต์ จำกัด (ต่อไปนี้คือ DFA) ตั้งค่าสถานะ lexer ต่างๆกำหนดช่วงการเปลี่ยนภาพเป็นต้น แต่ทั้งศาสตราจารย์และหนังสือเสนอให้นำพวกมันไปใช้ผ่านตารางการเปลี่ยนแปลงซึ่งมีขนาดเท่ากับอาร์เรย์ 2 มิติขนาดใหญ่ (สถานะที่ไม่ใช่เทอร์มินัลต่างๆเป็นมิติเดียวและสัญลักษณ์อินพุตที่เป็นไปได้อื่น ๆ ) และคำสั่งสวิตช์ เช่นเดียวกับส่งไปยังตารางการเปลี่ยนแปลงหากอยู่ในสถานะที่ไม่ใช่ขั้ว ทฤษฎีนี้เป็นสิ่งที่ดีและดี แต่ในฐานะคนที่เขียนโค้ดจริง ๆ มาหลายสิบปี มันไม่สามารถทดสอบได้มันไม่สามารถบำรุงรักษาได้ไม่สามารถอ่านได้และมันเป็นความเจ็บปวดและครึ่งหนึ่งในการแก้ไขข้อบกพร่อง ยิ่งไปกว่านั้นฉันยังไม่เห็นว่ามันจะเป็นประโยชน์จากระยะไกลได้อย่างไรหากภาษานั้นมีความสามารถใน UTF การมีรายการตารางการเปลี่ยนแปลงนับล้านรายการต่อรัฐที่มินัลนั้นได้รับความไม่รีบร้อน ดังนั้นการจัดการคืออะไร? เหตุใดหนังสือที่ชัดเจนถึงเรื่องที่บอกว่าทำแบบนี้? ฟังก์ชั่นโอเวอร์เฮดเรียกได้มากขนาดนั้นจริงเหรอ? นี่เป็นสิ่งที่ใช้งานได้ดีหรือจำเป็นเมื่อไวยากรณ์ไม่ทราบล่วงหน้า (นิพจน์ทั่วไป?) หรือบางทีสิ่งที่จัดการกับทุกกรณีแม้ว่าวิธีแก้ปัญหาที่เฉพาะเจาะจงมากขึ้นจะทำงานได้ดีขึ้นสำหรับไวยากรณ์ที่เฉพาะเจาะจงมากขึ้น? ( หมายเหตุ:เป็นไปได้ที่ซ้ำกัน " ทำไมใช้วิธีการ OO แทนคำสั่งสวิตช์ขนาดใหญ่? " อยู่ใกล้ แต่ฉันไม่สนใจ OO วิธีการใช้งานหรือแม้แต่วิธีการเตือนแบบ saner ด้วยฟังก์ชันแบบสแตนด์อโลนก็ดี) [a-zA-Z]+และเพื่อเห็นแก่ตัวอย่างให้พิจารณาภาษาที่มีเพียงตัวบ่งชี้และตัวบ่งชี้เหล่านั้น ในการติดตั้ง DFA …

9
เหตุใดจึงไม่มีประเภทข้อมูล "วันที่เท่านั้น" ที่แท้จริง
ฉันผิดหวังอย่างมากที่ต้องใช้ค่า DateTime สำหรับชุดข้อมูลที่ "แค่วันเดียว" อย่างแท้จริง วันเกิดเป็นตัวอย่างที่พบบ่อยที่สุด แต่สิ่งนี้เกิดขึ้นในแอปพลิเคชันทางธุรกิจตลอดเวลา ฉันคุ้นเคยกับการตั้งค่าส่วนเวลาของระเบียน "วันที่เท่านั้น" เป็น "เที่ยง" (ซึ่งจะหลีกเลี่ยงวันที่ที่เปลี่ยนแปลงตลอดเวลาไม่ว่าจะเป็นเขตเวลา) ดูเหมือนว่าแฮ็คและฉันจะหาบั๊กจากผู้พัฒนาอุปกรณ์ตัวจริงตลอดไปในเรื่องนี้ เวลาสัมพันธ์กับจุดคงที่เสมอ 4PM คือ 4 ชั่วโมงหลังเที่ยงหรือเที่ยง จุดที่สูงที่สุดของดวงอาทิตย์ในการเดินทางผ่านนั้นสามารถสังเกตได้และช่วยให้เราสามารถตั้งค่าระบบพิกัดได้ 3 ชั่วโมงก่อนเที่ยง (Ante Meridian) 2 ชั่วโมงหลังเที่ยง 1441899402938 มิลลิวินาทีนับตั้งแต่ 1 มกราคม 2513 สำหรับผู้ที่เลี้ยงในโลกคาร์ทีเซียนนี่เป็นลักษณะที่สอง แต่ปฏิทินของเราถือกำเนิด Descartes ข้อโต้แย้งของฉันคือมันเป็นความคิดที่ถูกต้องมากขึ้นว่าเป็นการนับที่ฟังก์ชันโมดูโลถูกนำไปใช้ วันจันทร์ตามวันอาทิตย์และต่อ ๆ ไปจนกว่าคุณจะได้รับความจริงที่ว่าวันอาทิตย์เป็นวันเสาร์ ไม่มีบวกและลบมันเป็นโมดูลัสหรือค่าสัมบูรณ์ ในทำนองเดียวกันกับปีซ้ำ ทุก ๆ 365 วัน (หรือมากกว่านั้น) มีวันพิเศษหลายอย่างสำหรับฉัน: วันเกิดวันครบรอบวันเกิดของเด็ก ฯลฯ ฯลฯ แอปพลิเคชันการตั้งเวลาทางธุรกิจนั้นเต็มไปด้วยตัวอย่างของการประชุมทุกเจ็ดวันอังคารแรกของเดือน ฯลฯ …

8
การออกแบบส่วนต่อประสานที่จำเป็นต้องเรียกใช้ฟังก์ชันในลำดับเฉพาะ
ภารกิจคือการกำหนดค่าชิ้นส่วนของฮาร์ดแวร์ภายในอุปกรณ์ตามข้อกำหนดคุณสมบัติป้อนข้อมูลบางอย่าง สิ่งนี้ควรจะทำได้ดังนี้: 1) รวบรวมข้อมูลการกำหนดค่า สิ่งนี้สามารถเกิดขึ้นได้ในเวลาและสถานที่ต่างกัน ตัวอย่างเช่นโมดูล A และโมดูล B สามารถร้องขอ (ในเวลาที่ต่างกัน) ทรัพยากรบางอย่างจากโมดูลของฉัน 'ทรัพยากร' เหล่านั้นเป็นสิ่งที่กำหนดค่าจริง 2) หลังจากเป็นที่ชัดเจนว่าจะไม่มีการรับคำร้องขออีกต่อไปคำสั่งเริ่มต้นซึ่งให้ข้อมูลสรุปของทรัพยากรที่ร้องขอต้องถูกส่งไปยังฮาร์ดแวร์ 3) หลังจากนั้นสามารถ (และต้อง) การกำหนดค่าโดยละเอียดของทรัพยากรดังกล่าวให้แล้วเสร็จ 4) นอกจากนี้หลังจาก 2) สามารถ (และต้อง) กำหนดเส้นทางของทรัพยากรที่เลือกไปยังผู้โทรที่ประกาศไว้ สาเหตุที่พบบ่อยสำหรับข้อบกพร่องแม้กระทั่งสำหรับฉันซึ่งเป็นผู้เขียนสิ่งนี้จะผิดคำสั่งนี้ ฉันสามารถใช้แบบแผนการตั้งชื่อการออกแบบหรือกลไกใดในการทำให้ส่วนต่อประสานสามารถใช้งานได้โดยผู้ที่เห็นรหัสเป็นครั้งแรก
24 c++  interfaces 

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