Là lập trình viên, tôi cảm thấy rằng mục tiêu của chúng tôi là cung cấp sự trừu tượng tốt về mô hình miền và logic kinh doanh nhất định. Nhưng sự trừu tượng này nên dừng lại ở đâu? Làm thế nào để đánh đổi giữa sự trừu tượng và tất cả lợi ích của nó (tính linh hoạt, dễ thay đổi, v.v.) và dễ hiểu mã và tất cả lợi ích của nó.
Tôi tin rằng tôi có xu hướng viết mã quá trừu tượng và tôi không biết nó tốt như thế nào; Tôi thường có xu hướng viết nó giống như nó là một loại khung vi mô, bao gồm hai phần:
- Các mô-đun vi mô được nối trong khung vi mô: các mô-đun này dễ hiểu, được phát triển và duy trì dưới dạng các đơn vị. Mã này về cơ bản đại diện cho mã thực sự làm các công cụ chức năng, được mô tả trong các yêu cầu.
- Mã kết nối; Bây giờ ở đây tôi tin đứng vấn đề. Mã này có xu hướng phức tạp vì đôi khi nó rất trừu tượng và khó hiểu ngay từ đầu; điều này phát sinh do thực tế rằng nó chỉ là sự trừu tượng thuần túy, cơ sở trong thực tế và logic kinh doanh được thực hiện trong mã trình bày 1; từ lý do này, mã này dự kiến sẽ không được thay đổi sau khi thử nghiệm.
Đây có phải là một cách tiếp cận tốt trong lập trình? Rằng, việc thay đổi mã rất phân mảnh trong nhiều mô-đun và rất dễ hiểu và mã không thay đổi rất phức tạp từ POV trừu tượng? Nếu tất cả các mã phải phức tạp đồng đều (đó là mã 1 phức tạp hơn và liên kết với nhau và mã 2 đơn giản hơn) để bất kỳ ai nhìn qua đều có thể hiểu nó trong một khoảng thời gian hợp lý nhưng thay đổi là tốn kém hoặc giải pháp được trình bày ở trên là tốt, trong đó "Thay đổi mã" rất dễ hiểu, gỡ lỗi, thay đổi và "mã liên kết" là loại khó.
Lưu ý: đây không phải là về khả năng đọc mã! Cả mã ở 1 và 2 đều có thể đọc được, nhưng mã ở 2 đi kèm với trừu tượng phức tạp hơn trong khi mã 1 đi kèm với trừu tượng đơn giản.