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

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

3
ฉันจะใช้รูปแบบพื้นที่เก็บข้อมูลสำหรับโมเดลวัตถุที่ซับซ้อนได้อย่างไร
คำถามนี้ถูกโยกย้ายจาก Stack Overflow เพราะสามารถตอบได้ใน Software Engineering Stack Exchange อพยพ 7 ปีที่ผ่านมา แบบจำลองข้อมูลของเรามีเกือบ 200 คลาสที่สามารถแบ่งออกเป็นประมาณหนึ่งโหลหน้าที่การทำงาน คงจะเป็นการดีที่จะใช้โดเมน แต่การแยกนั้นไม่สะอาดและเราไม่สามารถเปลี่ยนได้ เรากำลังออกแบบ DAL ของเราใหม่เพื่อใช้ Entity Framework และคำแนะนำส่วนใหญ่ที่ฉันเคยเห็นแนะนำให้ใช้รูปแบบ Repository อย่างไรก็ตามไม่มีตัวอย่างใดที่จัดการกับตัวแบบวัตถุที่ซับซ้อนได้ การใช้งานบางอย่างที่ฉันพบแนะนำให้ใช้ repository ต่อเอนทิตี ดูเหมือนว่าไร้สาระและไม่สามารถบำรุงรักษาได้สำหรับรุ่นที่มีขนาดใหญ่และซับซ้อน จำเป็นหรือไม่ที่จะสร้าง UnitOfWork สำหรับแต่ละการดำเนินการและที่เก็บสำหรับแต่ละเอนทิตี ฉันสามารถจบลงด้วยชั้นเรียนหลายพันชั้น ฉันรู้ว่าสิ่งนี้ไม่สมเหตุสมผล แต่ฉันได้พบแนวทางเล็กน้อยในการใช้ Repository, Unit of Work และ Entity Framework ผ่านโมเดลที่ซับซ้อนและแอปพลิเคชันทางธุรกิจที่สมจริง

3
ทำไมฉันถึงต้องผลักดันถ้าฉันทำงานคนเดียวในที่เก็บในเครื่อง?
ฉันโต้ตอบกับ Git ผ่านGitHub สำหรับ Windowsซึ่งเป็นเรื่องตลกเพราะฉันจะไม่ผลักดันที่เก็บของฉันไปที่ GitHub ฉันทำงานกับมันคนเดียวและตั้งใจจะให้ฉันใช้เท่านั้น ฉันสังเกตเห็นว่าการคอมมิชชันของฉันอยู่ในรายการภายใต้ "คอมมิทที่ไม่ซิงค์" และภายใต้ "ประวัติ" มันระบุว่า "ไม่มีคอมมิท" สิ่งใดที่ทำให้ฉันมีข้อสงสัยฉันจะทำอะไรได้บ้างโดยการผลักดันยกเว้นคำสั่งของฉันที่ระบุไว้ใน "ประวัติ"
21 git  github 

11
ในบางครั้งรหัสแฝงต่ำต้อง“ น่าเกลียด” หรือไม่
(นี่คือจุดมุ่งหมายหลักที่ผู้ที่มีความรู้เฉพาะเกี่ยวกับระบบเวลาแฝงต่ำเพื่อหลีกเลี่ยงคนที่เพิ่งตอบด้วยความคิดเห็นที่ไม่พร้อมเพรียง) คุณรู้สึกว่ามีการแลกเปลี่ยนระหว่างการเขียนโค้ด "ดี" ของโอเรียนท์กับการเขียนโค้ดเวลาแฝงที่ต่ำมาก ๆ หรือไม่? ตัวอย่างเช่นการหลีกเลี่ยงฟังก์ชั่นเสมือนจริงใน C ++ / ค่าโสหุ้ยของ polymorphism เป็นต้นการเขียนโค้ดที่ดูน่ารังเกียจ แต่มันเร็วมากหรือเปล่า? มันยืนอยู่กับเหตุผล - ใครสนใจว่ามันดูน่าเกลียด (ตราบใดที่มันบำรุงรักษาได้) - ถ้าคุณต้องการความเร็วคุณต้องการความเร็ว ฉันจะสนใจที่จะได้ยินจากคนที่ทำงานในพื้นที่ดังกล่าว
21 java  c++  c  performance  latency 

2
โดยทั่วไปแล้วฉันจะใช้ Deque ในซอฟต์แวร์การผลิตที่ไหน
ฉันค่อนข้างคุ้นเคยกับการใช้สแต็คคิวและต้นไม้ในแอปพลิเคชันซอฟต์แวร์ แต่ฉันไม่เคยใช้ Deque (Double Ended Queue) มาก่อน โดยทั่วไปแล้วฉันจะพบพวกเขาที่ไหนในป่า? มันจะอยู่ในสถานที่เดียวกันกับคิว แต่มี gribbilies พิเศษหรือไม่?

5
อะไรคือการใช้งานจริงของโมดิฟายเออร์“ ใหม่” ใน C # เกี่ยวกับการซ่อน?
เพื่อนร่วมงานและฉันกำลังดูพฤติกรรมของnewคำหลักใน C # ตามที่ใช้กับแนวคิดของการซ่อน จากเอกสาร : ใช้โมดิฟายเออร์ใหม่เพื่อซ่อนสมาชิกที่สืบทอดจากคลาสพื้นฐานอย่างชัดเจน ในการซ่อนสมาชิกที่สืบทอดให้ประกาศในคลาสที่ได้รับโดยใช้ชื่อเดียวกันและแก้ไขด้วยตัวดัดแปลงใหม่ เราได้อ่านเอกสารแล้วและเราเข้าใจว่ามันใช้ทำอะไรและทำอย่างไร สิ่งที่เราไม่สามารถจัดการได้จริงๆคือทำไมคุณต้องทำตั้งแต่แรก โมดิฟายเออร์มีมาตั้งแต่ปี 2003 และเราทั้งคู่ทำงานกับ. Net มานานกว่านั้นและไม่เคยเกิดขึ้นมาก่อน พฤติกรรมนี้จำเป็นต้องใช้ในทางปฏิบัติเมื่อใด (เช่น: นำไปใช้กับกรณีธุรกิจ) นี่เป็นคุณสมบัติที่ใช้งานได้นานกว่าประโยชน์หรือเป็นสิ่งที่ผิดปกติมากพอในสิ่งที่เราทำ (โดยเฉพาะเราทำเว็บฟอร์มและแอปพลิเคชั่น MVC และ WinForms และ WPF) ในการลองใช้คำหลักนี้และเล่นกับมันเราพบว่ามีพฤติกรรมบางอย่างที่ทำให้มันดูอันตรายเล็กน้อยหากใช้ผิดวัตถุประสงค์ สิ่งนี้ฟังดูเปิดกว้างเล็กน้อย แต่เรากำลังมองหากรณีการใช้งานเฉพาะที่สามารถนำไปใช้กับแอปพลิเคชันธุรกิจที่พบว่าเครื่องมือนี้มีประโยชน์โดยเฉพาะ
21 c#  keywords 

6
การตรวจสอบ“ โมฆะ” ใน C หรือ C ++ หมายถึงอะไร
ฉันได้เรียนรู้ภาษาซีพลัสพลัสและฉันก็เข้าใจปัญหาได้ยาก โดยเฉพาะอย่างยิ่งบทเรียนที่ฉันได้อ่านพูดถึงการทำ "ตรวจสอบโมฆะ" แต่ฉันไม่แน่ใจว่ามันหมายถึงอะไรหรือทำไมมันจำเป็น อะไรที่เป็นโมฆะ? "ตรวจสอบค่าว่าง" หมายความว่าอย่างไร ฉันจำเป็นต้องตรวจสอบค่าว่างเสมอหรือไม่? ตัวอย่างโค้ดใด ๆ จะได้รับการชื่นชมมาก
21 c++  c  null 

3
วิธีการอูฐกรณีที่คำติดต่อกันมีตัวเลข?
คำถามนี้ถูกโยกย้ายจาก Stack Overflow เพราะสามารถตอบได้ใน Software Engineering Stack Exchange อพยพ 7 ปีที่ผ่านมา เพียงแค่สงสัยว่าใครมีการประชุมที่ดีที่จะปฏิบัติตามในกรณีมุมมุมนี้ ฉันใช้ Java จริงๆ แต่คิดว่า C # folks อาจมีความเข้าใจที่ดีเช่นกัน สมมติว่าฉันกำลังพยายามตั้งชื่อคลาสที่คำสองคำติดต่อกันในชื่อคลาสเป็นตัวเลข (โปรดทราบว่าคำถามเดียวกันสามารถถามชื่อตัวระบุได้) ไม่สามารถเป็นตัวอย่างที่ดี แต่ลองนึกถึงบางอย่างเช่น "ค่า IEEE 802 16 บิต" การรวมตัวย่อติดต่อกันเป็น doable หากคุณยอมรับ classnames HttpUrlConnectionเช่น แต่มันอย่างจริงจังทำให้ฉันโยนขึ้นเล็ก ๆ น้อย ๆ IEEE80216BitValueที่จะคิดว่าการตั้งชื่อชั้นเรียน ถ้าฉันต้องเลือกฉันจะบอกว่ามันแย่ยิ่งกว่าIEEE802_16BitValueที่ดูเหมือนผิดพลาด สำหรับตัวเลขขนาดเล็กฉันจะพิจารณาIEEE802SixteenBitValueแต่นั่นก็ไม่ได้ดีขนาดนั้น ใครบ้างที่มีการประชุม? ดูเหมือนว่าแนวทางการตั้งชื่อของ Microsoft เป็นเพียงแนวทางเดียวที่อธิบายการตั้งชื่อตัวย่อโดยละเอียดเพื่อให้งานเสร็จ แต่ไม่มีใครได้ระบุหมายเลขในชื่อคลาส

8
งานใหม่สำหรับนักพัฒนาอาวุโส
ฉันมีนักพัฒนาอาวุโสที่มีประสบการณ์แปดปีของ. NET เริ่มตั้งแต่วันพรุ่งนี้เพื่อทำงานกับแอปพลิเคชัน 11,000 บรรทัด ในทีมมีตัวฉันและโปรแกรมเมอร์คนอื่น เราทั้งคู่มีประสบการณ์ประมาณสามปีในแต่ละครั้ง มันเป็นโครงการแรกของฉันในฐานะผู้จัดการ (ฉันก็เป็นผู้พัฒนาโครงการด้วยเช่นกัน) และนี่เป็นครั้งแรกที่ฉันต้องแนะนำใครสักคนให้รู้จักกับรหัสฐานที่สร้างไว้แล้ว เห็นได้ชัดว่าฉันจะข้ามแต่ละโมดูลกระบวนการปรับใช้ ฯลฯ และมอบตำแหน่งของที่เก็บแหล่งควบคุมเอกสารประกอบ (ซึ่งไม่ได้ดีที่สุด) เป็นต้น ฉันควรให้พวกเขานานแค่ไหนก่อนที่พวกเขาจะพร้อมที่จะเริ่มเขียนคุณสมบัติใหม่และแก้ไขข้อบกพร่อง?

