sách gpt4 ăn đã đi

Có thể đặt gói lớp ở chế độ riêng tư cho mục đích thử nghiệm không

In lại Tác giả: Walker 123 更新时间:2023-11-30 08:34:56 30 4
mua khóa gpt4 giày nike

我有一个类将执行一些复杂的操作,涉及像这样的一些计算:

public class ComplexAction {

public void someAction(String parameter){
ComplexActionEvaluator evaluator = new ComplexActionEvaluator();
int value = evaluator.eval(parameter);
//some other actions
}

static class ComplexActionEvaluator implements Evaluator{
public int eval(String parameter){
//evaluation
}
}
}

//package-private, uses only for Actions
interface Evaluator{
int eval(String parameter);
}

由于评估器可能包含一些复杂的逻辑,我想为它编写测试。但由于 ComplexActionEvaluator 是特定于 ComplexAction 的,所以我会将其设为私有(private)而不是包私有(private)。但这会使它无法进行测试。

我首先想到的解决方案就是让它成为默认访问权限。但默认访问权限仅用于测试。

我认为如果通过测试来决定使用哪个访问修饰符是不太好的。也许我做错了什么或者这是一种常见的做法?

câu trả lời hay nhất

也没有简单的答案;因为你是完全正确的:有意义的事情(只允许出于测试目的访问)在 Java 中不起作用。我认为其他较新的语言实际上引入了允许您将方法/类标记为“仅私有(private),但可用于测试代码”的概念;但 Java 还没有。

从这个意义上说,你只能通过“约定”来解决这个问题;喜欢:

  1. 添加 java-doc(或非 javadoc 注释)以标记“非私有(private)”内容以用于测试目的
  2. 确保您的包裹中其他人应该使用的东西总是在团队中携带public

换句话说:因为你只能“要求”人们忽略某些部分,你只需确保“真正公开”的东西被标记为这样,并始终如此记录;你团队中的每个人都明白:其他任何事情都不感兴趣;并且应该被视为“私有(private)实现”的细节。

关于java - 是否可以出于测试目的将类包私有(private)化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38565294/

30 4 0
Walker 123
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress