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

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

11
คำแนะนำในการออกแบบเว็บแอปพลิเคชันด้วยอายุการใช้งานมากกว่า 40 ปี
สถานการณ์ ขณะนี้ฉันอยู่นอกเหนือโครงการดูแลสุขภาพที่มีความต้องการหลักคือการเก็บข้อมูลที่มีคุณลักษณะที่ไม่รู้จักโดยใช้แบบฟอร์มที่ผู้ใช้สร้างขึ้นโดยผู้ให้บริการด้านสุขภาพ ข้อกำหนดที่สองคือความสมบูรณ์ของข้อมูลเป็นกุญแจสำคัญและแอปพลิเคชันจะใช้งานมากกว่า 40 ปี ขณะนี้เรากำลังย้ายข้อมูลลูกค้าจาก 40 ปีที่ผ่านมาจากแหล่งข้อมูลต่างๆ (กระดาษ, Excel, Access, ฯลฯ ... ) ไปยังฐานข้อมูล ข้อกำหนดในอนาคตคือ: การจัดการเวิร์กโฟลว์ของแบบฟอร์ม การจัดการตารางเวลาของแบบฟอร์ม ความปลอดภัย / การจัดการตามบทบาท เครื่องมือสร้างรายงาน รองรับมือถือ / แท็บเล็ต สถานการณ์ เพียง 6 เดือนเท่านั้นสถาปนิก / โปรแกรมเมอร์อาวุโส (ที่เซ็นสัญญา) คนปัจจุบันใช้แนวทาง "เร็ว" และได้ออกแบบระบบที่ไม่ดี ฐานข้อมูลไม่ได้รับการปรับให้เป็นมาตรฐาน, โค้ดนั้นเป็นแบบคู่, เทียร์ไม่มีวัตถุประสงค์เฉพาะและข้อมูลเริ่มหายไปเนื่องจากเขาได้ออกแบบถั่วบางตัวเพื่อทำการ "ลบ" บนฐานข้อมูล รหัสฐานนั้นเต็มไปด้วยฟองเลือดมากและมีงานที่ต้องทำการซิงโครไนซ์ข้อมูลเนื่องจากฐานข้อมูลไม่ได้ถูกทำให้เป็นมาตรฐาน วิธีการของเขาคือการพึ่งพางานสำรองเพื่อกู้คืนข้อมูลที่หายไปและดูเหมือนจะไม่เชื่อในการกู้คืนข้อมูล หลังจากนำเสนอสิ่งที่ฉันพบต่อ PM สถาปนิกจะถูกลบออกเมื่อสัญญาของเขาสิ้นสุดลง ฉันได้รับมอบหมายให้สร้างแอปพลิเคชันนี้อีกครั้ง ทีมของฉันประกอบด้วยฉันและโปรแกรมเมอร์ระดับต้นหนึ่งคน เราไม่มีทรัพยากรอื่น ๆ เราได้รับสิทธิ์การแช่แข็ง …

7
สถาปัตยกรรมระบบ microservice หลีกเลี่ยงปัญหาคอขวดของเครือข่ายได้อย่างไร
ฉันอ่านมากเกี่ยวกับสถาปัตยกรรม microservice สำหรับแอพพลิเคชันเซิร์ฟเวอร์และสงสัยว่าการใช้เครือข่ายภายในไม่ใช่คอขวดหรือข้อเสียที่สำคัญเมื่อเทียบกับสถาปัตยกรรมเสาหิน เพื่อความแม่นยำนี่เป็นการตีความคำสองคำของฉัน: สถาปัตยกรรม Monolith:แอปพลิเคชั่นหนึ่งเดียวในภาษาเดียวที่จัดการฟังก์ชันการทำงานข้อมูลและอื่น ๆ ตัวโหลดบาลานซ์จะกระจายการร้องขอจากผู้ใช้ทั่วทั้งเครื่องหลายเครื่อง สถาปัตยกรรม Microservice:แอปพลิเคชั่นจำนวนมาก (ไมโครซอฟท์) จัดการส่วนเล็ก ๆ ของฟังก์ชั่นและข้อมูล microservice แต่ละอันจะเปิดเผย API ทั่วไปที่เข้าถึงได้ผ่านเครือข่าย (ตรงข้ามกับการสื่อสารระหว่างกระบวนการหรือหน่วยความจำที่ใช้ร่วมกันบนเครื่องเดียวกัน) การเรียกใช้ API ส่วนใหญ่จะติดอยู่บนเซิร์ฟเวอร์เพื่อสร้างหน้าเว็บแม้ว่าบางงานอาจดำเนินการโดยไคลเอนต์ที่สอบถามไมโครไซต์แต่ละรายการ สำหรับจินตนาการที่ไร้เดียงสาของฉันดูเหมือนว่าสถาปัตยกรรมไมโครไซต์ใช้การรับส่งข้อมูลเครือข่ายที่ช้าเมื่อเทียบกับทรัพยากรที่รวดเร็วกว่าบนเครื่องเดียวกัน (หน่วยความจำและดิสก์) วิธีการหนึ่งทำให้มั่นใจได้ว่าการสืบค้น API ผ่านเครือข่ายภายในจะไม่ทำให้เวลาตอบสนองโดยรวมช้าลง

