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

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

5
คำจำกัดความที่เป็นทางการสำหรับคำว่า "ภาษา OO บริสุทธิ์"?
ฉันไม่สามารถนึกถึงสถานที่ที่ดีขึ้นในหมู่พี่น้อง SO เพื่อตั้งคำถามเช่นนี้ เดิมทีฉันอยากถามว่า "python เป็นภาษา OO บริสุทธิ์หรือไม่" แต่เมื่อพิจารณาถึงปัญหาและประสบการณ์ที่ไม่สะดวกสบายของผู้คนในขณะที่พยายามกำหนดคำศัพท์ฉันตัดสินใจเริ่มต้นด้วยการได้คำจำกัดความที่ชัดเจนสำหรับคำนั้น ๆ มันค่อนข้างยุติธรรมที่จะเริ่มต้นด้วยการโต้ตอบโดยดร. อลันเคย์ซึ่งเป็นคนบัญญัติศัพท์ (สังเกตแรงบันดาลใจในการเปรียบเทียบทางชีววิทยากับเซลล์หรือสิ่งมีชีวิตอื่น ๆ ) มีวิธีการดังต่อไปนี้ในการเข้าถึงภารกิจ: ให้การวิเคราะห์เชิงเปรียบเทียบโดยการแสดงรายการภาษาการเขียนโปรแกรมที่สามารถแสดง (หรือไม่สามารถทำได้) คุณสมบัติบางอย่างที่ไม่ซ้ำกันและเพียงพอที่จะกำหนดคำศัพท์ (แม้ว่า Smalltalk, Scala, Javaและอื่น ๆ ) เป็นตัวอย่างที่เป็นไปได้ แต่ IMO ไม่เกิดผล ) ให้คำจำกัดความอย่างเป็นทางการ (หรือใกล้เคียงกับมันเช่นในเชิงวิชาการหรือเชิงคณิตศาสตร์มากขึ้น) ให้คำนิยามเชิงปรัชญาที่ต้องพึ่งพาบริบทเชิงความหมายของภาษาที่เป็นรูปธรรมหรือประสบการณ์การเขียนโปรแกรมเบื้องต้น (ต้องมีโอกาสในการอธิบายที่ประสบความสำเร็จโดยชุมชน) รุ่นปัจจุบันของฉัน: "ถ้าเขียนโปรแกรมบางอย่าง ( อย่างเป็นทางการ ) ภาษาที่สามารถ ( หลักไวยากรณ์ ) ความแตกต่างระหว่างการดำเนินงานและถูกดำเนินการเช่นเดียวกับการสรุปเกี่ยวกับประเภทของแต่ละตัวถูกดำเนินการไม่ว่าจะเป็นประเภทนี้เป็นวัตถุ (ในความรู้สึกของ OOP) หรือไม่นั้นเราเรียกว่า ภาษาดังกล่าวเป็นภาษา OO ตราบใดที่มีอย่างน้อยหนึ่งประเภทในภาษานี้ซึ่งเป็นวัตถุในที่สุดหากทุกประเภทของภาษาเป็นวัตถุที่เรากำหนดให้ภาษาดังกล่าวจะบริสุทธิ์ …

