Trong Java, cho lớp sau:Java Kiểu/Thực hành tốt nhất - thông qua các lĩnh vực với các phương pháp tiếp cận trực tiếp vs
public class MyClass {
private final Dependency dependency;
public MyClass(Dependency dependency)
{
this.dependency = dependency;
}
public void doWork()
{
// validate dependency...
}
Phương pháp DoWork cần gọi một phương pháp có sử dụng dependency
.
Lựa chọn nào trong hai biến thể sau đây được coi là "thực hành tốt nhất" và tại sao?
// Access dependency directly
void validateDependency()
{
this.dependency.something();
}
// access dependency as passed to the method
void validateDependency(Dependency dependency)
{
dependency.something();
}
Tôi thấy mình ưu tiên sau, chuyển trực tiếp phụ thuộc vào phương pháp, vì nó giúp phương pháp dễ dàng hơn để thử nghiệm cách ly (mặc dù, nhẹ).
Tuy nhiên, tôi quan tâm đến quy ước java/thực tiễn tốt nhất ở đây.
nó chắc chắn phụ thuộc vào tình huống. –
chính xác! phụ thuộc vào tình huống - ví dụ, nếu bạn có các thao tác được kết nối tạm thời (cần được gọi theo thứ tự cụ thể), thì bạn nên sử dụng lệnh sau. Nếu không, bạn có thể kết thúc với khách hàng/người duy trì mã của bạn nhận được hành vi của NPE hoặc khó hiểu hơn. – lucas1000001
cũng, để đưa nó đến một cực đoan - Tôi đoán bạn đang thực sự xem xét chức năng vs đối tượng theo định hướng lập trình phong cách - oo là cựu, và chức năng sau này. – lucas1000001