คำถามติดแท็ก design

คำถามเกี่ยวกับการแก้ปัญหาและการวางแผนแก้ปัญหาผ่านการออกแบบซอฟต์แวร์

4
คุณจะจัดการกับผู้ใช้หลายคนในการแก้ไขข้อมูลชิ้นเดียวกันใน webapp ได้อย่างไร?
มีโครงการที่ฉันกำลังทำอยู่ที่ต้องการผลิตเว็บแอปพลิเคชันที่จะจัดการรายการงานระหว่างผู้ใช้หลายคน นี่คือรายการงานหลักที่มีรายการงานกระจายโดยผู้ใช้ที่ได้รับอนุญาต ผู้ใช้แต่ละคนมีบัญชีของตนเองเพื่อเข้าสู่ระบบและดูงานที่ได้รับมอบหมาย เป็นไปได้ที่ผู้ใช้หลายคนจะมีภารกิจเดียวที่เหมือนกัน ฉันกำลังพยายามที่จะออกรายละเอียดของโครงการออกมาจากสิ่งนี้ในขณะที่ฉันกำลังดิ้นรนมากขึ้นด้วยแนวคิดโดยรวมของวิธีการจัดการกับสถานการณ์ต่อไปนี้ แต่ถ้ามันช่วยฉันใช้ Java, EclipseLink และ GWT กับ RequestFactory ฐานข้อมูลคือ PostgreSQL ดังนั้นปัญหาเกี่ยวกับความคิดที่ฉันพยายามจะกระทบยอดคือ: หากงานเดียวที่เกิดขึ้นกับผู้ใช้หลายคนเปลี่ยนแปลงในทางใด ๆ เช่นงานที่ทำเสร็จแล้วถูกลบ ฯลฯ รายการงานของผู้ใช้ทั้งหมดที่มีงานนี้จะได้รับการอัปเดต รูปแบบการออกแบบใดที่ช่วยในการนำฟังก์ชั่นนี้ไปใช้? รูปแบบบางอย่างที่ฉันดูเป็นผู้สังเกตการณ์และผู้ไกล่เกลี่ย - มีรูปแบบอื่น ๆ ที่ควรพิจารณาในสิ่งเหล่านี้หรือไม่? สมมติว่ามีผู้ใช้สองคนเปลี่ยนงานเดียวกันในเวลาเดียวกัน ก่อนอื่นฉันควรอนุญาตให้สถานการณ์นั้นเกิดขึ้นหรือฉันควรล็อคไว้จนกว่าจะมีคนหนึ่งหรืออีกคนหนึ่งทำการเปลี่ยนแปลง? ประการที่สองถ้าฉันไม่ใส่กุญแจฉันจะกระทบยอดการเปลี่ยนแปลงที่จะยอมรับได้อย่างไร สิ่งนี้เกี่ยวข้องกับสถานการณ์ใน 1 เนื่องจากผู้ใช้ 1 สามารถส่งข้อมูลและก่อนที่ผู้ใช้ 2 จะได้รับข้อมูลที่อัปเดตเขา / เธออาจดำเนินการต่อไปและส่งการเปลี่ยนแปลงของเขา / เธอ ฉันกำลังมองหาจุดชี้แนะคำแนะนำหรือเคล็ดลับใด ๆ ที่คุณสามารถให้ในการซิงค์ข้อมูลระหว่างอินสแตนซ์ต่าง ๆ ของเว็บแอพนี้อย่างถูกต้อง ฉันจะขอบคุณมันมาก!