4
อินเทอร์เฟซควรขยาย (และในการทำสืบทอดวิธีของ) อินเทอร์เฟซอื่น ๆ
แม้ว่านี่จะเป็นคำถามทั่วไป แต่ก็เป็นปัญหาเฉพาะที่ฉันกำลังประสบอยู่ ขณะนี้ฉันมีส่วนต่อประสานที่ระบุในโซลูชันของฉันที่เรียกว่า public interface IContextProvider { IDataContext { get; set; } IAreaContext { get; set; } } อินเทอร์เฟซนี้มักใช้ตลอดโปรแกรมและด้วยเหตุนี้ฉันจึงเข้าถึงวัตถุที่ต้องการได้ง่าย อย่างไรก็ตามในส่วนของโปรแกรมของฉันค่อนข้างต่ำฉันต้องการเข้าถึงคลาสอื่นที่จะใช้IAreaContextและดำเนินการบางอย่างกับมัน ดังนั้นฉันจึงสร้างส่วนต่อประสานจากโรงงานอีกอันเพื่อสร้างสิ่งนี้ที่เรียกว่า: public interface IEventContextFactory { IEventContext CreateEventContext(int eventId); } ฉันมีคลาสที่ใช้IContextProviderและฉีดโดยใช้ NinJect ปัญหาที่ฉันมีคือพื้นที่ที่ฉันต้องการใช้IEventContextFactoryนี้มีการเข้าถึงIContextProviderเท่านั้นและตัวเองใช้คลาสอื่นซึ่งจะต้องใช้อินเทอร์เฟซใหม่นี้ ฉันไม่ต้องการให้อินสแตนซ์ของการใช้งานIEventContextFactoryในระดับต่ำและต้องการทำงานกับอินเตอร์เฟสIEventContextFactoryตลอด อย่างไรก็ตามฉันยังไม่ต้องการที่จะฉีดพารามิเตอร์อื่นผ่านตัวสร้างเพียงเพื่อให้มันผ่านไปยังชั้นเรียนที่ต้องการมันคือ // example of problem public class MyClass { public MyClass(IContextProvider context, IEventContextFactory event) { _context = …
13 c#  design  interfaces 

