มุมมองที่คุณสามารถเบ้โดยประสบการณ์ส่วนตัว นี่คือข้อเท็จจริงที่ถูกต้องทีละส่วนที่ลื่นลื่น แต่การอนุมานที่เกิดขึ้นไม่ได้แม้ว่าจะดูเหมือนว่าถูกต้องตั้งแต่แรกเห็น
- กรอบงานมีขอบเขตที่ใหญ่กว่าโครงการขนาดเล็ก
- การปฏิบัติที่ไม่ถูกต้องนั้นยากที่จะจัดการกับในโค้ดที่ใหญ่ขึ้น
- การสร้างกรอบงาน (โดยเฉลี่ย) ต้องการนักพัฒนาที่มีทักษะมากกว่าการสร้างโครงการขนาดเล็ก
- นักพัฒนาที่ดีขึ้นจะต้องปฏิบัติตามแนวทางที่ดีขึ้น (SOLID)
- เป็นผลให้กรอบความต้องการที่สูงขึ้นสำหรับการปฏิบัติที่ดีและมีแนวโน้มที่จะสร้างขึ้นโดยนักพัฒนาที่มีประสบการณ์อย่างใกล้ชิดกับการปฏิบัติที่ดี
ซึ่งหมายความว่าเมื่อคุณโต้ตอบกับเฟรมเวิร์กและไลบรารีขนาดเล็กโค้ดการปฏิบัติที่ดีที่คุณโต้ตอบด้วยจะพบได้ทั่วไปในเฟรมเวิร์กที่ใหญ่กว่า
การเข้าใจผิดนี้เป็นเรื่องธรรมดามากเช่นแพทย์ทุกคนที่ฉันได้รับการรักษาก็ถือเป็นคนหยิ่ง ดังนั้นฉันจึงสรุปได้ว่าแพทย์ทุกคนหยิ่ง ความผิดพลาดเหล่านี้มักจะเกิดจากการอนุมานแบบครอบคลุมโดยอาศัยประสบการณ์ส่วนตัว
ในกรณีของคุณเป็นไปได้ว่าคุณมีประสบการณ์การฝึกฝนที่ดีในกรอบที่ใหญ่กว่าและไม่ใช่ในห้องสมุดขนาดเล็ก การสังเกตส่วนตัวของคุณไม่ผิด แต่มันเป็นหลักฐานพอสมควรและไม่สามารถใช้ได้ในระดับสากล
โหมดการเขียนโปรแกรม 2 โหมด - การสร้างสิ่งที่ถามมากขึ้นหรือน้อยลงผ่านข้อกำหนดและ KISS (การเขียนโปรแกรมทั่วไป) หรือการสร้างตรรกะทั่วไปและนำกลับมาใช้ซ้ำได้บริการ ฯลฯ ที่ให้ความยืดหยุ่นที่นักพัฒนาคนอื่นอาจต้องการ
คุณค่อนข้างจะยืนยันสิ่งนี้ที่นี่ คิดว่ากรอบคืออะไร มันไม่ใช่แอปพลิเคชัน เป็นแม่แบบ "ทั่วไป" ที่ผู้อื่นสามารถใช้เพื่อสร้างแอปพลิเคชันทุกประเภท ตรรกะหมายความว่ากรอบถูกสร้างขึ้นในตรรกะที่เป็นนามธรรมมากขึ้นเพื่อให้ทุกคนสามารถใช้ประโยชน์ได้
ตัวสร้างกรอบงานไม่สามารถใช้ทางลัดได้เนื่องจากพวกเขาไม่รู้ด้วยซ้ำว่าข้อกำหนดของแอปพลิเคชันที่ตามมาคืออะไร การสร้างกรอบงานจะสร้างแรงจูงใจให้พวกเขาใช้รหัสสำหรับผู้อื่น
อย่างไรก็ตามผู้สร้างแอปพลิเคชันมีความสามารถในการประนีประนอมกับประสิทธิภาพเชิงตรรกะเพราะพวกเขามุ่งเน้นไปที่การส่งมอบผลิตภัณฑ์ เป้าหมายหลักของพวกเขาไม่ใช่การทำงานของรหัส แต่เป็นประสบการณ์ของผู้ใช้
สำหรับเฟรมเวิร์กผู้ใช้ปลายทางเป็นผู้พัฒนารายอื่นซึ่งจะโต้ตอบกับโค้ดของคุณ คุณภาพของรหัสของคุณมีความสำคัญต่อผู้ใช้ของคุณ
สำหรับแอปพลิเคชันผู้ใช้ปลายทางไม่ใช่ผู้พัฒนาซึ่งจะไม่โต้ตอบกับรหัสของคุณ คุณภาพของรหัสของคุณไม่มีความสำคัญต่อพวกเขา
นี่คือเหตุผลที่สถาปนิกของทีมพัฒนามักทำหน้าที่เป็นผู้บังคับการปฏิบัติที่ดี พวกเขาเป็นขั้นตอนเดียวที่ถูกลบออกจากการส่งมอบผลิตภัณฑ์ซึ่งหมายความว่าพวกเขามีแนวโน้มที่จะดูรหัสอย่างเป็นกลางมากกว่ามุ่งเน้นไปที่การส่งมอบแอปพลิเคชันของตัวเอง
หากคุณเพิ่มจุดเริ่มต้นของสิ่งที่เป็นนามธรรมคุณจะปฏิบัติตามข้อกำหนดของผู้ใช้จริง ๆ หรือคุณสร้างกรอบงานด้านบนของเฟรมเวิร์กที่มีอยู่และสแต็คเทคโนโลยีเพื่อให้การเพิ่มในอนาคตง่ายขึ้นหรือไม่? ในกรณีใดบ้างที่คุณให้บริการเพื่อผลประโยชน์ของลูกค้าหรือของผู้พัฒนา
นี่เป็นประเด็นที่น่าสนใจและจากประสบการณ์ของฉันเหตุผลหลักที่ว่าทำไมผู้คนยังคงพยายามหลีกเลี่ยงการฝึกฝนที่ดี
เพื่อสรุปประเด็นต่าง ๆ ด้านล่าง: การข้ามแนวปฏิบัติที่ดีสามารถพิสูจน์ได้หากความต้องการของคุณ (ตามที่รู้จักกันในปัจจุบัน) นั้นไม่เปลี่ยนรูปและจะไม่มีการเปลี่ยนแปลง / เพิ่มเติมจาก codebase การแจ้งเตือนผู้สปอยเลอร์: นั่นเป็นกรณีที่ไม่ค่อย
ตัวอย่างเช่นเมื่อฉันเขียนแอปพลิเคชันคอนโซล 5 นาทีเพื่อประมวลผลไฟล์เฉพาะฉันไม่ได้ใช้แนวปฏิบัติที่ดี เพราะฉันจะใช้แอปพลิเคชั่นในวันนี้เท่านั้นและไม่จำเป็นต้องได้รับการอัปเดตในอนาคต (การเขียนแอปพลิเคชันอื่นจะง่ายกว่านี้หากฉันต้องการอีกครั้ง)
สมมติว่าคุณสามารถสร้างแอปพลิเคชันได้ใน 4 สัปดาห์และคุณสามารถสร้างแอปพลิเคชันได้อย่างถูกต้องใน 6 สัปดาห์ ตั้งแต่แรกเห็นอาคารที่ดูดีขึ้น ลูกค้าได้รับใบสมัครได้เร็วขึ้นและ บริษัท ต้องใช้เวลาน้อยลงในค่าจ้างนักพัฒนา ชนะ / ชนะใช่ไหม
อย่างไรก็ตามนี่เป็นการตัดสินใจโดยไม่ต้องคิดล่วงหน้า เนื่องจากคุณภาพของ codebase การเปลี่ยนแปลงที่สำคัญในตัวสร้างแบบ shoddily จะใช้เวลา 2 สัปดาห์ในขณะที่การเปลี่ยนแปลงแบบเดียวกันกับที่สร้างขึ้นอย่างเหมาะสมนั้นใช้เวลา 1 สัปดาห์ อาจมีการเปลี่ยนแปลงเหล่านี้เกิดขึ้นในอนาคต
นอกจากนี้ยังมีแนวโน้มที่การเปลี่ยนแปลงที่จะต้องทำงานโดยไม่คาดคิดมากกว่าที่คุณคิดในตอนแรกในการสร้างโค้ดโค๊ดแบบ shoddily ดังนั้นจึงมีแนวโน้มที่จะผลักดันเวลาในการพัฒนาของคุณเป็นสามสัปดาห์แทนที่จะเป็นสอง
แล้วก็มีแนวโน้มที่จะเสียเวลาในการตามหาแมลง นี่เป็นกรณีในโครงการที่การบันทึกถูกเพิกเฉยเนื่องจากข้อ จำกัด ด้านเวลาหรือความไม่เต็มใจที่จะนำมาใช้เพราะคุณไม่ได้ทำงานภายใต้สมมติฐานที่ว่าผลิตภัณฑ์สุดท้ายจะทำงานได้ตามที่คาดไว้
มันไม่จำเป็นต้องมีการอัพเดทครั้งสำคัญด้วยซ้ำ ที่นายจ้างปัจจุบันของฉันฉันเคยเห็นหลายโครงการที่สร้างขึ้นอย่างรวดเร็วและสกปรกและเมื่อข้อผิดพลาดเล็กที่สุด / การเปลี่ยนแปลงจำเป็นต้องทำเนื่องจากการสื่อสารผิดพลาดในข้อกำหนดที่นำไปสู่ปฏิกิริยาลูกโซ่ของความต้องการโมดูล refactor หลังจากโมดูล . บางส่วนของโครงการเหล่านี้จบลงด้วยการทรุดตัว (และทิ้งไว้ซึ่งความไม่เป็นระเบียบ) ก่อนที่พวกเขาจะเปิดตัวเวอร์ชั่นแรก
การตัดสินใจทางลัด (การเขียนโปรแกรมอย่างรวดเร็วและสกปรก) มีประโยชน์เฉพาะในกรณีที่คุณสามารถรับรองได้อย่างแน่นอนว่าข้อกำหนดนั้นถูกต้องและไม่จำเป็นต้องเปลี่ยนแปลง จากประสบการณ์ของฉันฉันไม่เคยเจอโครงการที่เป็นจริง
การลงทุนเวลาพิเศษในการฝึกฝนที่ดีคือการลงทุนในอนาคต ข้อผิดพลาดในอนาคตและการเปลี่ยนแปลงจะง่ายขึ้นมากเมื่อ codebase ที่มีอยู่สร้างขึ้นบนแนวปฏิบัติที่ดี มันจะจ่ายเงินปันผลหลังจากที่มีการเปลี่ยนแปลงเพียงสองหรือสามครั้ง