คำถามติดแท็ก data-structures

คำถามเกี่ยวกับการจัดเก็บอย่างมีประสิทธิภาพและการแสดงข้อมูลภายในแอปพลิเคชันซอฟต์แวร์

3
เหตุใด Haskell และ Scheme จึงใช้รายการที่เชื่อมโยงโดยลำพัง
รายการที่เชื่อมโยงเป็นทวีคูณมีค่าใช้จ่ายน้อยที่สุด (เพียงตัวชี้ต่อเซลล์) และช่วยให้คุณสามารถผนวกทั้งสองส่วนและกลับไปกลับมาและสนุกโดยทั่วไป

2
ฉันจะออกแบบทรัพยากรรายการที่สั่งซื้อในบริการที่สงบได้อย่างไร
ฉันพบปัญหาเดียวกันนี้ซ้ำแล้วซ้ำอีกและฉันไม่พบวิธีแก้ปัญหาที่ฉันรู้สึกว่าเหมาะสมที่สุด พูดในแอปคุณมีรายการที่สั่งซื้อและคุณให้ผู้ใช้เปลี่ยนลำดับนั้นโดยการลากและวางหรือบางอย่าง คุณต้องการให้การเปลี่ยนแปลงนั้นยังคงอยู่ คุณทำแบบนั้นอย่างไร ฉันจะออกแบบบริการพักผ่อนของทรัพยากรรายการที่สั่งซื้อได้อย่างไร โดยเฉพาะอย่างยิ่งฉันจะออกแบบlistและitemรูปแบบของทรัพยากรที่สงบได้อย่างไร การออกแบบที่พบบ่อยที่สุดที่ฉันเคยเห็นคือitemเอนทิตีที่มีorderหรือpositionคุณสมบัติ อีกวิธีที่ฉันได้ยินคือรายการที่เชื่อมโยงเป็นสองเท่าในรายการ อะไรคือวิธีการที่ไม่เขียนฐานข้อมูลมากเกินไปและโดยทั่วไปแล้วรวดเร็วในการอัพเดตและอ่านสำหรับลูกค้า? จุดสิ้นสุดควรถูกเปิดเผยอย่างไร

3
รายการที่เชื่อมโยงควรมีตัวชี้หางหรือไม่?
ความเข้าใจของฉัน ... ข้อดี: การแทรกท้ายคือ O (1) แทน O (N) หากรายการนั้นเป็น Doubly Linked List การลบออกจากจุดสิ้นสุดคือ O (1) แทน O (N) ข้อด้อย: จะขึ้นเป็นจำนวนเล็กน้อยของหน่วยความจำเสริม: 4-8 ไบต์ ผู้ดำเนินการจะต้องติดตามหาง เมื่อมองถึงข้อดีและข้อเสียเหล่านี้ฉันไม่สามารถเห็นได้ว่าเหตุใดรายการที่เชื่อมโยงจะหลีกเลี่ยงการใช้ตัวชี้หาง มีบางอย่างที่ฉันขาดหายไปหรือไม่?

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

2
เป็นไปได้หรือไม่ที่จะเพิ่มความเร็วตารางแฮชโดยใช้แผนผังการค้นหาแบบไบนารีสำหรับการโยงแบบแยกกัน
ฉันต้องการใช้ตารางแฮชโดยใช้ Binary Search Trees เพื่อลดความซับซ้อนในการค้นหาในกระบวนการแยกการเชื่อมโยงจาก O (n) (โดยใช้รายการที่เชื่อมโยง) ถึง O (log n) (โดยใช้ BST) สามารถทำได้และถ้าใช่แล้วได้อย่างไร มันจะง่ายกว่าที่จะเข้าใจว่าการแก้ปัญหาเป็นขั้นตอนการดำเนินการตามตรรกะ ฉันต้องการลดเวลาการค้นหาใน hashtable (บิลด์โดยใช้การโยงแบบแยก) แต่ในเวลาเดียวกันฉันไม่ต้องการเพิ่มเวลาการแทรก สำหรับโครงการของฉันฉันไม่สามารถเปลี่ยนฟังก์ชันแฮชเพื่อลดการชน แต่เนื่องจากความสามารถในการขยายขนาดการชนจึงเกิดขึ้น ฉันพยายามหางานทำเพื่อที่ฉันจะได้ทำงานกับการเข้าถึงที่ดีที่สุดและแทรกเวลาในกรณีที่เกิดการชน ... คือการจัดการสถานะปัจจุบันของสิ่งต่าง ๆ มากกว่าที่จะปรับโครงสร้างอัลกอริทึมทั้งหมด หากไม่ได้เลื่อนออกไปจะต้องปรับโครงสร้าง ดังนั้นความคิดใด ๆ

