Computer >> Máy Tính >  >> Lập trình >> Ruby

Làm thế nào để ngăn chặn các thông tin tóm tắt xấu khỏi việc còng tay mã của bạn

(Bài đăng này dựa trên bài đăng mà tôi đã gửi vào danh sách của mình cách đây vài tháng. Để đọc thêm bài đăng này mỗi tuần, hãy tham gia tại đây!)

Trong Sử dụng một chút tiện lợi để lưu quy trình lập trình của bạn, tôi đã nói về cách những điều trừu tượng đơn giản nhất có thể làm cho cơ sở mã của bạn thú vị hơn khi làm việc.

Nhưng còn khi bạn bị xấu trừu tượng?

Bạn tìm hiểu tham chiếu API mọi lúc để hiểu phương pháp đó rõ ràng lẽ ra phải được đặt tên là leaderboard thực sự được gọi. Bạn cố gắng tái cấu trúc xung quanh nó, nhưng một phần của mã sẽ chuyển cho bạn dữ liệu cấu trúc và phần khác cung cấp cho bạn các dòng văn bản thô. Và mỗi khi bạn chạm vào mã, một cái gì đó sẽ bị hỏng, và bạn phải cố gắng gỡ lỗi phần còn lại trong ngày của mình. Vì bạn đã chỉnh sửa position , nhưng không cập nhật score đồng thời.

Vậy làm thế nào để bạn xây dựng những điều trừu tượng tốt, đồng thời tránh xa những điều xấu?

Sử dụng những phép ẩn dụ hay để viết mã rõ ràng hơn

Những sự trừu tượng tốt đến từ những phép ẩn dụ hay.

A ẩn dụ mô tả điều gì đó trong hệ thống của bạn bằng cách liên hệ nó với một khái niệm đã có trong đầu bạn. Ví dụ:

  • Nhiều dòng lệnh sử dụng phép ẩn dụ về đường ống .

    Bạn đặt dữ liệu vào một đầu của đường ống, và dữ liệu sẽ xuất hiện ở đầu kia. Dễ hình dung và dễ sử dụng.

  • Trong lập trình đồng thời, khóa là một phép ẩn dụ hay.

    Nếu không biết bất kỳ điều gì về cách khóa hoạt động nội bộ, bạn biết rằng khi tài nguyên bị khóa, bạn không thể sử dụng tài nguyên đó. Bạn phải đợi cho đến khi nó được mở khóa.

  • Trong Lập trình hướng đối tượng, chuyển thông báo kích hoạt một hình ảnh tinh thần cụ thể:Một đối tượng chuyển cho một đối tượng khác một thông điệp. Đối tượng thứ hai có thể làm điều gì đó với tin nhắn hoặc chuyển nó cho người khác.

    Bạn không cần biết bất kỳ điều gì về việc triển khai để có được ý tưởng (và điều đó làm cho những thứ như mẫu proxy dễ hiểu hơn nhiều).

Một phép ẩn dụ tốt là rất quan trọng. Nếu bạn thấy một phần trừu tượng dựa trên một phép ẩn dụ hay, bạn sẽ hiếm khi phải đọc tài liệu hoặc tìm hiểu nguồn để hiểu mã. Bạn nghĩ ra phép ẩn dụ càng tốt, thì việc mô tả hệ thống của bạn với người khác càng dễ dàng và càng dễ dàng hoạt động trên hệ thống của bạn sau này.

Làm cách nào để tìm ra những ẩn dụ hay?

Một phép ẩn dụ tốt là cụ thể, khép kín và tạo ra hình ảnh tinh thần sống động về sự vật mà nó mô tả. Nó không để lại chỗ cho sự hiểu lầm và nó khớp với hành vi của mã nhất có thể. Nếu ai đó đưa ra giả định về mã dựa trên sự hiểu biết của họ về phép ẩn dụ, thì những giả định đó phải hợp lệ.

