เมื่อพัฒนาระบบหรือแอพพลิเคชั่นที่คุณวางแผนที่จะใช้กับเฟรมเวิร์กบางอย่างมันเป็นการปฏิบัติที่ดีที่สุดในการออกแบบระบบโดยไม่ต้องมีเฟรมเวิร์กในใจหรือดีกว่าในการออกแบบระบบด้วยความคิด ด้วยสิ่งนี้".
เมื่อพัฒนาระบบหรือแอพพลิเคชั่นที่คุณวางแผนที่จะใช้กับเฟรมเวิร์กบางอย่างมันเป็นการปฏิบัติที่ดีที่สุดในการออกแบบระบบโดยไม่ต้องมีเฟรมเวิร์กในใจหรือดีกว่าในการออกแบบระบบด้วยความคิด ด้วยสิ่งนี้".
คำตอบ:
การออกแบบของคุณควรตอบสนองความต้องการของลูกค้าอย่างใกล้ชิดที่สุด จำไว้ว่าการออกแบบนั้นมีสิ่งเล็ก ๆ น้อย ๆ เช่น:
สิ่งเหล่านี้ไม่ควรถูกกำหนดโดยกรอบการทำงาน หากเห็นได้ชัดว่าคุณกำลังต่อสู้กับกรอบงานของคุณเพื่อบรรลุเป้าหมายเหล่านี้คุณต้องเลือกกรอบงานใหม่ที่จะช่วยให้คุณบรรลุเป้าหมายดังกล่าวก่อนที่จะเริ่มเขียนโค้ด
เมื่อคุณเลือกชุดเครื่องมือที่เหมาะสม (กรอบงานเป็นเครื่องมือ) ฉันขอแนะนำให้ใช้เครื่องมือตามที่ออกแบบมาเพื่อใช้งาน ยิ่งคุณเบี่ยงเบนจากกรอบการออกแบบยิ่งเพิ่มช่วงการเรียนรู้ให้กับทีมของคุณและโอกาสที่จะเกิดข้อผิดพลาดมากขึ้น
ในระยะสั้น
ความคิดเพิ่มเติม:
หลังจาก 20 ปีของวิศวกรรมซอฟต์แวร์และใช้หลายเฟรมเวิร์กฉันได้เรียนรู้บทเรียนสองสามครั้ง กรอบทั้งหมดเป็นดาบสองคม: พวกเขาทั้งสองถูก จำกัด และเปิดใช้งาน ปัญหาในการตัดสินใจเลือกเฟรมเวิร์กของคุณก่อนที่คุณจะมองไปที่ 3 ตัวใหญ่ที่ฉันกล่าวถึงข้างต้นก็คือคุณอาจจะได้รับประสบการณ์การใช้งานที่ดี หรือคุณอาจถูกบังคับให้เบี่ยงเบนจากการออกแบบกรอบการทำงานบางอย่าง
เฟรมเวิร์กมีอิทธิพลต่อการออกแบบโมดูลและระบบย่อยโดยเฉพาะ (เช่น GUI front-end) ตามคำตอบอื่น ๆ ที่กล่าวถึงคุณจะมีช่วงเวลาที่ยากลำบากหากคุณพบว่าตัวเองต่อสู้กับกรอบที่คุณเลือก
อย่างไรก็ตามในวงกว้างคุณควรหลีกเลี่ยงการปล่อยให้เฟรมเวิร์กหรือเทคโนโลยีเดียวกำหนดหรือขับเคลื่อน "ภาพรวม" ของสถาปัตยกรรมระบบโดยรวมของคุณ เฟรมเวิร์กแอปพลิเคชันที่ใช้งานทั่วไปส่วนใหญ่ไม่สนับสนุนสิ่งนี้ดังนั้นหากคุณพบว่าตัวเองเขียนระบบทั้งหมดของคุณรอบ ๆ เฟรมเวิร์กเดียว
คุณอาจจะใช้กรอบงานที่แตกต่างกันในการแก้ปัญหาที่แตกต่างกัน เป็นระบบของคุณจะมีความซับซ้อนมากขึ้นคุณจะต้องระมัดระวังไม่ให้สร้างลูกใหญ่ของโคลน หากเป็นไปได้ให้รักษาระบบของคุณแบบแยกส่วนและรวมเข้าด้วยกันอย่างหลวม ๆ เฟรมเวิร์กบางตัวอาจถูกเก็บไว้ด้านหลัง abstractions ได้ดีขึ้นโดยการเขียน wrappers และอะแดปเตอร์ซึ่ง 'ซ่อน' เวิร์กโฟลว์เฉพาะ Framework ออกไปจากส่วนประกอบอื่น ๆ ชุดเครื่องมือ GUI มีแนวโน้มที่จะให้บริการฟังก์ชันการทำงานของ Front-end GUI เท่านั้นดังนั้นโมดูล GUI เหล่านั้นควรอยู่ห่างจากส่วนที่เหลือของระบบ
กรอบวัตถุประสงค์ทั่วไป (เช่นกรอบงาน UI, กรอบข้อมูลเลเยอร์ ฯลฯ ) ไม่มีอยู่เพื่อกำหนดสถาปัตยกรรมที่สมบูรณ์ของระบบของคุณซึ่งส่วนใหญ่พวกเขาอาจกำหนดการออกแบบส่วนประกอบหรือโมดูล ตัวอย่างเช่นเทคโนโลยี GUI บางอย่างมุ่งไปที่รูปแบบ MV * โดยเฉพาะ
สถาปัตยกรรมโดยรวมของระบบของคุณควรมาจากความต้องการทางธุรกิจเป็นหลัก คุณอาจพบว่าตัวเองเอนกายอย่างหนักบนเครื่องมือเฉพาะ (เช่นเครื่องมือมิดเดิลแวร์การส่งข้อความหรือกรอบงาน ORM) เพื่อผูกทุกอย่างเข้าด้วยกัน แต่ถ้าคุณใส่กรอบในสิ่งที่เป็นนามธรรมเช่น 'บริการ' คุณ โอกาสน้อยที่จะพบว่าตัวเองถูก จำกัด ด้วยกรอบการทำงานเมื่อคุณพบข้อ จำกัด
พยายามระลึกถึงสิ่งต่อไปนี้สำหรับการออกแบบภาพใหญ่ของคุณ:
ใช่คุณควรติดให้มากที่สุดเท่าที่จะทำได้ในกรอบที่ "บอก" ให้คุณทำ
เหตุผลก็คือยิ่งคุณยึดติดกับกรอบของ "ความคิด" มากเท่าไหร่คุณก็ยิ่งคุยกับนักพัฒนาคนอื่น ๆ ได้ง่ายขึ้นเกี่ยวกับปัญหา / ความคิดของคุณที่ใช้กรอบงานนั้น
คุณเพิ่มความสามารถในการทำงานร่วมกันและใช้งานง่ายสำหรับคนอื่น ๆ ที่ใช้งานในภายหลังคุณจะเข้าใจและรวมบทเรียนหรือวิธีแก้ปัญหาทั่วไปที่ดีกว่าถ้าคุณยึดมั่นในปรัชญาพื้นฐานของสิ่งที่คุณกำลังใช้
เหตุผลเดียวที่ดีที่ฉันคิดได้ว่าทำไมคุณถึง "หยุด" กรอบการทำงานคือคุณต้องการบางสิ่งบางอย่างที่ไม่สามารถให้ได้เนื่องจากการกำหนดค่าเริ่มต้น / การประยุกต์ใช้หลักการ แต่มันอาจไม่ใช่กรอบที่ถูกต้องที่จะเริ่มต้นด้วย
โดยทั่วไปสิ่งนี้สามารถนำไปใช้กับการตัดสินใจอื่นเช่นกัน คุณควรใช้ภาษาที่คุณใช้อย่างใกล้ชิดตามที่ตั้งใจไว้เพราะจะทำให้สิ่งต่าง ๆง่ายขึ้นถ้าคุณพูดภาษาเดียวกันกับคนอื่น