12
“ ทุกอย่างคือแผนที่” ฉันทำถูกไหม?
ฉันดูคำพูดของสจ็วตเซียร์เซียร์ " คิดในข้อมูล " และนำหนึ่งในแนวคิดจากนั้นเป็นหลักการออกแบบในเกมนี้ที่ฉันทำ ความแตกต่างคือเขาทำงานใน Clojure และฉันทำงานใน JavaScript ฉันเห็นความแตกต่างที่สำคัญระหว่างภาษาของเราในเรื่องนั้น: Clojure เป็นการเขียนโปรแกรมที่ใช้งานง่าย รัฐส่วนใหญ่ไม่เปลี่ยนรูป ฉันใช้ความคิดจากสไลด์ "ทุกอย่างคือแผนที่" (จาก 11 นาที, 6 วินาทีถึง> 29 นาที) บางสิ่งที่เขาพูดคือ: เมื่อใดก็ตามที่คุณเห็นฟังก์ชั่นที่ใช้อาร์กิวเมนต์ 2-3 ข้อคุณสามารถทำให้เป็นกรณีสำหรับเปลี่ยนเป็นแผนที่และเพิ่งผ่านแผนที่มามีข้อดีมากมายดังนี้: คุณไม่ต้องกังวลกับคำสั่งโต้แย้ง คุณไม่ต้องกังวลกับข้อมูลเพิ่มเติมใด ๆ หากมีกุญแจพิเศษนั่นไม่ใช่ความกังวลของเรา พวกเขาไหลผ่านพวกเขาไม่ได้ยุ่ง คุณไม่จำเป็นต้องกำหนดสคีมา ตรงข้ามกับการส่งผ่านวัตถุไม่มีการซ่อนข้อมูล แต่เขาทำให้กรณีที่การซ่อนข้อมูลสามารถทำให้เกิดปัญหาและ overrated: ประสิทธิภาพ ใช้งานง่าย ทันทีที่คุณสื่อสารผ่านเครือข่ายหรือข้ามกระบวนการคุณจะต้องให้ทั้งสองฝ่ายเห็นพ้องกับการแสดงข้อมูลต่อไป นั่นเป็นงานพิเศษที่คุณสามารถข้ามได้ถ้าคุณแค่ทำงานกับข้อมูล ส่วนใหญ่เกี่ยวข้องกับคำถามของฉัน นี่คือ 29 นาทีใน: "ทำให้ฟังก์ชั่นของคุณประกอบได้" นี่คือตัวอย่างโค้ดที่เขาใช้อธิบายแนวคิด: ;; Bad (defn complex-process [] …

7
การสร้างเลเยอร์บริการมีความสำคัญอย่างไร
ฉันเริ่มสร้างแอพใน 3 เลเยอร์ (DAL, BL, UI) [ส่วนใหญ่จัดการกับ CRM, รายงานการขายและสินค้าคงคลัง] เพื่อนร่วมงานคนหนึ่งบอกฉันว่าฉันต้องย้ายไปที่รูปแบบเลเยอร์บริการซึ่งนักพัฒนาซอฟต์แวร์มาจากรูปแบบการบริการจากประสบการณ์ของพวกเขาและเป็นวิธีที่ดีกว่าในการออกแบบแอปพลิเคชันส่วนใหญ่ เขากล่าวว่าจะง่ายกว่ามากในการรักษาแอพพลิเคชั่นในอนาคต โดยส่วนตัวแล้วฉันได้รับความรู้สึกว่ามันเป็นเพียงการสร้างสิ่งที่ซับซ้อนมากขึ้นและฉันก็ไม่สามารถเห็นผลประโยชน์มากมายจากสิ่งนี้ที่จะพิสูจน์ได้ แอพนี้มี UI ขนาดเล็กเพิ่มเติมที่ใช้ฟังก์ชั่นแอปพลิเคชั่นเดสก์ท็อปบางส่วน (แต่มีเพียงไม่กี่) ดังนั้นฉันจึงพบว่าตัวเองทำซ้ำรหัสบางส่วน (แต่ไม่มาก) เพียงเพราะการทำซ้ำรหัสบางอย่างฉันจะไม่แปลงเป็นบริการที่มุ่งเน้น แต่เขาบอกว่าฉันควรใช้ต่อไปเพราะโดยทั่วไปแล้วมันเป็นสถาปัตยกรรมที่ดีมากทำไมโปรแกรมเมอร์จึงหลงใหลในบริการ ฉันพยายาม google บนมัน แต่ฉันยังคงสับสนและไม่สามารถตัดสินใจได้ว่าจะทำอย่างไร

9
ที่เก็บควรส่งคืน IQueryable หรือไม่
IQueryableฉันได้รับการเห็นมากของโครงการที่มีพื้นที่เก็บข้อมูลที่ส่งกลับกรณีของ สิ่งนี้อนุญาตให้ตัวกรองเพิ่มเติมและการเรียงลำดับสามารถทำได้บนIQueryableโดยรหัสอื่นซึ่งแปลเป็น SQL ที่แตกต่างกันที่ถูกสร้างขึ้น ฉันอยากรู้ว่าแบบนี้มาจากไหนและเป็นความคิดที่ดีหรือไม่ ความกังวลที่ใหญ่ที่สุดของฉันคือการที่IQueryableสัญญาว่าจะตีฐานข้อมูลในภายหลังเมื่อมีการแจกแจง นี่หมายความว่าจะเกิดข้อผิดพลาดนอกที่เก็บ นี่อาจหมายถึงข้อยกเว้น Entity Framework เกิดขึ้นในเลเยอร์อื่นของแอปพลิเคชัน ฉันยังพบปัญหากับชุดผลลัพธ์ที่ใช้งานหลายรายการ (MARS) ในอดีต (โดยเฉพาะเมื่อใช้ธุรกรรม) และวิธีการนี้ดูเหมือนว่าจะทำให้เกิดเหตุการณ์นี้บ่อยขึ้น ฉันได้เรียกAsEnumerableหรือToArrayตอนท้ายของแต่ละนิพจน์ LINQ ของฉันเสมอเพื่อให้แน่ใจว่ามีการเข้าใช้ฐานข้อมูลก่อนที่จะออกจากที่เก็บรหัส ฉันสงสัยว่าการส่งคืนIQueryableอาจมีประโยชน์ในแบบ Building Block สำหรับชั้นข้อมูลหรือไม่ IQueryableฉันได้เห็นรหัสฟุ่มเฟือยสวยบางคนที่มีพื้นที่เก็บข้อมูลการเรียกเก็บข้อมูลอื่นที่จะสร้างที่ยิ่งใหญ่

13
เหตุใดจึงเป็นความคิดที่ดีสำหรับเลเยอร์แอปพลิเคชัน“ ต่ำกว่า” ที่ไม่ควรระวังสำหรับเลเยอร์ "สูง"
ในแอปพลิเคชันเว็บ MVC ทั่วไป (ออกแบบมาอย่างดี) ฐานข้อมูลไม่ทราบรหัสรุ่นรหัสรุ่นไม่ทราบรหัสคอนโทรลเลอร์และรหัสควบคุมไม่ทราบรหัสมุมมอง (ฉันคิดว่าคุณสามารถเริ่มได้ไกลถึงฮาร์ดแวร์หรืออาจจะยิ่งกว่านั้นอีกและรูปแบบอาจเหมือนกัน) ไปอีกทิศทางหนึ่งคุณสามารถลงไปหนึ่งชั้น มุมมองสามารถรับรู้ถึงคอนโทรลเลอร์ แต่ไม่ใช่โมเดล คอนโทรลเลอร์สามารถรับรู้ถึงโมเดล แต่ไม่ใช่ฐานข้อมูล รูปแบบสามารถรับรู้ถึงฐานข้อมูล แต่ไม่ใช่ระบบปฏิบัติการ (อะไรที่ลึกกว่านั้นอาจไม่เกี่ยวข้อง) ฉันสามารถเข้าใจได้อย่างสังหรณ์ใจว่าทำไมนี่เป็นความคิดที่ดี แต่ฉันไม่สามารถพูดได้ ทำไมรูปแบบทิศทางเดียวของการวางแนวคิดที่ดีนี้

5
เหตุใดจึงไม่ดีในการอ่านข้อมูลจากฐานข้อมูล“ เป็นเจ้าของ” โดย microservice ที่แตกต่างกัน
ฉันเพิ่งอ่านบทความที่ยอดเยี่ยมนี้ในสถาปัตยกรรม microservice: http://www.infoq.com/articles/microservices-intro มันระบุว่าเมื่อคุณโหลดหน้าเว็บใน Amazon แล้วไมโครไซต์กว่า 100 รายการจะร่วมมือเพื่อให้บริการหน้านั้น บทความนั้นอธิบายว่าการสื่อสารระหว่างไมโครไซต์ทั้งหมดสามารถทำได้ผ่าน API เท่านั้น คำถามของฉันคือเหตุผลที่ไม่ดีที่จะบอกว่าการเขียนฐานข้อมูลทั้งหมดสามารถทำได้ผ่าน API เท่านั้น แต่คุณสามารถอ่านได้โดยตรงจากฐานข้อมูลของบริการไมโครต่างๆ ตัวอย่างเช่นสามารถพูดได้ว่ามีเพียงไม่กี่มุมมองฐานข้อมูลที่สามารถเข้าถึงได้นอกบริการไมโครเพื่อให้ทีมที่ดูแลบริการไมโครรู้ว่าตราบใดที่พวกเขารักษามุมมองเหล่านี้เหมือนเดิมแล้วพวกเขาสามารถเปลี่ยนโครงสร้างฐานข้อมูลของบริการไมโคร ต้องการ. ฉันทำอะไรบางอย่างหายไปหรือเปล่า มีเหตุผลอื่นอีกไหมทำไมข้อมูลควรอ่านผ่าน API เท่านั้น? บริษัท ของฉันเล็กกว่า Amazon อย่างมาก (และจะเป็นเสมอ) และจำนวนผู้ใช้สูงสุดที่เราสามารถมีได้ประมาณ 5 ล้านคน

19
การจัดการกับประมาณการอันยิ่งใหญ่
โครงการล่าสุดที่ฉันทำงานอยู่ได้รับการพิสูจน์ว่าถูกประเมินอย่างรุนแรงโดยสถาปนิก การประมาณการออกมาอย่างน้อย 500% น่าเสียดายที่ฉันถูกนำเข้าสู่โครงการหลังจากที่ประมาณการได้ลงนามกับลูกค้า ในฐานะนักพัฒนาอาวุโสฉันตระหนักได้อย่างรวดเร็วว่าข้อมูลจำเพาะด้านเทคนิคและการใช้งาน มีช่องว่างขนาดใหญ่และความไม่แน่นอน ด้วยเหตุนี้ฉันจึงจำเป็นต้องเรียกประชุมฉุกเฉินกับผู้อำนวยการด้านธุรกิจและเทคนิคเพื่อให้พวกเขารู้ถึงความจริง ในฐานะที่เป็นนักพัฒนาซอฟต์แวร์รายแรกและสำคัญที่สุดฉันพบว่านี่เป็นสถานการณ์ที่ตึงเครียดและยากลำบากมาก "ธุรกิจ" กล่าวหาว่าไอทีไร้ความสามารถและเป็นผู้ส่งสารฉันได้รับ "กระสุน" สองสามตัว ลูกค้าขู่ว่าจะยกเลิกบัญชีอย่างไรก็ตามถึงวันที่โครงการยังไม่เสร็จและฉันไม่ได้เกี่ยวข้องโดยตรงกับมันอีกต่อไป สถาปนิกเป็นคนดีในสังคม แต่จากเหตุการณ์นี้อาจเป็นเพียงแค่ไร้ความสามารถหรือมีแรงกดดันด้านการขาย / ธุรกิจจำนวนมากที่มีอิทธิพลต่อการประเมินของเขา ดังนั้นในฐานะโปรแกรมเมอร์คุณมีประสบการณ์อย่างไรกับสถานการณ์แบบนี้และคุณจะแนะนำให้จัดการกับเรื่องนี้อย่างไร?

15
มีเหตุผลใดที่จะไม่ไปจาก Javascript ฝั่งไคลเอ็นต์โดยตรงกับฐานข้อมูลหรือไม่?
สำเนาซ้ำที่เป็นไปได้: เขียนแอปพลิเคชัน“ เซิร์ฟเวอร์น้อยกว่า” บนเว็บ ดังนั้นสมมติว่าฉันจะสร้างโคลน Exchange Stack และฉันตัดสินใจที่จะใช้สิ่งที่ต้องการ CouchDB เป็นที่เก็บแบ็กเอนด์ของฉัน หากฉันใช้การพิสูจน์ตัวตนในตัวและการอนุญาตระดับฐานข้อมูลมีเหตุผลใดที่จะไม่อนุญาตให้ Javascript ฝั่งไคลเอ็นต์เขียนโดยตรงไปยังเซิร์ฟเวอร์ CouchDB ที่เปิดเผยสู่สาธารณะ เนื่องจากนี่เป็นแอปพลิเคชั่น CRUD และตรรกะทางธุรกิจประกอบด้วย "ผู้เขียนเท่านั้นที่สามารถแก้ไขโพสต์ของพวกเขา" ฉันไม่เห็นความต้องการมากที่จะมีเลเยอร์ระหว่างสิ่งที่ฝั่งไคลเอ็นต์และฐานข้อมูล ฉันเพียงแค่ใช้การตรวจสอบด้าน CouchDB เพื่อให้แน่ใจว่าไม่มีใครใส่ข้อมูลขยะและตรวจสอบให้แน่ใจว่ามีการตั้งค่าการอนุญาตอย่างถูกต้องเพื่อให้ผู้ใช้สามารถอ่านข้อมูล _user ของตนเองได้ การเรนเดอร์จะทำได้โดยฝั่งไคลเอ็นต์โดยบางสิ่งเช่น AngularJS โดยพื้นฐานแล้วคุณสามารถมีเซิร์ฟเวอร์ CouchDB และหน้าแบบ "คงที่" และคุณก็พร้อมที่จะไป คุณไม่จำเป็นต้องมีการประมวลผลด้านเซิร์ฟเวอร์ใด ๆ เพียงแค่สิ่งที่สามารถแสดงหน้า HTML ได้ การเปิดฐานข้อมูลของฉันสู่โลกดูเหมือนผิด แต่ในสถานการณ์นี้ฉันไม่สามารถคิดได้ว่าทำไมตราบใดที่การตั้งค่าการอนุญาตถูกต้อง มันขัดกับสัญชาตญาณของฉันในฐานะนักพัฒนาเว็บ แต่ฉันไม่สามารถคิดได้ด้วยเหตุผลที่ดี เหตุใดจึงเป็นความคิดที่ไม่ดี แก้ไข: ดูเหมือนว่ามีการสนทนาที่คล้ายกันที่นี่: การเขียนเว็บ "เซิร์ฟเวอร์น้อยกว่า" แอปพลิเคชัน แก้ไข: การอภิปรายที่น่าประทับใจจนถึงตอนนี้และฉันขอขอบคุณข้อเสนอแนะของทุกคน! ฉันรู้สึกว่าฉันควรเพิ่มสมมติฐานทั่วไปสองสามข้อแทนที่จะเรียกเฉพาะ …

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

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

3
การออกแบบสถาปัตยกรรมทำได้อย่างไรในสภาพแวดล้อมที่คล่องตัว
ฉันได้อ่านหลักการสำหรับสถาปนิกว่องไวที่พวกเขานิยามหลักการต่อไป: หลักการ # 1 ทีมที่ใช้รหัสออกแบบระบบ หลักการ # 2 สร้างสถาปัตยกรรมที่ง่ายที่สุดที่อาจเป็นไปได้ หลักการ # 3 เมื่อมีข้อสงสัยรหัสมันออกมา หลักการ # 4 พวกเขาสร้างมันพวกเขาทดสอบ หลักการ # 5 ยิ่งระบบยิ่งใหญ่ หลักการ # 6 สถาปัตยกรรมของระบบคือการทำงานร่วมกันของบทบาท หลักการ # 7 ไม่มีการผูกขาดกับนวัตกรรม บทความกล่าวว่าการออกแบบสถาปัตยกรรมส่วนใหญ่เสร็จสิ้นในระหว่างขั้นตอนการเข้ารหัสและการออกแบบระบบก่อนหน้านั้นเท่านั้น นั่นเป็นเรื่องปกติ ดังนั้นการออกแบบระบบทำได้อย่างไร? ใช้ UML หรือเปล่า หรือเอกสารที่กำหนดอินเทอร์เฟซและบล็อกหลัก อาจจะเป็นอย่างอื่น?

6
วิธีจัดการกับความกลัวในการพึ่งพา
ทีมของฉันในการสร้างส่วนประกอบที่พันธมิตรของ บริษัท สามารถใช้เพื่อรวมเข้ากับแพลตฟอร์มของเรา ดังนั้นฉันเห็นด้วยที่เราควรใช้ความระมัดระวังเป็นอย่างยิ่งเมื่อแนะนำบุคคลที่สาม (อ้างอิง) ขณะนี้เราไม่มีการพึ่งพาของบุคคลที่สามและเราต้องอยู่ในระดับ API ต่ำสุดของกรอบงาน ตัวอย่างบางส่วน: เราถูกบังคับให้อยู่ในระดับ API ต่ำสุดของกรอบงาน (. NET Standard) เหตุผลเบื้องหลังสิ่งนี้คือว่าแพลตฟอร์มใหม่อาจมาถึงวันหนึ่งที่รองรับเฉพาะระดับ API ที่ต่ำมากเท่านั้น เราได้ดำเนินการส่วนประกอบของเราเองสำหรับ (de) การทำให้เป็นอันดับ JSON และอยู่ในกระบวนการของการทำเช่นเดียวกันสำหรับ JWT สิ่งนี้มีอยู่ในเฟรมเวิร์ก API ที่สูงขึ้น เราได้นำ wrapper ไปใช้กับเฟรมเวิร์ก HTTP ของไลบรารี่มาตรฐานเพราะเราไม่ต้องการพึ่งพาการใช้ HTTP ของไลบรารี่มาตรฐาน รหัสทั้งหมดสำหรับการจับคู่กับ / จาก XML ถูกเขียน "ด้วยมือ" อีกครั้งด้วยเหตุผลเดียวกัน ฉันรู้สึกว่าเรากำลังจะไปไกลเกินไป ฉันสงสัยว่าจะจัดการกับเรื่องนี้อย่างไรตั้งแต่นี้ฉันคิดว่าสิ่งนี้มีผลกระทบอย่างมากต่อความเร็วของเรา

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

12
วิธีการย้อนกลับและดูรหัสด้วยตาสด [ปิด]
ฉันใช้เวลาหนึ่งปีที่แล้วในฐานะทีมคนเดียวที่พัฒนาแอปพลิเคชันที่มีลูกเล่นมากมาย (35,000+ LoC สำหรับสิ่งที่คุ้มค่า) ปัจจุบันมีเสถียรภาพและในการผลิต อย่างไรก็ตามฉันรู้ว่าทักษะของฉันเริ่มขึ้นเมื่อเริ่มต้นโครงการดังนั้นไม่ต้องสงสัยเลยว่ามีปัญหาสำคัญในรหัส ณ จุดนี้ปัญหาส่วนใหญ่อยู่ในสถาปัตยกรรมโครงสร้างและการโต้ตอบ - ปัญหาง่าย ๆ แม้แต่ปัญหาด้านสถาปัตยกรรม / การออกแบบก็ถูกกำจัดออกไปแล้ว โชคไม่ดีที่ฉันใช้เวลากับโครงการนี้มากจนฉันคิดว่ามันยาก - เข้าใกล้จากมุมมองใหม่เพื่อดูข้อบกพร่องที่ฝังลึกหรือมีอยู่ในการออกแบบ ฉันจะก้าวออกนอกหัวและนอกรหัสของฉันเพื่อให้ได้รูปลักษณ์ใหม่และทำให้ดีขึ้นได้อย่างไร

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