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

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

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

8
ส่วนหน้าสุดก่อนหรือหลังสุดก่อน ในสองข้อไหนที่เป็นระบบการออกแบบที่ดี?
ฉันมีลูกค้าตอนนี้ต้องการให้ฉันพัฒนาระบบการลงทะเบียนของโรงเรียน ตอนนี้เป็นครั้งแรกที่ฉันมีความท้าทายแบบนี้ ซอฟต์แวร์ที่ผ่านมาส่วนใหญ่ที่ฉันสร้างไม่ซับซ้อน ฉันรู้ว่าพวกคุณส่วนใหญ่ได้สร้างซอฟแวร์ที่ซับซ้อนฉันแค่ต้องการคำแนะนำของคุณเกี่ยวกับเรื่องนี้ ฉันควรออกแบบส่วนหน้าหรือส่วนหลังก่อนหรือไม่ ขอบคุณ! นี่คือข้อสรุปของบทความที่ฉันพบในอินเทอร์เน็ตเมื่อไม่นานมานี้ แค่ต้องการแบ่งปัน http://www.skitoy.com/p/front-end-vs-back-end-developers-my-take/157 นักพัฒนา Front-End และ Back-End (ใช้ของฉัน) ส่วนตัวของฉัน เป็นเรื่องของการฝึกอีกครั้งการสรุปทั่วไปของโรคหลอดเลือดสมองในวงกว้าง: นักพัฒนาส่วนหน้า โดยทั่วไปแล้วจะไม่มีระดับ CS หรือมีระดับ CS จากโรงเรียนชั้นที่ 3 ทำงานในภาษาที่คล้ายกับพื้นฐาน (ดู PHP เป็นพื้นฐาน) มีทักษะการมองเห็นในการแปลงเอกสาร Photoshop เป็น CSS / HTML / ฯลฯ มีความอดทนสูงสำหรับการเขียนโปรแกรมซ้ำเนื่องจากภาษาฟรี นักพัฒนาส่วนหลัง มีระดับ CS หรือมีประสบการณ์มากมาย ทำให้ฉันเป็นระบบมากขึ้นในวิธีการแก้ปัญหาของพวกเขา อย่ารังเกียจที่จะใช้เวลาหลายวันเพื่อค้นหาวัตถุชิ้นหนึ่งที่รั่ว ลองและสร้างเครื่องมือเพื่อแก้ปัญหา

6
คุณสามารถใช้การเขียนโปรแกรม "เชิงวัตถุ" โดยไม่มีคำหลักชั้น?
สมมติว่าเราต้องการให้มี "บัญชี" ที่เป็นนามธรรมในธนาคาร นี่คือวิธีหนึ่งโดยใช้functionวัตถุใน Python: def account(): """Return a dispatch dictionary representing a bank account. >>> a = account() >>> a['deposit'](100) 100 >>> a['withdraw'](90) 10 >>> a['withdraw'](90) 'Insufficient funds' >>> a['balance'] 10 """ def withdraw(amount): if amount > dispatch['balance']: return 'Insufficient funds' dispatch['balance'] -= amount return dispatch['balance'] def deposit(amount): dispatch['balance'] …