2
วิธีแสดงกราฟที่มีหลาย ๆ ขอบที่อนุญาตระหว่างโหนดและขอบที่สามารถเลือกได้หายไป
ฉันกำลังพยายามหาว่าโครงสร้างข้อมูลชนิดใดที่จะใช้สำหรับการสร้างแบบจำลองการใช้งานเครือข่ายที่เป็นสมมุติฐานบางอย่าง ในสถานการณ์สมมติของฉันจำนวนผู้ใช้ที่เป็นศัตรูกันกำลังพยายามสร้างเครือข่ายคอมพิวเตอร์ที่รู้จักการเชื่อมต่อที่อาจเกิดขึ้นทั้งหมด คอมพิวเตอร์ที่ผู้ใช้รายหนึ่งต้องการเชื่อมต่ออาจไม่เหมือนกับคอมพิวเตอร์ที่ผู้ใช้รายอื่นต้องการเชื่อมต่อ ผู้ใช้ 1 อาจต้องเชื่อมต่อคอมพิวเตอร์ A, B และ D ในขณะที่ผู้ใช้ 2 อาจต้องเชื่อมต่อคอมพิวเตอร์ B, C และ E ภาพที่สร้างขึ้นด้วยความช่วยเหลือของผู้สร้างกราฟ NCTM ฉันคิดว่าแก่นของเรื่องนี้จะเป็นกราฟวงจรที่ไม่ได้บอกทิศทางด้วยโหนดที่เป็นตัวแทนของคอมพิวเตอร์และขอบที่แสดงสายเคเบิลอีเทอร์เน็ต อย่างไรก็ตามเนื่องจากลักษณะของสถานการณ์มีคุณสมบัติแปลก ๆ บางอย่างที่แยกแยะรายการคำคุณศัพท์และเมทริกซ์ adjacency (อย่างน้อยโดยไม่มีการดัดแปลงที่ไม่สำคัญ): ขอบสามารถใช้งานได้อย่าง จำกัด กล่าวคือหากผู้ใช้รายหนึ่งได้รับการเชื่อมต่อเครือข่ายที่กำหนดไม่มีผู้ใช้รายอื่นที่สามารถใช้การเชื่อมต่อนั้นได้ ในตัวอย่างผู้ใช้สีเขียวอาจไม่สามารถเชื่อมต่อกับคอมพิวเตอร์ A แต่ผู้ใช้สีแดงเชื่อมต่อ B ถึง E แม้ว่าจะไม่มีการเชื่อมโยงโดยตรงระหว่างพวกเขา ในบางกรณีคู่ของโหนดที่ระบุจะถูกเชื่อมต่อโดยมากกว่าหนึ่งขอบ ในตัวอย่างมีสายเคเบิลอิสระสองตัวที่รันจาก D ถึง E ดังนั้นผู้ใช้สีเขียวและสีน้ำเงินจึงสามารถเชื่อมต่อเครื่องเหล่านั้นได้โดยตรง อย่างไรก็ตามสีแดงไม่สามารถเชื่อมต่อได้อีกต่อไป หากคอมพิวเตอร์สองเครื่องเชื่อมต่อกันด้วยสายเคเบิลมากกว่าหนึ่งสายผู้ใช้แต่ละคนอาจเป็นเจ้าของได้ไม่เกินหนึ่งสาย ฉันจะต้องดำเนินการหลายอย่างในกราฟนี้เช่น: ตรวจสอบว่ามีการเชื่อมต่อคอมพิวเตอร์คู่หนึ่งโดยเฉพาะสำหรับผู้ใช้ที่กำหนด ระบุเส้นทางที่ดีที่สุดสำหรับผู้ใช้ที่กำหนดเพื่อเชื่อมต่อคอมพิวเตอร์เป้าหมาย ระบุการเชื่อมต่อคอมพิวเตอร์ที่มีเวลาแฝงสูงสุดสำหรับผู้ใช้ที่กำหนด (เช่นเส้นทางที่ยาวที่สุดโดยไม่แยกสาขา) ความคิดแรกของฉันคือการสร้างคอลเล็กชั่นทั้งหมดของขอบ แต่มันแย่มากสำหรับการค้นหา …