4
REST กับ RESTful และบริการเว็บ“ ปกติ” - เหมือนกันหรือไม่?
ฉันได้อ่านคำจำกัดความและการอภิปรายเกี่ยวกับแอปพลิเคชัน REST และ / หรือ RESTful แล้ว แต่ฉันยังไม่เข้าใจความหมายที่แท้จริงของมัน ฉันมักจะทำงานกับแอพที่ดึงข้อมูลผ่าน GET หรือส่งข้อมูลผ่าน POST ไปยังเว็บเซอร์วิสบางตัว (โดยปกติจะเป็นสคริปต์ PHP) จากนั้นรับข้อมูลจากฐานข้อมูลหรือเขียนลงในฐานข้อมูล ตอนนี้เป็นแอปที่เงียบสงบหรือไม่ ถ้าไม่ใช่แอป RESTful จะเป็นอย่างไร อะไรคือความแตกต่างระหว่างแนวคิด RESTful และแนวคิดที่ฉันทำงานด้วย กรุณาอธิบายผ่านตัวอย่าง นอกจากนี้บางคนกำลังพูดถึง REST และบางคนเกี่ยวกับแอป RESTful ฉันพบว่าคำว่า REST หมายถึงแนวคิดเชิงทฤษฎีในขณะที่ RESTful จะใช้เมื่อเราพูดถึงแอพที่เฉพาะเจาะจง ถูกต้องหรือมีความแตกต่างระหว่างแอพ REST และ RESTful จริงหรือไม่?