5
ฟังก์ชั่นการอ่านโปรแกรมการทำงาน [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน2 ปีที่ผ่านมา ฉันอยากรู้เกี่ยวกับเรื่องนี้เพราะฉันจำก่อนที่จะเรียนรู้ภาษาที่ใช้งานได้ใด ๆ ฉันคิดว่าพวกเขาทั้งหมดอย่างน่ากลัว, สุดยอดและไม่สามารถอ่านได้ชะมัด ตอนนี้ฉันรู้ Haskell และ f # ฉันพบว่าใช้เวลานานกว่าในการอ่านรหัสน้อยลง แต่รหัสน้อยนั้นทำเกินกว่าจำนวนที่เท่ากันจะเป็นภาษาที่จำเป็นดังนั้นจึงรู้สึกว่าได้รับสุทธิและฉันก็ไม่ได้เป็นอย่างยิ่ง มีประสบการณ์ในการทำงาน นี่คือคำถามของฉันฉันมักจะได้ยินจากคน OOP ที่สไตล์การทำงานไม่สามารถอ่านได้มาก ฉันอยากรู้ว่าเป็นกรณีนี้หรือไม่และฉันหลอกตัวเองหรือถ้าพวกเขาใช้เวลาในการเรียนรู้ภาษาที่ใช้งานได้ทั้งสไตล์จะไม่สามารถอ่านได้มากกว่า OOP อีกต่อไป? มีใครเคยเห็นหลักฐานหรือมีเกร็ดเล็กเกร็ดน้อยใด ๆ ที่พวกเขาเห็นสิ่งนี้ไม่ทางใดก็ทางหนึ่งโดยมีความถี่เพียงพอที่จะพูดได้หรือไม่? ถ้าการเขียนฟังก์ชั่นมีความสามารถในการอ่านต่ำกว่าจริง ๆ แล้วฉันไม่ต้องการใช้มันต่อไป แต่ฉันไม่รู้ว่ามันเป็นจริงหรือไม่ ..

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

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

6
พฤติกรรมที่คาดหวังเมื่อมีการร้องขอสำหรับคอลเลกชันจะมีรายการศูนย์
สมมติว่าคุณได้รับสิ่งต่อไปนี้ ... List<Thing> theThings = fubar.Things.All(); หากไม่มีอะไรจะกลับคุณจะคาดหวังอะไรกับสิ่งเหล่านี้ทั้งหมด () จะกลับมา? แก้ไข: ขอบคุณสำหรับความคิดเห็น ฉันจะรอนิดหน่อยและยอมรับผลงานที่มีจำนวนมากที่สุด ฉันเห็นด้วยกับการตอบสนองโดยเฉพาะอย่างยิ่งผู้ที่แนะนำการเก็บสะสมที่ว่างเปล่า ผู้ขายระบุ API ด้วยการโทรหลายครั้งคล้ายกับตัวอย่างด้านบน ผู้ขายที่ทำรายได้ 4.6 ล้านเหรียญสหรัฐผ่านทาง API ของพวกเขาเมื่อปีที่แล้วคือ BTW พวกเขาทำสิ่งที่ฉันไม่เห็นด้วยโดยพื้นฐาน - พวกเขามีข้อยกเว้น
13 java  c# 

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

3
เราสามารถสร้างแอพพลิเคชันบนเดสก์ท็อปด้วย Ruby ได้หรือไม่? [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นหัวข้อสำหรับ Software Engineering Stack Exchange ปิดให้บริการใน6 ปีที่ผ่านมา ฉันรู้ว่ากรอบ Ruby on Rails นั้นใช้สำหรับการพัฒนาเว็บไซต์เท่านั้นและไม่เหมาะสำหรับการพัฒนาแอปพลิเคชันบนเดสก์ท็อป แต่ถ้าโปรแกรมเมอร์ทับทิมต้องการพัฒนาแอปพลิเคชันเดสก์ท็อปมันเหมาะสมและดีกว่าที่จะใช้กับ Ruby เท่านั้น (ไม่ใช่ jRuby เนื่องจากบทเรียนส่วนใหญ่มีไว้สำหรับ jRuby) หรือไม่ ถ้าใช่โปรดให้บทเรียนที่ดี ฉันต้องการใช้ linux เป็นระบบปฏิบัติการเพื่อการพัฒนา โปรดแนะนำบางสิ่งบางอย่างเนื่องจากฉันเป็นนักพัฒนาทับทิมและต้องการพัฒนาแอปพลิเคชันเดสก์ท็อป

4
มีเหตุผลการใช้งานที่แตกต่างกันสำหรับคลาส / อินเตอร์เฟสนามธรรมใน C ++ และ Java
ตาม Herb Sutter หนึ่งควรชอบอินเตอร์เฟซที่เป็นนามธรรม (ฟังก์ชั่นเสมือนบริสุทธิ์ทั้งหมด) กับคลาสนามธรรมใน C ++ เพื่อแยกการใช้งานเท่าที่จะทำได้ ในขณะที่ฉันพบว่ากฎนี้มีประโยชน์มากโดยส่วนตัวฉันเพิ่งเข้าร่วมทีมกับโปรแกรมเมอร์ Java จำนวนมากและในโค้ด Java ดูเหมือนว่าแนวทางนี้ไม่มีอยู่จริง ฟังก์ชั่นและการใช้งานของพวกเขามักจะอยู่ในชั้นเรียนนามธรรม ดังนั้นฉันจึงได้รับ Herb Sutter ผิดทั้งหมดแม้แต่กับ C ++ หรือมีความแตกต่างโดยทั่วไปในการใช้ฟังก์ชั่นนามธรรมใน C ++ เทียบกับ Java คลาสนามธรรมพร้อมโค้ดการใช้งานมีเหตุผลใน Java มากกว่าใน C ++ และถ้าใช่ทำไม

3
การกำหนดค่าผู้ใช้ของเชลล์สคริปต์ ปฏิบัติที่ดีที่สุด?
ฉันกำลังเขียนเชลล์สคริปต์ด้วยตัวแปรบางตัวที่ควรกำหนดค่าโดยผู้ใช้ จะมีโปรแกรมติดตั้งสำหรับดาวน์โหลดและกำหนดค่าสคริปต์โดยอาจถามคำถามหลายข้อ สคริปต์ที่เป็นปัญหานั้นมุ่งเป้าไปที่ผู้พัฒนารายอื่น สิ่งนี้สามารถนำไปใช้ได้หลายวิธี: ใช้ตัวยึดตำแหน่งในสคริปต์และใช้sedเพื่อแทนที่ในระหว่างการติดตั้ง (สิ่งนี้: /programming/415677/how-to-replace-placeholders-in-a-text-file ) ข้อดี: คำจำกัดความของตัวแปรทั้งหมดมีอยู่ในสคริปต์ ง่ายในการดาวน์โหลดสคริปต์ด้วยตนเองและกำหนดค่าตัวแปรสำหรับผู้ใช้ที่ต้องการตัวแก้ไขมากกว่าตัวติดตั้ง ข้อด้อย: มันยากที่จะกำหนดค่าตัวแปรใหม่ผ่านตัวติดตั้งเมื่อมีอยู่ นอกจากว่าฉันจะสร้าง regexp ที่ซับซ้อนมากขึ้นซึ่งจะมีแนวโน้มที่จะเกิดข้อผิดพลาด ใช้ไฟล์ configโดยทั่วไปแล้วเชลล์สคริปต์อื่นที่มีการมอบหมายและใช้sourceเพื่อรวมไฟล์นั้น (และอาจวางไว้ใน~/.scriptname? สคริปต์หลักถูกคัดลอกไปยัง/usr/local/bin) ข้อดี: ง่ายต่อการกำหนดค่าสคริปต์ใหม่ สามารถเพิ่มพารามิเตอร์สำหรับการทำเช่นนั้นได้จากสคริปต์หลัก (อาจเป็นไปได้ในโซลูชันแรกเช่นกัน แต่การแก้ไขสคริปต์จากตัวเองไม่ได้ฟังดูเหมือนเป็นความคิดที่ดีมาก) ข้อด้อย: สคริปต์นี้ขึ้นอยู่กับสองไฟล์และผู้ใช้จำเป็นต้องเรียกใช้โปรแกรมติดตั้งสำหรับไฟล์การกำหนดค่าที่จะสร้าง สิ่งนี้สามารถแก้ไขได้โดยการสร้างไฟล์ปรับแต่งอัตโนมัติหากไม่มีอยู่ แต่การค้นหาไฟล์กำหนดค่าภายนอกจะยังคงเป็นเรื่องยุ่งยากสำหรับผู้ใช้ที่ต้องการดาวน์โหลดสคริปต์แก้ไขและดำเนินการกับมัน นอกจากนี้ยังมีตัวเลือกเล็กน้อยเกี่ยวกับวิธีการจัดการการกำหนดค่าโดยผู้ใช้หลังการติดตั้ง: คอมไพล์เช่น $ myscript config server.host example.org $ myscript config server.proxypath / home / johndoe / proxy $ myscript config server.httppath …

2
เมื่อใดที่ฉันควรใช้ StringBuilder หรือ StringBuffer
ในเว็บแอปพลิเคชั่นการผลิตโปรแกรมเมอร์เพื่อนของฉันใช้ StringBuffer ทุกที่ ตอนนี้ฉันกำลังดูแลการพัฒนาแอพพลิเคชั่นและการแก้ไข หลังจากอ่านStringBuilderและStringBufferฉันได้ตัดสินใจเปลี่ยนรหัส StringBuffer ทั้งหมดด้วย StringBuilder เพราะเราไม่ต้องการความปลอดภัยของเธรดใน data beans ของเรา ตัวอย่างเช่น: (ในแต่ละ data bean ฉันสามารถเห็นการใช้งานของ StringBuffer) @Override public String toString() { StringBuffer sb = new StringBuffer();// replace it from StringBuilder sb.append(" ABCD : ").append(abcd); sb.append(", EFGH : ").append(efgh); sb.append(", IJKL : ").append(ijkl); } เราสร้าง data beans แยกต่างหากสำหรับแต่ละเซสชั่น / …

4
วิธีการตรวจสอบว่ารูปแบบการออกแบบถูกนำไปใช้อย่างถูกต้องหรือไม่
ฉันสามารถปรับขนาดแอปพลิเคชันเก่าทั้งหมดของฉันซึ่งไม่ได้ใช้รูปแบบการออกแบบที่บันทึกไว้ได้สำเร็จ ไม่ว่ามันจะเป็นลวดลายอะไร ในระดับใหญ่ฉันแค่รู้สึกว่าจำเป็นต้องใช้แนวคิด OOP แบบง่าย ๆ แนวคิดรูปแบบการออกแบบนั้นซับซ้อนและเข้าใจยาก เมื่อดำเนินการแล้วจะตรวจสอบได้อย่างไรว่าการใช้งานนั้นถูกต้องและแอปพลิเคชั่นมีการเชื่อมต่อหลวมจริงหรือไม่?

2
วิธีที่เหมาะสมในการตรวจสอบการส่งข้อมูลใน Git คืออะไร?
เป้าหมายของฉันคือตรวจสอบข้อมูลการส่งมอบที่ไม่ตรงตามข้อกำหนดบางอย่างจากนั้นปฏิเสธการส่งข้อมูลที่สร้างหรือผลักดันไปยังที่เก็บข้อมูลระยะไกล ปัญหาของการทำเบ็ด pre-commit คือมันเป็นเรื่องยากที่จะปรับใช้กับคนจำนวนมากที่ต้องอัปเดตไฟล์ hook ก่อนทำหน้าที่ด้วยตนเอง เช่นกัน Git ไม่อนุญาตให้คุณมี submodules ในโฟลเดอร์. git ซึ่งง่ายสำหรับการปรับใช้ ตัวเลือกอื่น ๆ ที่ฉันเห็นกำลังทำการตรวจสอบในฉันเชื่อว่า hook การอัพเดททางด้านระยะไกลซึ่งจะตรวจสอบการคอมมิทแต่ละครั้งที่ถูกส่งโดย dev และปฏิเสธการพุชหากคอมมิชชันใด ๆ ล้มเหลวในการทดสอบ ใครบ้างมีความเข้าใจในปัญหานี้หรือไม่? และถ้าเป็นเช่นนั้นคุณสามารถให้หรือชี้ให้ฉันดูตัวอย่างเบ็ด update script ได้หรือไม่ ฉันสับสนเล็กน้อยว่ามันทำงานอย่างไร
13 git 

3
เริ่มต้นอาร์เรย์ในเวลาคงที่ที่ตัดจำหน่ายแล้ว - กลวิธีนี้เรียกว่าอะไร?
มีโครงสร้างข้อมูลนี้ที่แลกเปลี่ยนประสิทธิภาพของการเข้าถึงอาเรย์กับความต้องการที่จะวนซ้ำมันเมื่อล้างมัน คุณเก็บตัวนับรุ่นกับแต่ละรายการและตัวนับรุ่นสากล การดำเนินการ "ล้าง" เพิ่มตัวนับการสร้าง ในการเข้าถึงแต่ละครั้งคุณจะเปรียบเทียบตัวนับรุ่นเทียบกับระดับโลก หากพวกเขาแตกต่างกันค่าจะถือว่าเป็น "สะอาด" คำตอบนี้เกิดขึ้นในStack Overflowเมื่อเร็ว ๆ นี้ แต่ฉันจำไม่ได้ว่าเคล็ดลับนี้มีชื่ออย่างเป็นทางการหรือไม่ ทำมัน? กรณีใช้งานอย่างหนึ่งคืออัลกอริธึมของ Dijkstraหากมีเพียงส่วนย่อยของโหนดที่จะต้องผ่อนคลายและหากต้องทำซ้ำ ๆ


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