Thật khó để tìm ra những ẩn dụ hay. Bạn thường sẽ trải qua một vài phép ẩn dụ bị rò rỉ trước khi có thể tìm thấy phép ẩn dụ phù hợp và điều đó không sao cả! Việc luyện tập sẽ trở nên dễ dàng hơn. Nhưng đây là một quá trình đã giúp tôi:

Nghĩ về cái gì một chút mã thực hiện mà không cần suy nghĩ về cách thức nó thực hiện nó. Hình ảnh nào hiện lên trong đầu bạn? Làm thế nào để mã khác sử dụng nó? Nếu bạn phải mô tả nó trong một hoặc hai từ, bạn sẽ sử dụng từ nào? Viết ra.

Sau đó, hãy nghĩ về hình ảnh đó. Nó có phù hợp với cách thức hoạt động của mã đó không? Có những trường hợp cạnh nào bị rò rỉ qua phép ẩn dụ không? Có gì ngoài không phép ẩn dụ mà một cộng tác viên mới sẽ phải hiểu trước khi họ có thể sử dụng mã? Khi bạn nghĩ về phép ẩn dụ của mình, bạn có hình dung rõ ràng trong tâm trí mình hay nó mờ nhạt?

Đây là những dấu hiệu cho thấy phép ẩn dụ của bạn không khớp với mã của bạn đủ chặt chẽ. Nhưng bạn càng tiến gần đến một phép ẩn dụ hay, bạn càng phải thực hiện ít bước nhảy vọt để đạt được điều đó.

Cuối cùng, sử dụng nó trong một câu. “Mã này là một (cái gì đó), bởi vì… ”Bạn có thể giải thích phép ẩn dụ của mình cho một người không có kiến ​​thức nền tảng về kỹ thuật và họ hiểu nó làm gì không? Ai đó càng cần ít kiến ​​thức về phép ẩn dụ, thì phép ẩn dụ của bạn càng hữu ích.

Nếu bạn đang ở gần nhưng không hoàn toàn ở đó, hãy xem từ điển từ đồng nghĩa. Sự khác biệt nhỏ giữa các từ tương tự có thể có nghĩa là sự khác biệt giữa phép ẩn dụ OK và phép ẩn dụ hoàn hảo.

Ẩn dụ và OOP

Lập trình hướng đối tượng về cơ bản dựa trên phép ẩn dụ. Đó là nơi nó có sức mạnh! Các lớp được thiết kế tốt không chỉ ẩn việc triển khai của chúng với các lớp khác mà còn ẩn việc triển khai của mình với bạn .

Với một phép ẩn dụ tuyệt vời, bạn sẽ có thể biết ngay từ tên lớp cách sử dụng các đối tượng của mình. Nếu các lớp của bạn được đặt tên hợp lý và chúng khiến hình ảnh phù hợp xuất hiện trong tâm trí bạn, bạn không cần phải đi sâu vào việc triển khai chúng để hiểu chúng.

Vì vậy, bây giờ, tôi muốn bạn nghĩ về các lớp trong mã cuối cùng bạn đã làm việc. Bạn có thể nghĩ ra bất kỳ ẩn dụ nào đặc biệt rõ ràng không? Bạn cảm thấy thích làm việc với những lớp nào hơn là chống lại? Bạn có thường xuyên tìm hiểu về chúng để tìm ra cách sử dụng chúng không?

Tôi muốn nghe những gì bạn tìm hiểu. Để lại bình luận và cho tôi biết.

Để nhanh chóng trở thành một nhà phát triển phần mềm tuyệt vời, bạn phải suy nghĩ có ý thức về mã bạn đang viết và các quy trình bạn đang tuân theo. Và tôi có thể giúp bạn.

Tải xuống mẫu 32 trang miễn phí của tôi về Thực hành đường ray và học cách thử những ý tưởng như thế này ở quy mô nhỏ mà không bị quá tải.