6
ทำความเข้าใจกับ“ การเขียนโปรแกรมไปยังส่วนต่อประสาน”
ฉันเจอคำว่า "การเขียนโปรแกรมไปยังอินเทอร์เฟซแทนที่จะใช้งาน" มากและฉันคิดว่าฉันเข้าใจความหมายของมัน แต่ฉันต้องการให้แน่ใจว่าฉันเข้าใจถึงประโยชน์และการใช้งานที่เป็นไปได้ "การเขียนโปรแกรมไปยังอินเทอร์เฟซ" หมายความว่าเมื่อเป็นไปได้เราควรอ้างถึงระดับนามธรรมของคลาส (อินเทอร์เฟซคลาสนามธรรมหรือบางครั้งเป็นซูเปอร์คลาสของการเรียงลำดับบางอย่าง) แทนที่จะอ้างถึงการใช้งานที่เป็นรูปธรรม ตัวอย่างทั่วไปใน Java คือการใช้: List myList = new ArrayList();ArrayList myList = new ArrayList();แทน ฉันมีคำถามสองข้อเกี่ยวกับเรื่องนี้: ฉันต้องการให้แน่ใจว่าฉันเข้าใจถึงประโยชน์หลักของวิธีนี้ ฉันคิดว่าประโยชน์ส่วนใหญ่มีความยืดหยุ่น การประกาศวัตถุเป็นข้อมูลอ้างอิงระดับสูงมากกว่าการนำไปปฏิบัติอย่างเป็นรูปธรรมช่วยให้มีความยืดหยุ่นและบำรุงรักษาได้มากขึ้นตลอดวงจรการพัฒนาและตลอดทั้งรหัส ถูกต้องหรือไม่ ความยืดหยุ่นเป็นประโยชน์หลักหรือไม่? มีวิธีเพิ่มเติมในการ 'เขียนโปรแกรมไปยังส่วนต่อประสาน' หรือไม่? หรือ "การประกาศตัวแปรเป็นอินเตอร์เฟสแทนที่จะใช้อย่างเป็นรูปธรรม" เป็นการนำแนวคิดนี้ไปปฏิบัติเท่านั้น ฉันไม่ได้พูดคุยเกี่ยวกับการเชื่อมต่อสร้าง Java ฉันกำลังพูดถึงหลักการ OO "การเขียนโปรแกรมไปยังส่วนต่อประสานไม่ใช่การใช้งาน" ในหลักการนี้"อินเตอร์เฟซ" ของโลกหมายถึง "supertype" ใด ๆ ของคลาส - อินเทอร์เฟซคลาสนามธรรมหรือซูเปอร์คลาสธรรมดาซึ่งเป็นนามธรรมและคอนกรีตน้อยกว่าคลาสย่อยที่เป็นรูปธรรมมากขึ้น

7
ความแตกต่างระหว่าง "การซ่อนข้อมูล" และ "การห่อหุ้มข้อมูล" คืออะไร?
ฉันกำลังอ่าน "การทำงานพร้อมกันของ Java ในทางปฏิบัติ" และมีการกล่าวว่า: "โชคดีที่เทคนิคเชิงวัตถุเดียวที่ช่วยให้คุณเขียนคลาสที่มีการจัดการที่ดีและบำรุงรักษาได้เช่น encapsulation และการซ่อนข้อมูล - สามารถช่วยคุณสร้าง thread-safe ชั้นเรียน." ปัญหา # 1 - ฉันไม่เคยได้ยินเกี่ยวกับการซ่อนข้อมูลและไม่รู้ว่ามันคืออะไร ปัญหา # 2 - ฉันคิดเสมอว่า encapsulation ใช้ private vs public และจริงๆแล้วคือการซ่อนข้อมูล คุณช่วยอธิบายการซ่อนข้อมูลคืออะไรและแตกต่างจากการห่อหุ้มข้อมูลได้อย่างไร

12
นักพัฒนามีปัญหาอะไรกับข้อความแสดงข้อผิดพลาดที่เป็นประโยชน์? [ปิด]
มันยังคง astounds ฉันว่าในวันนี้และอายุผลิตภัณฑ์ที่มีปีของการใช้งานภายใต้เข็มขัดของพวกเขาสร้างขึ้นโดยทีมงานมืออาชีพยังคงไปในวันนี้ - ไม่ให้ข้อความผิดพลาดที่เป็นประโยชน์ให้กับผู้ใช้ ในบางกรณีการเพิ่มข้อมูลเพิ่มเติมเพียงเล็กน้อยอาจช่วยให้ผู้ใช้ไม่ต้องประสบปัญหาอีกต่อไป โปรแกรมที่สร้างข้อผิดพลาดสร้างขึ้นด้วยเหตุผล มีทุกสิ่งที่จำเป็นเพื่อแจ้งให้ผู้ใช้ทราบถึงสาเหตุที่ทำให้เกิดข้อผิดพลาด และดูเหมือนว่าการให้ข้อมูลเพื่อช่วยเหลือผู้ใช้มีความสำคัญต่ำ ฉันคิดว่านี่เป็นความล้มเหลวครั้งใหญ่ ตัวอย่างหนึ่งมาจาก SQL Server เมื่อคุณลองและกู้คืนฐานข้อมูลที่ใช้งานอยู่มันจะไม่ถูกต้องนัก SQL Server รู้ว่ากระบวนการและแอปพลิเคชันใดกำลังเข้าถึง เหตุใดจึงไม่สามารถรวมข้อมูลเกี่ยวกับกระบวนการที่ใช้ฐานข้อมูลได้ ฉันรู้ว่าทุกคนไม่ส่งApplicatio_Nameแอตทริบิวต์ในสตริงการเชื่อมต่อของพวกเขา แต่แม้แต่คำแนะนำเกี่ยวกับเครื่องที่เป็นปัญหาอาจมีประโยชน์ ตัวเลือกอื่นเช่น SQL Server (และ mySQL) คือstring or binary data would be truncatedข้อความแสดงข้อผิดพลาดที่น่ารักและรายการเทียบเท่า บ่อยครั้งที่การอ่านคำสั่ง SQL อย่างง่าย ๆ ที่สร้างขึ้นและตารางแสดงว่าคอลัมน์ใดเป็นผู้ร้าย นี่ไม่ใช่กรณีเสมอไปและหากเอ็นจิ้นฐานข้อมูลหยิบขึ้นมาบนข้อผิดพลาดทำไมมันไม่สามารถช่วยเราได้ในเวลานั้นและเพียงแค่บอกเราว่ามันเป็นคอลัมน์ใด ในตัวอย่างนี้คุณสามารถยืนยันว่าอาจมีการแสดงที่มีประสิทธิภาพในการตรวจสอบและสิ่งนี้อาจเป็นอุปสรรคต่อผู้เขียน ใช่ฉันจะซื้อมัน เมื่อกลไกจัดการฐานข้อมูลรู้ว่ามีข้อผิดพลาดจะทำการเปรียบเทียบอย่างรวดเร็วหลังจากความจริงระหว่างค่าที่จะถูกจัดเก็บเทียบกับความยาวคอลัมน์ จากนั้นแสดงให้ผู้ใช้เห็น Adaptors Table ที่น่ากลัวของ ASP.NET ก็มีความผิดเช่นกัน สามารถดำเนินการค้นหาและสามารถได้รับข้อความแสดงข้อผิดพลาดที่บอกว่าข้อ จำกัด บางแห่งกำลังถูกละเมิด …

12
ชั้นเรียนมีขนาดใหญ่แค่ไหน?
ฉันเป็นนักพัฒนาที่ยาวนาน (ฉันอายุ 49 ปี) แต่ค่อนข้างใหม่สำหรับการพัฒนาเชิงวัตถุ ฉันได้อ่านเกี่ยวกับ OO มาตั้งแต่ไอเฟลของ Bertrand Meyer แต่ได้เขียนโปรแกรม OO น้อยมาก ประเด็นก็คือหนังสือทุกเล่มเกี่ยวกับการออกแบบ OO เริ่มต้นด้วยตัวอย่างของเรือรถยนต์หรือสิ่งของทั่วไปที่เราใช้บ่อยมากและพวกเขาก็เริ่มเพิ่มคุณสมบัติและวิธีการและอธิบายว่าพวกเขาจำลองสถานะของวัตถุอย่างไรและสามารถทำอะไรได้บ้าง มัน. ดังนั้นพวกเขาจึงมักจะไปบางอย่างเช่น "ยิ่งโมเดลดีขึ้นเท่าไรมันก็จะแสดงวัตถุในแอปพลิเคชันได้ดีเท่านั้นและยิ่งออกมาดีกว่า" จนถึงตอนนี้ดี แต่ในทางกลับกันฉันได้พบผู้เขียนหลายคนที่ให้สูตรเช่น "คลาสควรพอดีในหน้าเดียว" (ฉันจะเพิ่ม "ในขนาดจอภาพอะไร?" ตอนนี้เราพยายามไม่ เพื่อพิมพ์รหัส!) ยกตัวอย่างเช่นPurchaseOrderคลาสที่มีเครื่องสถานะ จำกัด ควบคุมพฤติกรรมและคอลเลกชันPurchaseOrderItemหนึ่งในข้อโต้แย้งที่นี่ในที่ทำงานคือเราควรใช้PurchaseOrderคลาสที่เรียบง่ายด้วยวิธีการบางอย่าง (น้อยกว่าคลาสข้อมูล) และมีPurchaseOrderFSM“ชั้นผู้เชี่ยวชาญ” ที่จับเครื่องสถานะ จำกัด PurchaseOrderสำหรับ ฉันจะบอกว่าตกอยู่ในหมวดหมู่ "อิจฉาคุณสมบัติ" หรือ "ความไม่เหมาะสมที่ใกล้ชิด" ของการโพสต์โค้ดของ Jeff Atwood's Smellsเมื่อสยองขวัญการเข้ารหัส ฉันแค่เรียกมันว่าสามัญสำนึก ถ้าผมสามารถออกอนุมัติหรือยกเลิกคำสั่งซื้อของฉันจริงแล้วPurchaseOrderชั้นควรมีissuePO, approvePOและcancelPOวิธีการ นั่นไม่ได้เกิดขึ้นกับ "การเพิ่มการเชื่อมโยงสูงสุด" และ "ลดการแต่งงาน" หลักการเก่า …