2
ทำไมไพ ธ อนจึงใช้ตารางแฮชในการนำดิจิตัลมาใช้ แต่ไม่ใช่ต้นไม้สีแดงดำ [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน6 ปีที่ผ่านมา ทำไมไพ ธ อนจึงใช้ตารางแฮชในการนำดิจิตัลมาใช้ แต่ไม่ใช่ต้นไม้สีแดงดำ กุญแจคืออะไร? ประสิทธิภาพ?

3
สถาปัตยกรรมที่พูดแล้ว abstraction layer ของฐานข้อมูลเช่น Entity Framework ของ Microsoft ทำให้ความต้องการ Data Access Layer แยกจากกันหรือไม่?
วิธีที่มันเป็น เป็นเวลาหลายปีที่ฉันจัดระเบียบโซลูชันซอฟต์แวร์ของฉันเช่น: Data Access Layer (DAL) เป็นนามธรรมธุรกิจของการเข้าถึงข้อมูล Business Logic Layer (BLL) เพื่อใช้กฎธุรกิจกับชุดข้อมูลจัดการการตรวจสอบความถูกต้อง ฯลฯ Utilities (Util) ซึ่งเป็นเพียงไลบรารีของวิธีการใช้งานทั่วไปที่ฉันสร้างขึ้นเมื่อเวลาผ่านไป Presentation Layer ซึ่งแน่นอนว่าอาจเป็นเว็บเดสก์ท็อปมือถือหรืออะไรก็ตาม วิธีที่มันเป็นตอนนี้ สำหรับสี่ปีที่ผ่านมาหรือดังนั้นฉันใช้ Entity Framework ของ Microsoft (ฉันมีอำนาจเหนือกว่า. dev dev) และฉันพบว่าการมี DAL กลายเป็นเรื่องยุ่งยากมากกว่าการทำความสะอาดเพราะบัญชี Entity Framework ได้ทำไปแล้ว งานที่ DAL ของฉันเคยทำ: มันสรุปธุรกิจของการรัน CRUDs กับฐานข้อมูล ดังนั้นฉันมักจะจบลงด้วย DAL ที่มีคอลเลกชันของวิธีการเช่นนี้: public static IQueryable<SomeObject> GetObjects(){ var db = …

5
โครงสร้างข้อมูลในการโปรแกรมเชิงฟังก์ชัน
ขณะนี้ฉันกำลังเล่นกับ LISP (โดยเฉพาะ Scheme และ Clojure) และฉันสงสัยว่าโครงสร้างข้อมูลทั่วไปนั้นจัดการกับภาษาโปรแกรมที่ใช้งานได้อย่างไร ตัวอย่างเช่นสมมติว่าฉันต้องการแก้ปัญหาโดยใช้อัลกอริธึมการค้นหาพา ธ กราฟ โดยทั่วไปแล้วเราจะแสดงกราฟนั้นในภาษาโปรแกรมที่ใช้งานได้อย่างไร (โดยหลักแล้วสนใจในรูปแบบการทำงานที่บริสุทธิ์ซึ่งสามารถนำไปใช้กับ LISP) ฉันจะลืมกราฟทั้งหมดและแก้ปัญหาด้วยวิธีอื่นได้ไหม

5
ฉันควรใช้โครงสร้างข้อมูลใดสำหรับกลยุทธ์การแคชนี้
ฉันกำลังทำงานกับแอปพลิเคชั่น. NET 4.0 ซึ่งทำการคำนวณค่อนข้างแพงในสองครั้งที่ส่งคืนเป็นสองเท่า การคำนวณนี้จะดำเนินการอย่างใดอย่างหนึ่งหลายพันในแต่ละรายการ การคำนวณเหล่านี้ดำเนินการในTaskเธรดพูลเธรด การทดสอบเบื้องต้นบางอย่างแสดงให้เห็นว่ามีการคำนวณแบบเดียวกันซ้ำแล้วซ้ำอีกดังนั้นฉันต้องการแคชผลลัพธ์n เมื่อแคชเต็มฉันต้องการที่จะโยนรายการที่ใช้บ่อยที่สุด ( แก้ไข:ฉันรู้น้อยที่สุด - ไม่สมเหตุสมผลเพราะเมื่อแคชเต็มและฉันจะแทนที่ผลลัพธ์ด้วยการคำนวณใหม่หนึ่งรายการนั้นจะใช้อย่างน้อยบ่อยครั้งและแทนที่ทันทีในครั้งถัดไปที่มีการคำนวณผลลัพธ์ใหม่ และเพิ่มลงในแคช) เพื่อที่จะนำสิ่งนี้ไปใช้ฉันคิดว่าจะใช้ a Dictionary<Input, double>(ซึ่งInputจะเป็น mini-class ที่เก็บค่าสองค่าสองอินพุต) เพื่อเก็บอินพุตและผลลัพธ์ที่แคชไว้ อย่างไรก็ตามฉันจะต้องติดตามเมื่อมีการใช้ผลลัพธ์ครั้งล่าสุด สำหรับสิ่งนี้ฉันคิดว่าฉันต้องการคอลเล็กชันที่สองที่จัดเก็บข้อมูลฉันจะต้องลบผลลัพธ์ออกจาก dictonary เมื่อแคชเริ่มเต็ม ฉันกังวลว่าการเรียงลำดับรายการนี้อย่างสม่ำเสมอจะส่งผลเสีย มีวิธีที่ดีกว่า (เช่นมีประสิทธิภาพมากกว่า) ในการทำเช่นนี้หรืออาจเป็นโครงสร้างข้อมูลทั่วไปที่ฉันไม่รู้จัก? ฉันควรทำโปรไฟล์ / การวัดประเภทใดเพื่อกำหนดประสิทธิภาพสูงสุดของการแก้ปัญหาของฉัน

4
ทำไมเรื่องราวของ MS Data Access จึงแตกหัก? เป็นลักษณะของการเข้าถึงข้อมูลหรือเป็นเพียง MS?
คำถาม StackOverflow นี้ถามว่า "ฉันจะหา Microsoft.Data.Objects ได้ที่ไหน" ปรากฎว่าคำตอบอาจเป็นไปได้ว่าใน CTP4 (รหัสแรก) การเปิดตัวของ Entity Framework 4 อย่างไรก็ตามมีการคาดเดามากมาย รวมไปถึง System.Data Entity Framework Microsoft.ApplicationBlocks.Data Microsoft.Practices.EnterpriseLibrary.Data 10 ปีที่แล้วถ้ามีคนถามคำถามที่คล้ายกันพวกเขาอาจจะได้ DAO, RDO, ADO นี่เป็นเพียงลักษณะของสัตว์ร้ายหรือเป็น MS รูปแบบนี้เกิดขึ้นกับผู้ขายรายอื่นหรือไม่ กลยุทธ์การเข้าถึงข้อมูลพื้นฐานถูกห่อหรือเปลี่ยนแปลงอย่างไร

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

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 …

3
คัมภีร์ไบเบิลของ Hashing คืออะไร
มีการอ้างอิงเหมือนCormenเกี่ยวกับแฮชและแฮชหรือไม่? โครงสร้างเฉพาะนี้ได้รับความสนใจเล็กน้อยในการศึกษา CS ของฉันด้วยเหตุผลบางอย่าง แต่ฉันต้องการเรียนรู้เพิ่มเติมเนื่องจากดูเหมือนว่าจะอยู่ทุกที่ ฉันรู้ว่า Cormen ครอบคลุม แต่ฉันกำลังมองหาบางสิ่งที่พิเศษและลึกซึ้งกว่านี้

4
สไตล์โค้ดที่ดีในการแนะนำการตรวจสอบข้อมูลทุกที่?
ฉันมีโครงการที่มีขนาดใหญ่พอที่ฉันไม่สามารถเก็บทุกแง่มุมไว้ในหัวของฉันได้อีก ฉันกำลังจัดการกับคลาสและฟังก์ชั่นจำนวนมากในนั้นและฉันกำลังส่งข้อมูลไปรอบ ๆ เมื่อเวลาผ่านไปฉันสังเกตว่าฉันยังคงได้รับข้อผิดพลาดอยู่เพราะฉันลืมว่ารูปแบบข้อมูลที่แม่นยำมีอะไรบ้างเมื่อฉันส่งมันไปยังฟังก์ชั่นที่แตกต่างกัน ( เช่นหนึ่งฟังก์ชั่นยอมรับและส่งออกอาเรย์ของสตริง ยอมรับสตริงที่ถูกเก็บไว้ในพจนานุกรม ฯลฯ ดังนั้นฉันจึงต้องเปลี่ยนสตริงที่ฉันทำงานด้วยจากการมีสตริงในอาร์เรย์เป็นสตริงในพจนานุกรม ) เพื่อหลีกเลี่ยงการต้องคิดออกว่าเกิดอะไรขึ้นฉันมักจะรักษาแต่ละฟังก์ชั่นและคลาสว่าเป็น "เอนทิตี้แยกตัว" ในแง่ที่ว่ามันไม่สามารถพึ่งพาโค้ดภายนอกที่ให้อินพุตที่ถูกต้องและต้องทำการตรวจสอบอินพุตเอง ในบางกรณีให้กำหนดข้อมูลใหม่หากข้อมูลได้รับในรูปแบบที่ไม่ถูกต้อง) สิ่งนี้ได้ลดเวลาที่ใช้ไปอย่างมากเพื่อให้แน่ใจว่าข้อมูลที่ฉันส่งไป "เหมาะกับ" ในทุกฟังก์ชั่นเพราะตอนนี้คลาสและฟังก์ชั่นของตัวเองเตือนฉันเมื่ออินพุตบางอย่างไม่ดี (และบางครั้งก็แก้ไขได้) ต้องใช้ดีบักเกอร์ผ่านโค้ดทั้งหมดอีกต่อไปเพื่อหาว่ามีอะไรเกิดขึ้นบ้าง อีกทางหนึ่งก็เพิ่มรหัสโดยรวมเช่นกัน คำถามของฉันคือถ้ารูปแบบรหัสนี้เหมาะสมสำหรับการแก้ปัญหานี้หรือไม่ แน่นอนทางออกที่ดีที่สุดคือการ refactor โครงการอย่างสมบูรณ์และตรวจสอบให้แน่ใจว่าข้อมูลมีโครงสร้างที่เหมือนกันสำหรับทุกฟังก์ชั่น - แต่เนื่องจากโครงการนี้เติบโตอย่างต่อเนื่องฉันจะจบลงด้วยการใช้จ่ายมากขึ้นและกังวลเกี่ยวกับรหัสสะอาด . (FYI: ฉันยังเป็นผู้เริ่มต้นดังนั้นโปรดแก้ตัวหากคำถามนี้ไร้เดียงสาโครงการของฉันอยู่ใน Python)

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