9
มีภาษาโปรแกรมใดบ้างที่เป็นไปตามแนวทางการพัฒนาแบบมินิมัลลิสต์?
ฉันพบว่าเมื่อภาษาได้รับการพิจารณาเหมือนซอฟต์แวร์เชิงพาณิชย์มีความจำเป็นเสมอที่จะต้องเพิ่มคุณสมบัติใหม่เพื่อปรับการออกรุ่นใหม่ สามารถมีหรือมีภาษาที่เวอร์ชัน 1.0 เป็นเวอร์ชั่นสุดท้ายหรือไม่? แน่นอนว่าการแก้ไขข้อบกพร่องได้รับการยกเว้นจากสิ่งนี้ แต่ชุดคุณลักษณะยังคงเหมือนเดิมหรือไม่ วิธีนี้คุณลักษณะทุกอย่างในภาษาจะเข้ากันได้ดีและดูเหมือนจะไม่ถูกยึดติดหลังจากความจริงที่มีคุณลักษณะที่ล้าสมัยยังคงอยู่เนื่องจากความเข้ากันได้ย้อนหลัง ฉันคิดว่าภาษาเชิงวิชาการบางอย่างเป็นเช่นนี้? แต่มีภาษาที่ประสบความสำเร็จทางการค้าตามแนวคิดนี้หรือไม่? ห้องสมุดที่แนบมาก็มีอิสระที่จะรับฟีเจอร์ใหม่ด้วยเช่นกัน แต่ภาษาก็ยังคงไม่เปลี่ยนแปลงอยู่เสมอ ตัวอย่างหนึ่งที่ฉันสามารถให้ได้คือหนึ่งในภาษาที่ฉันโปรดปราน C # ซึ่งฉันใช้บ่อยมากมีการเพิ่มฟีเจอร์ให้มากขึ้นทุกครั้ง เพื่อใช้ประโยชน์จากสิ่งเหล่านี้ฉันต้องทิ้งงานจริงไว้ในมือและใช้เวลาในการเรียนรู้สิ่งเหล่านี้แทนความสามารถในการรับแนวคิดที่ไม่สำคัญและรวมตัวเองเพื่อแก้ไขปัญหาที่ซับซ้อนได้อย่างง่ายดาย ดังนั้นฉันคิดว่าฉันกำลังมองหาวิธีการที่มินิมัลลิสต์ที่ทุกอย่างสอดคล้องกันเข้าท่าและเป็นมุมฉากเท่าที่จะทำได้

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

