Tôi đã lập trình được ít hơn một năm và có một số kinh nghiệm viết các ứng dụng hệ thống, ứng dụng web và tập lệnh cho các doanh nghiệp / tổ chức. Tuy nhiên, một điều tôi chưa bao giờ thực sự làm là làm việc với một khung như Django, Rails hoặc Zend.
Nhìn qua khung Django, tôi hơi thất vọng với bao nhiêu được trừu tượng hóa trong các khung. Tôi hiểu các mục tiêu cốt lõi của DRY và mã tối thiểu, nhưng một số trong số này phụ thuộc quá nhiều vào các mô-đun khác nhau và sự trừu tượng hóa nặng nề của các chức năng cốt lõi có cảm giác như sau:
Làm cho các chương trình được hẹn hò thực sự nhanh chóng vì tính chất luôn thay đổi của các mô-đun / khung,
Làm cho mã khó hiểu vì rất nhiều khung và mô-đun có sẵn và tất cả các đặc điểm riêng của chúng,
Làm cho mã ít logic hơn trừ khi bạn đọc tất cả các tài liệu; tức là, tôi có thể đọc qua một số cách hiểu danh sách và logic điều kiện và tìm hiểu xem chương trình đang làm gì, nhưng khi bạn thấy các hàm yêu cầu chuyển các chuỗi và từ điển tùy ý, mọi thứ sẽ hơi khó hiểu trừ khi bạn đã là một bậc thầy trong một mô-đun nhất định; và:
Làm cho nó khó khăn và tẻ nhạt để chuyển đổi giữa các khung. Chuyển đổi giữa các ngôn ngữ đã là một thách thức, nhưng nó có thể quản lý được nếu bạn có đủ hiểu biết về chức năng / triết lý cốt lõi của chúng. Chuyển đổi giữa các khung dường như là vấn đề ghi nhớ vẹt, trong một số trường hợp dường như khuyến khích sự không hiệu quả mà các khung này được thiết kế để loại bỏ.
Chúng ta có thực sự cần đặt 50 lớp trừu tượng lên trên một thứ đơn giản như truy vấn MySQL không? Tại sao không sử dụng một cái gì đó như giao diện PDO của PHP, trong đó các câu lệnh chuẩn bị / kiểm tra đầu vào được xử lý nhưng truy vấn SQL dễ hiểu vẫn là một phần của hàm?
Là những trừu tượng thực sự hữu ích? Không phải tính năng phình to làm cho chúng trở nên vô dụng, làm cho các ứng dụng trở nên khó khăn hơn so với các ứng dụng tương tự được viết mà không sử dụng khung?
Do we really need to put like 50 layers of abstraction on top of something as simple as a MySQL query?
- Thứ nhất, một khung công tác tốt là một lớp trừu tượng (có thể là 2 hoặc 3 bên trong) và thứ hai là "một cái gì đó đơn giản như một truy vấn MySQL" trong thực tế bao gồm hàng tá trừu tượng. Ngay cả sau khi truy vấn mà bạn thực hiện từ ngôn ngữ được dịch của bạn đã gửi đến máy chủ cơ sở dữ liệu, bạn vẫn có truy vấn trên cơ sở dữ liệu qua các công cụ qua hệ thống tệp qua bộ nhớ vật lý. Vì vậy, trong ngắn hạn: có, chúng ta cần trừu tượng, bởi vì họ giữ cho đầu của chúng không nổ tung.
as a relatively inexperienced programmer
- bạn làm phần mềm càng lâu, bạn sẽ càng đánh giá cao việc dành ít thời gian để phát minh lại bánh xe và có nhiều thời gian hơn ở nhà để làm những việc bạn yêu thích.