3
ที่เก็บ DDD ในเซอร์วิสแอ็พพลิเคชันหรือโดเมน
ฉันกำลังศึกษา DDD ในวันนี้และฉันมีคำถามบางอย่างเกี่ยวกับวิธีจัดการที่เก็บด้วย DDD อันที่จริงฉันได้พบกับสอง possibilies: คนแรก วิธีแรกในการจัดการบริการที่ฉันอ่านคือการฉีดที่เก็บและรูปแบบโดเมนในบริการแอปพลิเคชัน ด้วยวิธีนี้หนึ่งในวิธีการบริการแอปพลิเคชันเราเรียกวิธีการบริการโดเมน (การตรวจสอบกฎธุรกิจ) และถ้าเงื่อนไขเป็นสิ่งที่ดีพื้นที่เก็บข้อมูลจะถูกเรียกในวิธีพิเศษเพื่อยืนยัน / ดึงเอนทิตีจากฐานข้อมูล วิธีง่ายๆในการทำสิ่งนี้อาจเป็น: class ApplicationService{ constructor(domainService, repository){ this.domainService = domainService this.repository = repository } postAction(data){ if(this.domainService.validateRules(data)){ this.repository.persist(new Entity(data.name, data.surname)) } // ... } } อันที่สอง ความเป็นไปได้ที่สองคือการฉีดที่เก็บภายใน domainService แทนและเพื่อใช้ที่เก็บผ่านบริการโดเมนเท่านั้น: class ApplicationService{ constructor(domainService){ this.domainService = domainService } postAction(data){ if(this.domainService.persist(data)){ console.log('all is …

5
เป็นการดีที่จะใช้วัตถุเอนทิตีเป็นวัตถุการถ่ายโอนข้อมูลหรือไม่
ฉันสงสัยเพราะถ้าเป็นเช่นนั้นเหตุใด Entity Framework จึงไม่มีเหตุผลในการสร้างวัตถุใหม่ที่มีคุณสมบัติเดียวกันเพื่อถ่ายโอนข้อมูลระหว่างเลเยอร์ ฉันใช้วัตถุเอนทิตีที่ฉันสร้างขึ้นด้วยกรอบงานเอนทิตี

6
มีรูปแบบการออกแบบเพื่อลบความต้องการตรวจสอบค่าสถานะหรือไม่
ฉันจะบันทึกส่วนของข้อมูลสตริงในฐานข้อมูล ฉันมีการกำหนดค่าระดับโลกสองแบบ: การเข้ารหัส การอัด สิ่งเหล่านี้สามารถเปิดใช้งานหรือปิดการใช้งานโดยใช้การกำหนดค่าในลักษณะที่เปิดใช้งานเพียงอย่างเดียวเท่านั้นทั้งสองถูกเปิดใช้งานหรือทั้งสองอย่างถูกปิดใช้งาน การใช้งานปัจจุบันของฉันคือ: if (encryptionEnable && !compressEnable) { encrypt(data); } else if (!encryptionEnable && compressEnable) { compress(data); } else if (encryptionEnable && compressEnable) { encrypt(compress(data)); } else { data; } ฉันกำลังคิดเกี่ยวกับลวดลายมัณฑนากร มันเป็นตัวเลือกที่ถูกต้องหรืออาจเป็นทางเลือกที่ดีกว่า

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

6
การใช้ฐานข้อมูลเชิงสัมพันธ์เทียบกับอ็อบเจ็กต์ JSON สำหรับข้อมูลเหตุการณ์ / กิจกรรม
ฉันกำลังทำงานในโครงการที่ฉันพยายามตัดสินใจระหว่างการใช้ฐานข้อมูลเชิงสัมพันธ์ SQL มาตรฐานหรือวัตถุ JSON เพื่อเก็บข้อมูลเกี่ยวกับเหตุการณ์หรือกิจกรรม โครงการจะจัดเก็บข้อมูลในประเภทเหตุการณ์หลายประเภทดังนั้นฉันได้ตัดสินใจที่จะอธิบายเพียงหนึ่งประเภทเหตุการณ์สำหรับคำถามนี้ เหตุการณ์ดนตรีสด (อธิบายแบบเต็มโดยใช้สคีมา JSON ที่ด้านล่างของคำถามนี้) เป็นวัตถุที่เก็บข้อมูลเช่นสถานที่ที่จะจัดกิจกรรมเวลา / วันที่ของเหตุการณ์และค่าใช้จ่ายของเหตุการณ์ วัตถุเหตุการณ์ดนตรีสดมีทั้งแบบหนึ่งต่อหนึ่ง (เหตุการณ์ -> ชื่อเหตุการณ์ -> คำอธิบาย) และแบบตัวต่อตัว (เหตุการณ์ -> สถานที่จัดงาน, กิจกรรม -> วันที่, กิจกรรม -> ประเภทตั๋ว ) ความสัมพันธ์ นอกจากนี้วัตถุเหตุการณ์สามารถมีหนึ่งรหัสนักแสดงหรือมากกว่าซึ่งลิงก์ไปยังวัตถุนักแสดง วัตถุนักแสดงจัดเก็บข้อมูลเกี่ยวกับนักดนตรีที่กำลังแสดงในการแสดงดนตรีสด ข้อมูลจะถูกสอบถามโดยผู้ใช้ที่ใช้ง่าย ("Find me events with 'x' name") และ complex ("Find me events ด้วยแนวเพลง 'x' และ 'y' ภายในรัศมี …
28 design  sql  json 

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

10
Simple vs Complex (แต่มีประสิทธิภาพด้านประสิทธิภาพ) โซลูชัน - ตัวเลือกใดและเมื่อใด
ฉันเขียนโปรแกรมมาสองสามปีและมักพบว่าตัวเองอยู่ในภาวะที่กลืนไม่เข้าคายไม่ออก มีสองวิธีคือ - วิธีการหนึ่งเป็นแบบง่ายเช่นวิธีการแบบง่ายเข้าใจและบำรุงรักษาได้ง่ายขึ้น มันเกี่ยวข้องกับความซ้ำซ้อนบางงานพิเศษ (IO เพิ่มเติมการประมวลผลพิเศษ) และดังนั้นจึงไม่ใช่ทางออกที่ดีที่สุด แต่วิธีอื่น ๆ ใช้วิธีการที่ซับซ้อนยากที่จะนำไปใช้มักจะเกี่ยวข้องกับการปฏิสัมพันธ์ระหว่างโมดูลจำนวนมากและเป็นโซลูชันที่มีประสิทธิภาพ โซลูชันใดที่ฉันควรพยายามเมื่อฉันไม่มี SLA ที่มีประสิทธิภาพสูงเพื่อตอบสนองและแม้แต่โซลูชันที่เรียบง่ายสามารถตอบสนองประสิทธิภาพ SLA ได้ ฉันรู้สึกรังเกียจในหมู่ผู้พัฒนาเพื่อนของฉันสำหรับวิธีแก้ปัญหาอย่างง่าย เป็นวิธีปฏิบัติที่ดีหรือไม่ในการหาวิธีแก้ปัญหาที่ซับซ้อนที่สุดหาก SLA ประสิทธิภาพของคุณสามารถพบได้โดยวิธีง่ายๆ

6
“ การทำให้เป็นมาตรฐาน” เชิงวัตถุ
ในการเขียนโปรแกรมฐานข้อมูลมีเทคนิคที่เรียกว่า "การทำให้เป็นมาตรฐาน" ที่คุณทำกับข้อมูลที่คุณต้องการจัดเก็บ มีใครพยายามใช้แนวคิดนี้กับการออกแบบวัตถุหรือไม่ คุณเป็นอย่างไรบ้าง มันทำงานอย่างไร แก้ไข: หากต้องการขยาย / ทำให้กระจ่างการปรับสภาพฐานข้อมูลเป็นมากกว่าชุดของหลักการเพื่อลดความซ้ำซ้อน จริง ๆ แล้วมีขั้นตอนและขั้นตอนที่คุณต้องผ่านและอย่างน้อยก็มีมาตรการที่เป็นกลางที่จะบอกคุณว่าคุณอยู่ในขั้นใดการออกแบบวัตถุมีหลักการของตัวเองและมีแนวคิดเกี่ยวกับกลิ่น แต่มีวิธีทำสิ่งที่คล้ายกัน ว่าคุณอยู่ใน XX-form0,1,2 ... ฯลฯ ... และวิธีการที่จะย้ายไปยังระดับ "ปกติ" ถัดไปมากที่สุด?
28 design 

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