8
วิธีสากลในการจัดเก็บที่อยู่ทางภูมิศาสตร์ / ที่ตั้งในฐานข้อมูลคืออะไร? [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน2 ปีที่ผ่านมา รูปแบบที่ถูกต้องของที่อยู่ทางภูมิศาสตร์ / ที่ตั้งซึ่งเหมาะสมกับที่อยู่ใด ๆ บนโลกคืออะไร ในขณะนี้ฉันมี: ประเทศ เมือง ถนน จำนวน ข้อมูลตัวอักษร (เพื่อความง่าย) ซิป ลาดพร้าว / LNG แต่ฉันเชื่อว่าฉันสามารถปรับปรุงได้: อาจมีรัฐ / ภูมิภาคของประเทศหรือบางอย่างเช่นพื้นที่ หรือไม่มีพื้นที่ / ภูมิภาค / รัฐในสิงคโปร์หรือฮ่องกง อาจไม่มีถนน แต่มีถนนหรือถนนหรืออย่างอื่น จำนวนอาคารอาจเป็นแบบผสม อาจมีพื้น หมายเลขห้อง ฯลฯ ....

4
มีเหตุผลที่ดีที่จะทำให้ฟังก์ชั่นที่บริสุทธิ์ไม่ใช่แบบสาธารณะหรือไม่?
ฉันมีการอภิปรายเล็กน้อยเกิดขึ้นกับเพื่อนร่วมงาน มีเหตุผลที่ดีที่จะซ่อน / ห่อหุ้มฟังก์ชั่นที่บริสุทธิ์หรือไม่? โดย "pure" ฉันหมายถึงคำจำกัดความของวิกิพีเดีย : ส่งคืนผลลัพธ์เดียวกันจากอินพุตเดียวกันเสมอ (เพื่อประโยชน์ในการสนทนาFoo Create(){ return new Foo(); }นี้ถือว่าไม่บริสุทธิ์หากFooไม่มีความหมายตามตัวอักษร) ห้ามใช้สถานะที่ไม่แน่นอน (ยกเว้นตัวแปรโลคัล) หรือ I / O ไม่ก่อให้เกิดผลข้างเคียง

7
ข้อดีและข้อเสียของ HTML5 แนวทางแอพมือถือแบบเนทีฟและไฮบริดคืออะไร
ฉันต้องการพัฒนาแอปพลิเคชั่นมือถือ ฉันเพิ่งอ่านบทความในTelerik Forumซึ่งเปรียบเทียบกับแอปพลิเคชั่นมือถือสามประเภทและฉันไม่รู้ว่าควรเริ่มต้นจากที่ใด นี่คือรูปภาพที่อธิบายข้อดีข้อเสียของตัวเลือกการออกแบบมือถือที่แตกต่างกัน ในการตัดสินใจระหว่างตัวเลือกการออกแบบเหล่านี้ฉันต้องการทำความเข้าใจข้อดีข้อเสียของตัวเลือกสถาปัตยกรรมแต่ละตัวที่ระบุไว้ในแผนภาพ ข้อดีและข้อเสียของสถาปัตยกรรมแต่ละวิธีมีอะไรบ้าง

3
รูปแบบที่แนะนำสำหรับการวางแผนจุดปลาย REST สำหรับการเปลี่ยนแปลงที่คาดการณ์ไว้คืออะไร
การพยายามออกแบบ API สำหรับแอปพลิเคชันภายนอกที่มีการคาดการณ์ล่วงหน้าสำหรับการเปลี่ยนแปลงนั้นไม่ใช่เรื่องง่าย แต่การคิดล่วงหน้าเล็กน้อยจะทำให้ชีวิตง่ายขึ้นในภายหลัง ฉันกำลังพยายามสร้างโครงร่างที่จะรองรับการเปลี่ยนแปลงในอนาคตในขณะที่ยังคงเข้ากันได้แบบย้อนกลับโดยปล่อยให้ตัวจัดการเวอร์ชันก่อนหน้าเข้าแทนที่ ข้อกังวลหลักของบทความนี้คือรูปแบบใดที่ควรปฏิบัติตามสำหรับจุดสิ้นสุดที่กำหนดไว้ทั้งหมดสำหรับผลิตภัณฑ์ / บริษัท ที่กำหนด โครงการฐาน ได้รับเทมเพลต URL ฐานของhttps://rest.product.com/ผมได้วางแผนว่าบริการทั้งหมดอาศัยอยู่ภายใต้/apiพร้อมกับ/authและปลายทางที่ไม่ใช่ส่วนที่เหลืออื่น ๆ /docเช่น ดังนั้นฉันสามารถสร้างจุดปลายพื้นฐานดังนี้: https://rest.product.com/api/... https://rest.product.com/auth/login https://rest.product.com/auth/logout https://rest.product.com/doc/... จุดบริการ ตอนนี้สำหรับปลายทางเอง ความกังวลเกี่ยวกับPOST, GET, DELETEไม่ได้เป็นวัตถุประสงค์หลักของบทความนี้และเป็นกังวลกับการกระทำเหล่านั้นเอง จุดปลายสามารถแบ่งออกเป็นเนมสเปซและการกระทำได้ แต่ละการกระทำจะต้องนำเสนอตัวเองในวิธีที่จะสนับสนุนการเปลี่ยนแปลงขั้นพื้นฐานในประเภทผลตอบแทนหรือพารามิเตอร์ที่จำเป็น การใช้บริการแชทสมมุติที่ผู้ใช้ที่ลงทะเบียนสามารถส่งข้อความเราอาจมีจุดสิ้นสุดดังต่อไปนี้: https://rest.product.com/api/messages/list/{user} https://rest.product.com/api/messages/send ตอนนี้เพื่อเพิ่มการรองรับเวอร์ชันสำหรับการเปลี่ยนแปลง API ในอนาคตซึ่งอาจแตกหัก เราสามารถเพิ่มลายเซ็นเวอร์ชันหลังจาก/api/หรือหลังจาก/messages/นั้น เมื่อกำหนดsendจุดสิ้นสุดเราจะได้สิ่งต่อไปนี้สำหรับ v1 https://rest.product.com/api/v1/messages/send https://rest.product.com/api/messages/v1/send ดังนั้นคำถามแรกของฉันคือสถานที่ที่แนะนำสำหรับตัวระบุรุ่นคืออะไร ผู้จัดการรหัสควบคุม ดังนั้นตอนนี้เราได้สร้างขึ้นแล้วเราจำเป็นต้องสนับสนุนเวอร์ชันก่อนหน้าดังนั้นเราจึงต้องจัดการกับรหัสสำหรับเวอร์ชั่นใหม่แต่ละเวอร์ชั่นซึ่งอาจเลิกใช้ไปตามกาลเวลา สมมติว่าเรากำลังเขียนจุดปลายใน Java เราสามารถจัดการสิ่งนี้ผ่านแพ็คเกจ package com.product.messages.v1; public interface MessageController { …

5
ออกแบบเอกสารโดยเป็นส่วนหนึ่งของ Agile
ที่ทำงานของฉันเราเผชิญกับความท้าทายใน "เปรียว" บ่อยเกินไปที่มีความหมาย "ข้อกำหนดที่คลุมเครือเกณฑ์การยอมรับที่ไม่ดีโชคดี!" เราพยายามที่จะแก้ไขปัญหาดังกล่าวเพื่อเป็นการปรับปรุงทั่วไป ดังนั้นเป็นส่วนหนึ่งของเรื่องนั้นฉันขอเสนอให้เราสร้างเอกสารการออกแบบที่สะท้อนถึงผลของการสืบสวนเบื้องต้นเกี่ยวกับผลกระทบของฟีเจอร์ที่กำหนดภายในระบบและรวมถึงคำตอบสำหรับคำถามที่เรามี ถามธุรกิจ มีมาตรฐานที่มีประสิทธิภาพสำหรับสิ่งนี้หรือไม่? ขณะนี้เรากำลังเผชิญกับสถานการณ์ที่ฟีเจอร์ใหม่อาจส่งผลกระทบต่อหลาย ๆ พื้นที่ในระบบ"โคลนก้อนใหญ่"ของเราและการคาดการณ์เริ่มขึ้นเนื่องจากหนี้ทางเทคนิคนี้ หวังว่ากระบวนการออกแบบที่รอบคอบจะช่วยได้มากขึ้น

8
ซอฟต์แวร์ใดที่สามารถใช้สร้างไดอะแกรมสถาปัตยกรรม [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัพเดตคำถามเพื่อให้เป็นหัวข้อสำหรับ Software Engineering Stack Exchange ปิดให้บริการใน6 ปีที่ผ่านมา ล็อคแล้ว คำถามและคำตอบนี้ถูกล็อคเนื่องจากคำถามอยู่นอกหัวข้อ แต่มีความสำคัญทางประวัติศาสตร์ ขณะนี้ไม่ยอมรับคำตอบหรือการโต้ตอบใหม่ ฉันใช้ MS Visio สำหรับงานออกแบบ / สถาปัตยกรรมส่วนใหญ่เมื่อฉันต้องสามารถบันทึกไดอะแกรมที่ใดที่หนึ่งและแก้ไขในภายหลัง ฉันไม่ใช่แฟนตัวยงที่ใหญ่ที่สุดของ Visio แต่มันทำงานได้สำเร็จ (และทำงานให้ฟรี) ฉันสงสัยว่ามีทางเลือกที่ดีสำหรับซอฟต์แวร์ Visio ที่มีราคาค่อนข้างแพงหรืออาจจะเป็นสิ่งที่ดีกว่าเดิมที่พวกคุณเคยใช้มาแล้วในอดีตและรู้สึกสบายใจ แน่นอนฉันต้องการมีโปรแกรมนั้นในกล่องเครื่องมือของฉัน!

6
การอ้างอิงแบบวงกลมไปยังตัวชี้พาเรนต์ยอมรับได้เมื่อใด
คำถามStack Overflowนี้เกี่ยวกับชายด์ที่มีการอ้างอิงถึงพาเรนต์ผ่านตัวชี้ ความเห็นค่อนข้างสำคัญในตอนแรกของการออกแบบซึ่งเป็นความคิดที่น่ากลัว ฉันเข้าใจว่านี่อาจไม่ใช่ความคิดที่ดีที่สุดโดยทั่วไป จากกฎทั่วไปของหัวแม่มือดูเหมือนว่ายุติธรรมที่จะพูดว่า "อย่าทำอย่างนี้!" อย่างไรก็ตามฉันสงสัยว่ามีเงื่อนไขอะไรบ้างที่คุณจะต้องทำอะไรแบบนี้ คำถามนี้ที่นี่และคำตอบ / ความเห็นที่เกี่ยวข้องแนะนำแม้กระทั่งกราฟที่จะไม่ทำสิ่งนี้
24 design 

8
ในการกระทำของผู้ใช้วันละครั้ง: รีเซ็ต 24 ชั่วโมงเทียบกับรีเซ็ตเที่ยงคืน [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน12 เดือนที่ผ่านมา เมื่อผู้ใช้สามารถทำการกระทำได้วันละครั้งเท่านั้นเช่นรับตั๋วฟรีสำหรับการแข่งขันมีความเป็นไปได้สองอย่างที่ฉันได้พบในประสบการณ์ของฉัน 1) รีเซ็ต 24 ชั่วโมง หากเขาทำการกระทำในวันที่ 1 เมื่อเวลา 23:45 น. เขาจะสามารถดำเนินการได้อีกครั้งในวันที่ 2 ในวันที่หรือหลังเวลา 11:45 เขาจะไม่สามารถทำได้ 11:44 ในวันที่ 2 2) รีเซ็ตเที่ยงคืน (หรือเวลาใดก็ได้) ไม่ว่าผู้ใช้จะทำอะไรในวันที่ 1 เมื่อใดก็ตามที่กลายเป็นเที่ยงคืนและวันที่ 2 เริ่มต้นเขาจะสามารถดำเนินการได้อีกครั้ง ทั้งสอง จำกัด ผู้ใช้ในการดำเนินการเพียงหนึ่งการกระทำต่อวัน แต่ฉันมักจะเจอวิธีที่ 1 ซึ่งฉันคิดว่าไม่สะดวกด้วยเหตุผลสองประการ: ก่อนอื่นฉันต้องรอเวลา และครั้งที่สองในช่วงเวลานานการประทับเวลาของฉันที่ดำเนินการจะกลายเป็นในภายหลังและหลังจากนั้นเนื่องจากฉันจะไม่สามารถดำเนินการได้อย่างแน่นอน ณ เวลาประทับนั้นทุกวันเพียงไม่กี่วินาทีหรือนาทีต่อมา มีเหตุผลทางเทคนิคหรือไม่ที่ใครจะชอบวิธีที่ 1 แม้ว่าในความคิดของฉันข้อเสียที่สำคัญสำหรับผู้ใช้ที่ระบุไว้ล่วงหน้า? แก้ไขเพื่อระบุ: ฉันกำลังพูดถึงตัวอย่างโดยเฉพาะอย่างยิ่งที่ไม่จำเป็นต้องใช้เวลาว่าง 24 ชั่วโมงเช่นในการหมุนฟรีในปัจจุบันของ …

5
แนวทางปฏิบัติที่ดีที่สุดสำหรับการออกแบบฐานข้อมูลใหม่
ฉันตระหนักถึงแนวปฏิบัติที่ดีที่สุดทั่วไปบางอย่างเมื่อออกแบบฐานข้อมูลสำหรับแอปพลิเคชัน แต่สิ่งที่เกี่ยวกับการออกแบบใหม่? ฉันอยู่ในทีมที่มอบหมายการออกแบบแอปพลิเคชันธุรกิจภายในใหม่ถึงแม้ว่าฉันจะพูดว่า "ภายใน" แต่ฉันก็ยังโชคร้ายที่มีคนจำนวนมากที่ไม่ได้ติดต่อกับผู้ใช้จริงของระบบ โปรแกรมปัจจุบันอยู่ใน Oracle Forms ซึ่งกระจายอยู่ในตารางที่ไม่ได้ถูกทำให้เป็นมาตรฐานซึ่งบางครั้งมีตารางที่ใกล้เคียงกันหลายชุดซึ่งมีข้อมูลที่แตกต่างกันเล็กน้อย ข้อ จำกัด มักจะอยู่ในรูปแบบของขั้นตอนการจัดเก็บที่มีการบังคับใช้ไม่ดี แม้แต่ประเภทก็ดูเหมือนจะไม่ถูกจัดเก็บไว้อย่างถูกต้อง ฉันพบข้อมูลที่ไม่ดีทุกประเภทที่ Oracle ดูเหมือนว่าจะเพิกเฉย แต่ได้ให้ตัวช่วยสร้างการนำเข้าและส่งออกของ SQL Server (และถูกต้องแล้ว) (ตัวอย่างเช่นจำนวนเต็มสองหลักไม่ได้เป็นการ datetime ที่สมบูรณ์!) โปรแกรมดั้งเดิมอาจย้อนกลับไปเมื่อยี่สิบปีที่แล้วและนักพัฒนาดั้งเดิมทั้งหมดได้เลิกใช้งานไปนานแล้วแม้แต่ผู้สูงอายุที่นี่ก็ยังไม่รู้เลยว่าพวกเขาเป็นใคร ด้วยเหตุนี้จึงไม่มีข้อกำหนดที่ชัดเจนใด ๆ ที่จะต้องกำจัด - เราเพียง แต่ควรทำซ้ำฟังก์ชันการทำงานของแอปพลิเคชันที่มีอยู่และเก็บข้อมูลที่มีอยู่ ผลลัพธ์สุดท้ายของการเขียนซ้ำจะเป็นเวอร์ชั่นที่ทำงานบนเว็บที่ทำงานบน ASP.NET พร้อมกับ MS SQL Server สำหรับด้านหลัง เพื่อนร่วมทีมนักพัฒนาซอฟต์แวร์อีกสองคนของฉันอายุมากกว่าฉันมากทั้งสองมีภูมิหลังทางธุรกิจ / MIS ในขณะที่ฉันเป็น CS ประสบการณ์ของสมาชิกอาวุโสนั้นเกือบจะเป็นรูปแบบของออราเคิลเท่านั้นและสมาชิกคนอื่น ๆ ส่วนใหญ่ได้ทำแอปพลิเคชันทางธุรกิจใน Visual Basic แม้ว่าพื้นหลังฐานข้อมูลของฉันจะถูก จำกัด ให้ออกแบบฐานข้อมูลใหม่สำหรับโครงการใน …

8
โกหก 2: รหัสควรได้รับการออกแบบรอบ ๆ แบบจำลองของโลกหรือไม่? [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน3 ปีที่ผ่านมา ฉันเพิ่งอ่านโพสต์บล็อกของBig Big Liesและฉันมีเวลายากที่จะแก้ไขคำโกหกที่สองซึ่งอ้างถึงที่นี่: (โกหก # 2) รหัสควรได้รับการออกแบบทั่วทั้งโลก ไม่มีค่าในรหัสที่เป็นรูปแบบหรือแผนที่โลกจินตนาการ ฉันไม่รู้ว่าทำไมอันนี้ถึงน่าสนใจสำหรับโปรแกรมเมอร์บางคน แต่มันเป็นที่นิยมอย่างมาก หากมีจรวดในเกมให้มั่นใจได้ว่ามีคลาส "Rocket" (สมมติว่าโค้ดคือ C ++) ซึ่งมีข้อมูลสำหรับจรวดหนึ่งอันและทำจรวด โดยไม่คำนึงถึงการเปลี่ยนแปลงข้อมูลจริง ๆ หรือการจัดวางข้อมูล หรือสำหรับเรื่องนั้นโดยที่ไม่มีความเข้าใจพื้นฐานว่ามีสิ่งใดสิ่งหนึ่งอยู่คงมากกว่าหนึ่งสิ่ง แม้ว่าจะมีบทลงโทษมากมายเกี่ยวกับประสิทธิภาพสำหรับการออกแบบประเภทนี้สิ่งที่สำคัญที่สุดคือมันไม่ได้ปรับขนาด เลย หนึ่งร้อยจรวดมีค่าใช้จ่ายหนึ่งร้อยเท่าของจรวด และมีแนวโน้มว่าจะมีราคาสูงกว่านั้นมาก! แม้แต่ผู้ที่ไม่ใช่โปรแกรมเมอร์ก็ไม่ควรมีเหตุผลใด ๆ ประหยัดจากขนาด หากคุณมีอะไรมากกว่านี้ก็ควรจะถูกกว่าไม่แพงกว่า และวิธีที่จะทำคือการออกแบบข้อมูลอย่างถูกต้องและจัดกลุ่มสิ่งต่าง ๆ โดยการแปลงที่คล้ายกัน นี่คือปัญหาของฉันกับเรื่องโกหกนี้โดยเฉพาะ มีคุณค่าในการใช้รหัสเป็นแบบจำลอง / แผนที่ของโลกจินตนาการในขณะที่การสร้างแบบจำลองโลกแห่งจินตนาการช่วยอย่างน้อยฉันเองเป็นการมองเห็นและจัดระเบียบรหัส สำหรับฉันแล้วการมีคลาส "Rocket" เป็นตัวเลือกที่ถูกต้องสมบูรณ์แบบสำหรับชั้นเรียน บางที "จรวด" อาจถูกแบ่งออกเป็นประเภทของจรวดเช่น AGM-114 Hellfire …

4
ถูกต้องตามกฎหมาย "งานจริง" ในตัวสร้างหรือไม่?
ฉันทำงานเกี่ยวกับการออกแบบ แต่กดปุ่มสิ่งกีดขวางบนถนนต่อไป ฉันมีคลาสเฉพาะ (ModelDef) ที่เป็นหลักเจ้าของต้นไม้โหนดซับซ้อนที่สร้างขึ้นโดยการแยก XML schema (คิด DOM) ฉันต้องการปฏิบัติตามหลักการออกแบบที่ดี (SOLID) และตรวจสอบให้แน่ใจว่าระบบผลลัพธ์นั้นสามารถทดสอบได้ง่าย ฉันมีความตั้งใจที่จะใช้ DI เพื่อส่งผ่านการพึ่งพาในตัวสร้างของ ModelDef (เพื่อให้สามารถสลับสิ่งเหล่านี้ได้อย่างง่ายดายถ้าจำเป็นระหว่างการทดสอบ) แม้ว่าสิ่งที่ฉันกำลังดิ้นรนคือการสร้างทรีโหนด ต้นไม้นี้จะถูกสร้างขึ้นด้วยวัตถุ "ค่า" อย่างง่ายซึ่งไม่จำเป็นต้องทำการทดสอบอย่างอิสระ (อย่างไรก็ตามฉันยังอาจส่ง Abstract Factory ไปยัง ModelDef เพื่อช่วยในการสร้างวัตถุเหล่านี้) แต่ฉันอ่านต่อไปว่าคอนสตรัคเตอร์ไม่ควรทำงานจริงใด ๆ (เช่นFlaw: Constructor ทำงานจริง ) นี่เป็นเหตุผลที่เหมาะสมสำหรับฉันหาก "งานจริง" หมายถึงการสร้างวัตถุที่ต้องอาศัยน้ำหนักมากซึ่งในภายหลังอาจต้องการเริ่มต้นการทดสอบ (สิ่งเหล่านั้นควรถูกส่งผ่านทาง DI) แต่สิ่งที่เกี่ยวกับวัตถุค่าน้ำหนักเบาเช่นต้นไม้โหนดนี้ ต้องสร้างต้นไม้ที่ไหนสักแห่งใช่มั้ย ทำไมไม่สร้างผ่าน ModelDef (ใช้, พูด, buildNodeTree () วิธี)? ฉันไม่ต้องการสร้างทรีโหนดด้านนอกของ ModelDef แล้วผ่านมันใน …

3
การจัดการข้อมูลแบบกระจายอำนาจ - ห่อหุ้มฐานข้อมูลลงในไมโครไซต์บริการ [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน5 ปีที่ผ่านมา ฉันเพิ่งเรียนหลักสูตรการออกแบบซอฟต์แวร์และมีการอภิปราย / ข้อเสนอแนะล่าสุดเกี่ยวกับการใช้แบบจำลอง 'บริการขนาดเล็ก' โดยที่ส่วนประกอบของบริการจะถูกแยกออกเป็นส่วนย่อยของบริการ microservice ที่เป็นอิสระที่สุด ส่วนหนึ่งที่ถูกกล่าวถึงนั้นแทนที่จะทำตามรูปแบบที่เห็นได้บ่อยมากของการมีฐานข้อมูลเดียวที่ไมโครไซต์ทั้งหมดพูดถึงคุณจะมีฐานข้อมูลแยกต่างหากที่ทำงานสำหรับไมโครไซต์แต่ละรายการ คุณสามารถอ่านคำอธิบายที่ละเอียดและมีรายละเอียดมากขึ้นเกี่ยวกับสิ่งนี้ได้ที่นี่: http://martinfowler.com/articles/microservices.htmlภายใต้หัวข้อการจัดการข้อมูลแบบกระจายอำนาจ ส่วนที่สำคัญที่สุดที่พูดนี้: Microservices ต้องการให้แต่ละบริการจัดการฐานข้อมูลของตัวเองไม่ว่าจะเป็นอินสแตนซ์ที่แตกต่างกันของเทคโนโลยีฐานข้อมูลเดียวกันหรือระบบฐานข้อมูลที่แตกต่างกันโดยสิ้นเชิง - แนวทางที่เรียกว่า Polyglot Persistence คุณสามารถใช้การคงอยู่หลายภาษาในหินใหญ่ก้อนเดียว แต่ปรากฏขึ้นบ่อยครั้งด้วย microservices รูปที่ 4 ฉันชอบแนวคิดนี้และในหลาย ๆ สิ่งเห็นว่าการปรับปรุงที่ดีในการบำรุงรักษาและการมีโครงการที่มีหลายคนทำงานอยู่ ที่กล่าวว่าฉันไม่เคยมีประสบการณ์สถาปนิกซอฟต์แวร์ มีใครเคยลองใช้บ้างไหม คุณได้ประโยชน์อะไรและอุปสรรคอะไรบ้าง?

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