Trong blog dev duy nhất tôi đọc, bởi anh chàng Joel-On-Software-Founder-of-SO, tôi đã đọc cách đây rất lâu rằng OO không dẫn đến tăng năng suất. Quản lý bộ nhớ tự động nào. Mát mẻ. Ai có thể từ chối dữ liệu?
Tôi vẫn tin rằng OO không phải là OO, lập trình với các chức năng là lập trình mọi thứ nội tuyến.
(Và tôi nên biết, khi tôi bắt đầu với GWBasic.) Khi bạn cấu trúc lại mã để sử dụng các hàm,
variable2654
trở thành
variable3
phương thức bạn tham gia. Hoặc, tốt hơn, nó có một tên mà bạn có thể hiểu
và nếu hàm đó ngắn , nó được gọi
value
và đó là đủ để hiểu đầy đủ.
Khi mã không có chức năng trở thành mã với phương pháp này, bạn có thể xóa dặm mã.
Khi bạn refactor code để thực sự OO, b
, c
, q
, và Z
trở thành this
, this
, this
và this
. Và kể từ khi tôi không tin trong việc sử dụng this
từ khóa, bạn có thể dặm xóa mã. Trên thực tế, bạn có thể làm điều đó ngay cả khi bạn sử dụng this
.
Tôi không nghĩ OO là phép ẩn dụ tự nhiên.
Tôi cũng không nghĩ ngôn ngữ là một phép ẩn dụ tự nhiên, tôi cũng không nghĩ rằng "mùi" của Fowler tốt hơn là nói "mã này có vị rất tệ". Điều đó nói rằng, tôi nghĩ rằng OO không phải là về ẩn dụ tự nhiên và những người nghĩ rằng các
vật thể bật ra về cơ bản là
bạn đang thiếu điểm.
Bạn xác định vũ trụ đối tượng và vũ trụ đối tượng tốt hơn dẫn đến mã ngắn hơn, dễ hiểu hơn, hoạt động tốt hơn hoặc tất cả những điều này (và một số tiêu chí tôi đang quên). Tôi nghĩ rằng những người sử dụng các đối tượng tự nhiên của khách hàng / miền làm đối tượng lập trình đang thiếu sức mạnh để xác định lại vũ trụ.
Ví dụ, khi bạn thực hiện một hệ thống đặt chỗ của hãng hàng không, những gì bạn gọi là đặt chỗ có thể không tương ứng với đặt chỗ hợp pháp / kinh doanh.
Một số khái niệm cơ bản là những công cụ thực sự tuyệt vời
Tôi nghĩ rằng hầu hết mọi người đều phóng đại với toàn bộ điều đó "khi bạn có một cái búa, tất cả đều là đinh". Tôi nghĩ rằng mặt khác của đồng xu / gương là đúng như vậy: khi bạn có một tiện ích như đa hình / kế thừa, bạn bắt đầu tìm cách sử dụng ở nơi nó phù hợp như găng tay / vớ / kính áp tròng. Các công cụ của OO rất mạnh mẽ. Kế thừa đơn là, tôi nghĩ, hoàn toàn cần thiết để mọi người không bị mang đi,
phần mềm đa thừa kế của riêng tôi
không chịu được.
Quan điểm của OOP là gì?
Tôi nghĩ rằng đó là một cách tuyệt vời để xử lý một cơ sở mã hoàn toàn lớn. Tôi nghĩ rằng nó cho phép bạn tổ chức và sắp xếp lại mã của bạn và cung cấp cho bạn một ngôn ngữ để thực hiện điều đó (ngoài ngôn ngữ lập trình bạn đang làm việc) và mô đun hóa mã theo cách khá tự nhiên và dễ hiểu.
OOP bị hiểu lầm bởi phần lớn các nhà phát triển
Điều này là do đó là một quá trình mở mắt như cuộc sống: bạn hiểu OO ngày càng nhiều bằng kinh nghiệm và bắt đầu tránh một số mô hình nhất định và sử dụng người khác khi bạn khôn ngoan hơn. Một trong những ví dụ tốt nhất là bạn ngừng sử dụng tính kế thừa cho các lớp mà bạn không kiểm soát và thay vào đó thích mẫu
Mặt tiền .
Về bài tiểu luận / câu hỏi của bạn
Tôi đã muốn đề cập rằng bạn đúng. Tái sử dụng là một giấc mơ ống, đối với hầu hết các phần. Dưới đây là một trích dẫn của Anders Hejilsberg về chủ đề đó (xuất sắc) từ đây :
Nếu bạn yêu cầu các lập trình viên mới bắt đầu viết điều khiển lịch, họ thường tự nghĩ: "Ồ, tôi sẽ viết điều khiển lịch tốt nhất thế giới! Nó sẽ là đa hình đối với loại lịch. Nó sẽ có màn hình hiển thị, và mungers, và cái này, cái kia, và cái kia. " Họ cần gửi một ứng dụng lịch trong hai tháng. Họ đặt tất cả cơ sở hạ tầng này vào vị trí kiểm soát, và sau đó dành hai ngày để viết một ứng dụng lịch tào lao lên trên nó. Họ sẽ nghĩ, "Trong phiên bản tiếp theo của ứng dụng, tôi sẽ làm nhiều hơn thế nữa."
Tuy nhiên, một khi họ bắt đầu nghĩ về cách họ thực sự sẽ thực hiện tất cả những sự cụ thể hóa khác trong thiết kế trừu tượng của họ, thì hóa ra thiết kế của họ hoàn toàn sai. Và bây giờ họ đã tự vẽ mình vào một góc, và họ phải ném toàn bộ ra ngoài. Tôi đã thấy điều đó nhiều lần. Tôi là một người tin tưởng mạnh mẽ vào sự tối giản. Trừ khi bạn thực sự sẽ giải quyết vấn đề chung, đừng thử và đặt một khung để giải quyết một vấn đề cụ thể, bởi vì bạn không biết khung đó sẽ như thế nào.