Gần đây tôi đã đọc bài đăng trên blog của Three Big Lies và tôi đang gặp khó khăn trong việc biện minh cho lời nói dối thứ hai, được trích dẫn ở đây:
(LIE # 2) MÃ SỐ NÊN ĐƯỢC THIẾT KẾ MỘT MÔ HÌNH CỦA THẾ GIỚI
Không có giá trị trong mã là một loại mô hình hoặc bản đồ của một thế giới tưởng tượng. Tôi không biết tại sao cái này lại hấp dẫn đối với một số lập trình viên, nhưng nó cực kỳ phổ biến. Nếu có một tên lửa trong trò chơi, hãy yên tâm rằng có một lớp "Tên lửa" (Giả sử mã là C ++) chứa dữ liệu cho chính xác một tên lửa và thực hiện công cụ rockety. Hoàn toàn không quan tâm đến việc thông tin dữ liệu đang thực sự được thực hiện hay bố trí dữ liệu. Hoặc cho vấn đề đó, không có sự hiểu biết cơ bản rằng ở đâu có một thứ, có lẽ có nhiều hơn một.
Mặc dù có rất nhiều hình phạt về hiệu suất cho loại thiết kế này, nhưng điều quan trọng nhất là nó không có tỷ lệ. Ở tất cả. Một trăm tên lửa có giá gấp một trăm lần so với một tên lửa. Và nó cực kỳ có khả năng nó có giá cao hơn thế! Ngay cả với một người không lập trình, điều đó cũng không có ý nghĩa gì. Quy mô nền kinh tế. Nếu bạn có nhiều thứ hơn, nó sẽ rẻ hơn, không đắt hơn. Và cách để làm điều đó là thiết kế dữ liệu đúng cách và nhóm các thứ bằng các phép biến đổi tương tự.
Dưới đây là những vấn đề của tôi với lời nói dối này nói riêng.
Có giá trị trong mã là một mô hình / bản đồ của một thế giới tưởng tượng khi mô hình hóa thế giới tưởng tượng giúp (ít nhất là tôi, cá nhân) hình dung và sắp xếp mã.
Đối với tôi, có một lớp "Rocket" là một lựa chọn hoàn toàn hợp lệ cho một lớp. Có lẽ "Tên lửa" có thể được chia thành các loại Tên lửa như AGM-114 Hellfire, v.v ... có chứa cường độ tải trọng, vận tốc tối đa, bán kính quay tối đa, loại nhắm mục tiêu, v.v., nhưng mọi tên lửa được bắn sẽ cần phải có vị trí và một vận tốc.
Tất nhiên có 100 tên lửa có giá hơn 1 Rocket. Nếu có 100 tên lửa trên màn hình thì phải có 100 tính toán khác nhau để cập nhật vị trí của chúng. Đoạn thứ hai nghe có vẻ như đang đưa ra tuyên bố rằng nếu có 100 Tên lửa, thì có nên tốn ít hơn 100 phép tính để cập nhật trạng thái?
Vấn đề của tôi ở đây là tác giả trình bày một mô hình lập trình "thiếu sót" nhưng không trình bày cách "sửa" nó. Có lẽ tôi đang vấp phải sự tương tự của lớp Rocket, nhưng tôi thực sự muốn hiểu lý do đằng sau lời nói dối này. Sự thay thế là gì?