ฉันมักจะทำงานส่วนใหญ่กับเว็บแอปพลิเคชันและแม้ว่าฉันจะพยายามทั่วไปคำตอบของฉันอาจไม่เหมาะกับการเขียนโปรแกรมของคุณ
ฉันจะใช้คำว่า "framework" เหมือนกันกับ "library"
ก่อนที่จะใช้เฟรมเวิร์กต้องพิจารณาบางสิ่งนี่เป็นตัวอย่างทั่วไปบางประการ
# 1 กรอบจะประหยัดเวลาและความพยายามหรือไม่
คำตอบสำหรับคำถามนี้มักจะใช่ กรอบงานมีแนวโน้มที่จะสร้างขึ้นเพื่อแก้ปัญหาเฉพาะและแก้ปัญหาได้ดีมาก ยกตัวอย่างเช่นกรอบเช่น EntityFramework สามารถช่วยให้คุณประหยัดได้ทั้งหมดจากการเขียน SQL รหัส ซึ่งจะเป็นเรื่องที่ยอดเยี่ยมหากทีมเขียนโปรแกรมของคุณไม่ชำนาญใน SQL
กรอบการทำงานถูกสร้างขึ้นเพื่อa)เพิ่มอินเตอร์เฟสที่เป็นมิตรกับโปรแกรมเมอร์ให้กับองค์ประกอบที่ซับซ้อนหรือb)เพิ่ม abstraction ให้กับองค์ประกอบที่รู้จักกันดี (หรือเป็นที่ยอมรับ)
หลัง (หรือแม้แต่ในอดีตในบางกรณี) จริง ๆ แล้วจะได้รับในการพัฒนา นี้นำไปใช้โดยเฉพาะอย่างยิ่งเมื่อคุณหรือทีมงานเขียนโปรแกรมของคุณเป็นไปที่จะใช้กรอบการทำงานใหม่ที่พวกเขาไม่เคยทำงานมาก่อน
สิ่งนี้อาจทำให้กระบวนการพัฒนาของคุณช้าลงซึ่งอาจมีค่าใช้จ่ายสูง
# 2 ขนาดของใบสมัครของคุณ
ว่ากันว่า"ทุกสิ่งที่ควรทำมีค่าเกินความคาดหมาย"แต่โดยปกติแล้วไม่ใช่ในกรณีนี้ อาจไม่มีเหตุผลที่ดีที่จะใช้กรอบซุปเปอร์ขนาดถ้าจุดของการใช้งานของคุณคือการพิมพ์"มันฝรั่ง"
เมื่อคุณพัฒนาแอปพลิเคชั่น (ไม่ว่าจะเป็นเว็บเดสก์ท็อปมือถือหรือแอปพลิเคชั่นประเภทอื่น ๆ ที่เป็นไปได้) - ถ้าคุณรู้สึกว่าขนาดของกรอบงานของคุณ "คนแคระ" ของคุณ สัญญาณเตือนว่ากรอบงานของคุณอาจทำให้แอปพลิเคชันของคุณบวม เกร็ดเล็กเกร็ดน้อยที่ดีคือถ้าคุณรวม jQuery เพียงแค่เพิ่มคลาสที่ "โหลด" ลงในแท็ก body ของคุณเมื่อเอกสารพร้อม การทำเช่นนั้นด้วย JavaScript ดั้งเดิมอาจจะยากขึ้นเล็กน้อยแต่ก็ไม่ได้ทำให้แอปพลิเคชันของคุณขยาย
ในทางกลับกันถ้าเฟรมเวิร์กมีงานสกปรกจำนวนมากอยู่ภายใน (เช่นเฟรมเวิร์กฐานข้อมูล) ดังนั้นมันอาจใช้งานได้แม้ว่าคุณจะเป็นเพียงบางส่วน "" โดยใช้เฟรมเวิร์ก เกร็ดเล็กเกร็ดน้อยที่ดีคือการไม่พยายามสร้าง ADO.NET หรือ MongoDB-driver ของคุณเองเพียงเพราะคุณไม่จำเป็นต้องใช้ไลบรารีทั้งหมด
บางครั้งเฟรมเวิร์กจะเป็นโอเพ่นซอร์ส (และด้วย 'ทำอะไรก็ได้ที่คุณต้องการ') สิ่งนี้จะเปิดโอกาสใหม่ที่ทีมการเขียนโปรแกรมอาจเลือกเฉพาะบางส่วนของกรอบงาน
ท้ายที่สุดนี้จะเชื่อมโยงกับคำถาม # 1 และ # 3
# 3 ผลกระทบ
บางครั้งการใช้เฟรมเวิร์กอาจส่งผลกระทบโดยตรงต่อผู้ใช้ สิ่งนี้เป็นจริงอย่างยิ่งสำหรับเว็บแอปพลิเคชันเนื่องจากการมีเฟรมเวิร์กฝั่งไคลเอ็นต์ขนาดใหญ่อาจส่งผลเสียต่อประสบการณ์การใช้งานของผู้ใช้ ผู้ใช้ที่มีเครื่องช้าอาจประสบปัญหาการแสดงผลช้าปัญหาประสิทธิภาพการทำงานกับจาวาสคริปต์หรือปัญหาที่คล้ายกันที่เกิดจากเครื่องย่อย ผู้ใช้ที่มีการเชื่อมต่อช้าอาจพบว่าเวลาในการโหลดช้า (อย่างน้อยเริ่มต้น)
แม้ในแอปพลิเคชันประเภทอื่น ๆ ผู้ใช้อาจได้รับผลกระทบในทางลบจากการพึ่งพาแอปพลิเคชันของคุณ กรอบอย่างน้อยเสมอใช้เวลาถึงบางพื้นที่ดิสก์และถ้าคุณมีการพัฒนาแอพมือถือ (หรือแม้กระทั่ง app เดสก์ทอป) นี้อาจจะมีความจำเป็นที่จะต้องนำมาพิจารณา
กรอบฝั่งเซิร์ฟเวอร์ (มากยิ่งขึ้นบนเว็บที่เฉพาะเจาะจง) ส่วนใหญ่จะไม่ส่งผลต่อผู้ใช้ปลายของคุณ แต่มันจะมีผลต่อโครงสร้างพื้นฐาน เฟรมเวิร์กบางตัวมีการขึ้นต่อกันซึ่งอาจทำให้คุณต้องรีสตาร์ทเว็บเซิร์ฟเวอร์ไม่ว่าจะเป็นบริการหรือเซิร์ฟเวอร์ทั้งหมด
กรอบบางคนก็อาจจะมีมากทรัพยากรหนัก
หลักสูตรนี้เชื่อมโยงกลับไปยังจุดที่ 1 และ # 2
ทั้งหมดนี้เป็นเพียง "วงกลมแห่งการพิจารณา" ที่ยิ่งใหญ่และไม่มีวิธีการทางวิทยาศาสตร์ที่แท้จริงสำหรับการตัดสินใจว่าคุณควรใช้กรอบงานหรือไม่
Corbin March สรุปได้เป็นอย่างดี:
กลุ่มที่ฉันทำงานกับทุกคนทำสิ่งเดียวกัน - คาดเดาค่าใช้จ่ายและผลประโยชน์เลือกเส้นทางที่ให้ผลดีที่สุดและหวังว่าพวกเขาจะถูกต้อง มันไม่ได้เป็นวิทยาศาสตร์อย่างมาก - สัญชาตญาณส่วนหนึ่งประสบการณ์สามส่วนความอ่อนไหวต่อการตลาดส่วนหนึ่งไหวพริบส่วนหนึ่งและความเห็นห้าส่วน
นอกจากนี้ยังเป็นสิ่งสำคัญที่จะไม่เป็นชั้นนำ Frameworks เป็นเครื่องมือที่มีไว้เพื่อใช้งาน ฉันรู้จักผู้คนทั้งสองสุดขั้ว ในอีกด้านหนึ่งคุณมีคนที่ทำให้ชีวิตยากสำหรับตัวเองในอีกด้านหนึ่งคุณมีคนที่สร้างแอปพลิเคชันที่ช้าและอ้วน
เฟรมเวิร์กทั้งหมดมีกรณีการใช้งานมันเป็นเพียงเรื่องของการใช้มันเพื่อวัตถุประสงค์ที่ถูกต้อง