4
มีผลข้างเคียงด้านลบของการแยกโมดูลขนาดใหญ่หรือไม่? [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน5 ปีที่ผ่านมา ฉันกำลังดูโครงการ github และพบโมดูลนี้ซึ่งมีมากกว่า 10,000 บรรทัด เป็นเรื่องธรรมดาที่จะมีรหัสมากในโมดูลเดียวหรือไม่? สำหรับฉันแล้วดูเหมือนว่าสิ่งนี้ควรจะแยกออกเป็นหลายโมดูล อาจเป็นหนึ่งสำหรับเครื่องยนต์ db แต่ละตัว นักพัฒนาได้รับประโยชน์อะไรจากการสร้างโมดูลขนาดใหญ่หนึ่งเช่นนี้ (นอกเหนือจาก "มีทั้งหมดในที่เดียว") หรือมีข้อเสียอะไรจากการแยกมันออกมา (นอกเหนือจาก "ความซับซ้อน")

2
การใช้อัญมณี LGPL ส่งผลต่อแอปพลิเคชั่นลิขสิทธิ์ของฉันอย่างไร
คำถามนี้ถูกโยกย้ายจาก Stack Overflow เพราะสามารถตอบได้ใน Software Engineering Stack Exchange อพยพ 7 ปีที่ผ่านมา ฉันกำลังพัฒนาแอปพลิเคชั่นทับทิมโอเพนซอร์ซภายใต้ใบอนุญาต MIT ฉันใช้ใบอนุญาตนี้เพราะฉันไม่ต้องการ จำกัด ผู้ใช้แอปพลิเคชัน นอกจากนี้ฉันสามารถอ่านและทำความเข้าใจใบอนุญาตนี้ได้จริง ฉันเพิ่งเริ่มใช้พลอยทับทิมอื่นในโครงการของฉัน (ต้องมี "somegem") อัญมณีทับทิมนี้อยู่ภายใต้ใบอนุญาต LGPL ฉันต้องเปลี่ยนอะไรเกี่ยวกับโครงการของฉันเพราะฉันใช้พลอยทับทิมอื่น ๆ ที่ได้รับอนุญาตจาก LGPL หรือไม่? โครงการของฉันไม่มีรหัสแหล่งที่มาสำหรับอัญมณีอื่นและไม่ได้ส่งมาพร้อมกับโครงการของฉัน มันเป็นรายการที่ขึ้นอยู่กับการพึ่งพาเพื่อให้ทับทิมอัญมณีจะติดตั้งและโครงการของฉันจะเรียกมันจากรหัสของฉัน นอกจากนี้มันจะมีประโยชน์หากรู้ว่ามีใบอนุญาตใด ๆ ที่ฉันต้อง "ระวัง" เพราะการใช้พวกเขาจะส่งผลกระทบต่อใบอนุญาตของโครงการของฉัน มีการโพสต์อื่น ๆ เกี่ยวกับหัวข้อนี้ แต่ใช้ถ้อยคำในรูปแบบที่แตกต่างกัน เนื่องจากฉันพบว่าสัญญาอนุญาตนี้ยุ่งยากฉันหวังว่าจะได้รับคำตอบที่ตรงกับสถานการณ์ของฉัน ขอบคุณ Corsen

5
ORMs เปิดใช้งานการสร้างแบบจำลองโดเมนที่หลากหลายหรือไม่
หลังจากใช้ Hibernate ในโครงการส่วนใหญ่ของฉันเป็นเวลาประมาณ 8 ปีฉันได้ตกลงกับ บริษัท ที่ไม่สนับสนุนการใช้งานและต้องการให้แอปพลิเคชันโต้ตอบกับ DB ผ่านขั้นตอนการจัดเก็บเท่านั้น หลังจากทำสิ่งนี้สองสามสัปดาห์ฉันก็ไม่สามารถสร้างรูปแบบโดเมนที่หลากหลายของแอปพลิเคชันที่ฉันเริ่มสร้างได้และแอปพลิเคชันก็ดูเหมือนสคริปต์ธุรกรรมที่น่ากลัว ปัญหาบางอย่างที่ฉันพบคือ: ไม่สามารถนำทางกราฟวัตถุในขณะที่ขั้นตอนการจัดเก็บเพียงแค่โหลดข้อมูลขั้นต่ำซึ่งหมายความว่าบางครั้งเรามีวัตถุที่คล้ายกันที่มีเขตข้อมูลที่แตกต่างกัน ตัวอย่างหนึ่งคือ: เรามีขั้นตอนการจัดเก็บเพื่อดึงข้อมูลทั้งหมดจากลูกค้าและอีกวิธีหนึ่งในการดึงข้อมูลบัญชีรวมทั้งสองสามช่องจากลูกค้า ตรรกะจำนวนมากจบลงในคลาสตัวช่วยดังนั้นโค้ดจึงมีโครงสร้างมากขึ้น (โดยใช้เอนทิตีที่ใช้เป็นโครงสร้าง C แบบเก่า) โค้ดนั่งร้านน่าเบื่อมากขึ้นเนื่องจากไม่มีกรอบที่แยกชุดผลลัพธ์จากกระบวนงานที่เก็บไว้และวางไว้ในเอนทิตี คำถามของฉันคือ: มีใครอยู่ในสถานการณ์ที่คล้ายกันและไม่เห็นด้วยกับวิธีการจัดเก็บ? คุณทำอะไรลงไป? มีประโยชน์จริง ๆ ของการใช้กระบวนงานที่เก็บไว้หรือไม่ นอกเหนือจากจุดที่ไร้สาระของ "ไม่มีใครสามารถออกตารางลดลง" มีวิธีการสร้างโดเมนที่หลากหลายโดยใช้ขั้นตอนการจัดเก็บหรือไม่? ฉันรู้ว่ามีความเป็นไปได้ที่จะใช้ AOP ในการฉีด DAOs / ที่เก็บข้อมูลลงในเอนทิตีเพื่อให้สามารถนำทางกราฟวัตถุ ฉันไม่ชอบตัวเลือกนี้เนื่องจากอยู่ใกล้กับวูดู ข้อสรุป ก่อนอื่นขอบคุณทุกคำตอบของคุณ บทสรุปที่ฉันได้มาคือ ORM ไม่สามารถเปิดใช้งานการสร้างโมเดล Rich Domain (ตามที่บางคนกล่าวถึง) แต่มันทำให้การทำงานง่ายขึ้น ต่อไปนี้เป็นคำอธิบายโดยละเอียดเพิ่มเติมของข้อสรุป แต่ไม่ได้อยู่บนพื้นฐานของข้อมูลที่ยาก แอปพลิเคชันส่วนใหญ่ร้องขอและส่งข้อมูลไปยังระบบอื่น ในการทำสิ่งนี้เราสร้างสิ่งที่เป็นนามธรรมในเงื่อนไขของแบบจำลอง (เช่นเหตุการณ์ทางธุรกิจ) และโมเดลของโดเมนจะส่งหรือรับเหตุการณ์ …

1
การเรียนรู้การโปรแกรมแบบอะซิงโครนัส [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัพเดตคำถามเพื่อให้เป็นหัวข้อสำหรับ Software Engineering Stack Exchange ปิดให้บริการใน4 ปีที่แล้ว การเขียนโปรแกรมที่ขับเคลื่อนด้วยเหตุการณ์แบบไม่บล็อกไม่ตรงกันดูเหมือนว่าจะเป็นความโกรธทั้งหมด ฉันมีความเข้าใจแนวคิดพื้นฐานเกี่ยวกับความหมายทั้งหมดนี้ อย่างไรก็ตามสิ่งที่ฉันไม่แน่ใจคือเมื่อใดและรหัสของฉันจะได้ประโยชน์จากการเป็นแบบอะซิงโครนัสหรือวิธีการบล็อก IO การไม่บล็อก ฉันแน่ใจว่าฉันสามารถใช้ห้องสมุดเพื่อทำสิ่งนี้ได้ แต่ฉันสนใจในแนวคิดเชิงลึกมากขึ้นและวิธีการต่าง ๆ ในการนำมันมาใช้เอง มีหนังสือที่ครอบคลุม / แตกหักหรือแหล่งข้อมูลอื่น ๆ ในเรื่องนี้ (เช่นGoFสำหรับรูปแบบการออกแบบหรือK&Rสำหรับ C, tldpสำหรับสิ่งต่าง ๆ เช่นทุบตี) (หมายเหตุ: ฉันไม่แน่ใจว่านี่เป็นคำถามที่ตรงกับคำถามของฉันในการเขียนโปรแกรมที่ขับเคลื่อนด้วยเหตุการณ์การเรียนรู้หรือไม่ )

4
อะไรคือชื่อสำนวนที่ใช้วิธีการผูกมัดเพื่อสร้างวัตถุ?
ฉันมักจะใช้รูปแบบที่ฉันใช้วิธีการผูกมัดการตั้งค่าวัตถุคล้ายกับBuilderหรือPrototypeรูปแบบ แต่ไม่ได้สร้างวัตถุใหม่ที่มีการเรียกแต่ละวิธีแทนการปรับเปลี่ยนวัตถุเดิม ตัวอย่าง: new Menu().withItem("Eggs").withItem("Hash Browns").withStyle("Diner"); เพียงแค่สงสัยว่ามีชื่อสำหรับรูปแบบนี้หรือไม่และพิจารณาว่าเป็นรูปแบบการต่อต้านหรือไม่เพราะถึงแม้ว่ามันจะสามารถอ่านได้อย่างคล่องแคล่วมากขึ้นก็สามารถนำไปสู่โซ่วิธียาว

5
ในระบบ MVC รหัสการคงอยู่ของฐานข้อมูลควรอยู่ที่ไหน
ฉันเห็นการกำหนดค่าหลายอย่างสำหรับการเก็บข้อมูลในฐานข้อมูล โดยทั่วไปแล้วการออกแบบสามประเภทนั้นดูเหมือนกันในมุมโลกของฉัน: คอนโทรลเลอร์จัดการการคงอยู่ ตัวแบบจัดการความเพียร ห้องสมุดบุคคลที่สามจัดการการคงอยู่โดยปกติจะต้องมีหมายเหตุประกอบบางอย่างในแบบจำลอง ฉันสงสัยว่าการกำหนดค่าใด (ถ้ามี) เป็นแนวคิดที่ง่ายที่สุดในการใช้ / เข้ากันได้กับสถาปัตยกรรม MVC มากที่สุด? (หากไม่ใช่รายการที่ฉันแสดงโปรดให้รายละเอียดคร่าวๆ / ภาพรวมซึ่งเป็นส่วนหนึ่งของคำตอบ)
21 mvc 

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