由于Java 8允许在名为Default Methods的接口中默认实现方法,因此在何时使用a之间似乎存在混淆abstract class.
那么什么时候应该使用与默认方法的接口,何时应该使用抽象类?抽象类在这种情况下仍然有用吗?
我通常遵循全局变量/函数是邪恶的规则,并且每一段代码都应该存在于它所属的类中.
这是一个非常容易遵循的规则,我相信到目前为止我还没有遇到过这条规则的问题.
然而,今天,我需要的功能添加到我的组装,而不是一个特定的类.也就是说,我的几乎所有类都可以用于这个特定的功能.
我应该把这个功能放在哪里(+1重载)?
如果我把它放在"公用事业"课程中,我会觉得很脏.如果我将它添加到一个半相关的类,并让其他类直接调用它,我会感觉更糟.
这段特殊的代码基本上是IList<PointF>一个规范化的列表.我觉得现在添加它作为扩展方法IList<PointF>可能是最好的选择...
我正在尝试编写集成测试,并希望以最佳方式编写最佳实践,礼仪等.
首先,我有一个关于如何在另一个测试类中重用现有测试的问题,我在主题如何在另一个测试类中重用现有的JUnit测试中找到了答案?
在将基本测试功能和相关成员字段移动到基类之后,我发现我需要使成员字段受到保护,或者我需要拥有适当的getter和setter,以便我可以在继承的测试类中使用它们.这是一个例子:
public abstract class BaseTests {
private Class classObj; // or protected without getter/setter?
protected void somethingHelper() {
// Test something
}
protected void somethingElseHelper() {
// Test something for classObj
}
public Class getClassObj() {
return classObj;
}
public void setClassObj(Class other) {
classObj = other;
}
}
public class TestClass1 extends BaseTests {
@Test
public void testSomething() {
somethingHelper();
}
}
public class TestClass2 extends BaseTests {
@Test
public void testSomethingAndSomethingElse() { …Run Code Online (Sandbox Code Playgroud) 所以,我明白一个类可以有属性和方法。
1)如果一个类有一个方法但没有属性,这可能吗?(这似乎不可能,在我看来它违背了创建类的目的)
2)如果一个类有属性但没有方法,这可能吗?(这似乎是可能的)
非常感谢!
我刚刚回答了一个与SRP有关的问题让我想到:SRP如何站在实用工具类上?
根据定义,实用程序类往往会做很多事情.我可以看到单个接入点上的gatering相关实用程序是如何有用的.按照SRP标准,您无法在一个类中实现实用程序.这是否意味着实用程序类是禁止的,或者SRP是否允许它,如果它只是多个类的外观,每个类都遵循SRP?
java ×2
c# ×1
interface ×1
java-8 ×1
junit ×1
oop ×1
single-responsibility-principle ×1
tdd ×1
uml ×1
unit-testing ×1