Không có gì đặc biệt sai với giải pháp của bạn.
Nhưng sở thích cá nhân của tôi sẽ là những phương pháp đó không hữu ích. Và chỉ làm phức tạp giao diện của bất kỳ đối tượng nào mà họ tham gia.
Việc void moveCameraTo(double latitude, double longitude)
không thực sự đơn giản hóa mã, vì tôi thấy không có vấn đề gì chỉ đơn giản là gọi moveCameraTo(new LatLng(latitude, longitude));
vào vị trí của nó. Phương pháp này cũng có mùi của nỗi ám ảnh nguyên thủy.
Có void moveCameraTo(Location location)
thể được giải quyết tốt hơn bằng cách chứng minh Location.ToLatLng()
phương pháp và gọi moveCameraTo(location.ToLatLng())
.
nếu đây là C # và nếu một phương thức như vậy là thực sự cần thiết, tôi sẽ thích chúng làm phương thức mở rộng thay vì phương thức cá thể. Việc sử dụng các phương thức mở rộng sẽ trở nên thực sự rõ ràng nếu bạn thử trừu tượng hóa và kiểm tra đơn vị trường hợp này. Vì sẽ dễ dàng hơn nhiều khi chỉ giả mạo phương thức đơn lẻ thay vì nhiều lần quá tải với các chuyển đổi đơn giản.
Tôi nghĩ rằng với cách này, tôi loại bỏ trách nhiệm biết LatLng là gì trong một lớp khác chẳng hạn.
Tôi thấy không có lý do tại sao điều này sẽ là một vấn đề. Miễn là mã tham chiếu lớp của bạn có chứa void moveCameraTo(LatLng latLng)
, nó vẫn gián tiếp phụ thuộc vào LatLng
. Ngay cả khi lớp đó không bao giờ được khởi tạo trực tiếp.
Và bạn không cần chuẩn bị dữ liệu trước khi gọi hàm.
Tôi không hiểu ý của bạn. Nếu nó có nghĩa là tạo cá thể mới hoặc chuyển đổi các lớp từ lớp này sang lớp khác, tôi thấy không có vấn đề gì với điều đó.
Nghĩ về nó, tôi cảm thấy rằng những gì tôi đang nói cũng được hỗ trợ bởi chính thiết kế API của .NET. Trong lịch sử, rất nhiều lớp .NET tuân theo cách tiếp cận của bạn là có quá nhiều quá tải với các tham số khác nhau và các chuyển đổi đơn giản bên trong. Nhưng đó là trước khi các phương thức mở rộng tồn tại. Các lớp .NET hiện đại hơn có trọng lượng nhẹ hơn trong các API của riêng chúng và nếu có bất kỳ phương thức nào có quá tải tham số, chúng được cung cấp làm phương thức mở rộng. Ví dụ cũ hơn là NLog ILogger có hàng tá quá tải để ghi vào nhật ký. So sánh điều đó với Microsoft.Extensions.Logging.ILogger mới hơn có tổng cộng 3 phương thức (và chỉ 1 nếu bạn tính chính việc đăng nhập). Nhưng có rất nhiều người trợ giúp và các tham số khác nhau như các phương pháp mở rộng .
Tôi nghĩ rằng câu trả lời này cho thấy rằng một số ngôn ngữ sẽ có các công cụ để thiết kế như thế này đẹp hơn. Tôi không biết nhiều về Java, vì vậy tôi không chắc sẽ có tương đương hay không. Nhưng ngay cả khi sử dụng các phương thức tĩnh đơn giản có thể là một lựa chọn.