ฉันเขียนโปรแกรมมาไม่ถึงปีแล้วและมีประสบการณ์ในการเขียนแอปพลิเคชันระบบเว็บแอพและสคริปต์สำหรับธุรกิจ / องค์กร อย่างไรก็ตามสิ่งหนึ่งที่ฉันไม่เคยทำมาก่อนคือทำงานกับกรอบอย่าง Django, Rails หรือ Zend
เมื่อมองไปที่กรอบของ Django ฉันรู้สึกผิดหวังเล็กน้อยกับกรอบในใจ ฉันเข้าใจถึงเป้าหมายหลักของ DRY และโค้ดน้อยที่สุด แต่บางส่วนของการพึ่งพาโมดูลที่แตกต่างกันและสิ่งที่เป็นนามธรรมที่สำคัญของฟังก์ชั่นหลักรู้สึกว่ามัน:
ทำให้โปรแกรมลงวันที่เร็วมากเนื่องจากลักษณะที่เปลี่ยนแปลงตลอดเวลาของโมดูล / กรอบงาน
ทำให้โค้ดยากที่จะเข้าใจเนื่องจากมีกรอบและโมดูลที่พร้อมใช้งานและไอเดียของพวกเขาทั้งหมด
ทำให้โค้ดน้อยลงยกเว้นว่าคุณอ่านเอกสารทั้งหมด; นั่นคือฉันสามารถอ่านรายการความเข้าใจและตรรกะตามเงื่อนไขและหาว่าโปรแกรมกำลังทำอะไร แต่เมื่อคุณเห็นฟังก์ชั่นที่ต้องการส่งผ่านสตริงและพจนานุกรมตามอำเภอใจ โมดูลที่กำหนด; และ:
ทำให้การสลับระหว่างเฟรมเวิร์กเป็นเรื่องยากและน่าเบื่อ การสลับไปมาระหว่างภาษาเป็นเรื่องที่ท้าทายอยู่แล้ว แต่สามารถจัดการได้หากคุณมีความเข้าใจที่เพียงพอเกี่ยวกับฟังก์ชั่นหลัก / ปรัชญา การสลับระหว่างเฟรมเวิร์กดูเหมือนจะเป็นเรื่องของการท่องจำมากกว่าซึ่งในบางวิธีดูเหมือนจะส่งเสริมความไร้ประสิทธิภาพอย่างมากเฟรมเวิร์กเหล่านี้ถูกออกแบบมาเพื่อกำจัด
เราจำเป็นต้องใส่สิ่งที่เป็นนามธรรมมากกว่า 50 เลเยอร์ไว้บนสิ่งที่เรียบง่ายเหมือนกับการสืบค้น MySQL หรือไม่? ทำไมไม่ใช้บางอย่างเช่นอินเทอร์เฟซ PDO ของ PHP ที่จัดการคำสั่ง / การทดสอบอินพุตที่เตรียมไว้ แต่เคียวรี SQL ที่เข้าใจได้ในระดับสากลยังคงเป็นส่วนหนึ่งของฟังก์ชั่นอยู่?
abstractions เหล่านั้นมีประโยชน์จริงๆเหรอ? คุณสมบัติการขยายตัวไม่ได้ทำให้ใช้งานไม่ได้ทำให้แอปพลิเคชันยากขึ้นเมื่อเทียบกับแอปพลิเคชันที่คล้ายกันซึ่งเขียนโดยไม่ใช้เฟรมเวิร์กหรือไม่?
Do we really need to put like 50 layers of abstraction on top of something as simple as a MySQL query?
- ประการแรกโครงร่างที่ดีคือชั้นหนึ่งของนามธรรม (อาจเป็น 2 หรือ 3 ภายใน) และประการที่สอง "สิ่งที่ง่ายเหมือนแบบสอบถาม MySQL" อันที่จริงแล้วเกี่ยวข้องกับบทคัดย่อที่ดีจำนวนหนึ่ง แม้ว่าเคียวรีที่คุณเรียกใช้จากภาษาที่แปลของคุณได้ทำไว้กับเซิร์ฟเวอร์ฐานข้อมูลแล้วคุณยังมีคิวรีบนฐานข้อมูลผ่านเอ็นจิ้นผ่านระบบไฟล์ผ่านที่เก็บข้อมูลจริง ดังนั้นในระยะสั้น: ใช่เราต้องการ abstractions เพราะพวกเขาทำให้หัวของเราจากการระเบิด
as a relatively inexperienced programmer
- ยิ่งคุณสร้างซอฟต์แวร์นานขึ้นเท่าไหร่คุณก็ยิ่งชื่นชมการใช้เวลาน้อยลงในการสร้างสรรค์สิ่งใหม่ ๆ และใช้เวลาอยู่ที่บ้านทำสิ่งที่คุณรักมากขึ้น