草庐IT

java - 这种 Java 异常风格是不好的做法吗?

在一个方法中进行多次尝试并像这样构造代码是否被认为是不好的做法?publicvoidwhatever(){try{methodThatMayThrowIOException();}catch(IOExceptionio){//dosomethingwithexceptionhere}//domorestuffherethatwon'tthrowexceptionstry{methodThatMayThrowCustomException();}catch(CustomExceptionce){//dosomethingwithcustomexceptionhere}}

java - 'mix class and interfaces in the same package' 是不好的做法吗?

我刚刚发现了一些我以前从未听说过并且我不同意(到现在)的东西。在(已投票且未进一步评论)answer我阅读了“为什么要在同一个包中混合类和接口(interface)”所以我想知道,是否有理由将Java中的接口(interface)和实现分开。我知道我们没有义务将所有实现都放在接口(interface)包中,但(有时)不在那里是明智的吗?问候迈克[;-) 最佳答案 我同意org.life.java-我将拥有服务和底层service.impl包,但始终采用那种安排。我不同意“不好的做法”这个词。太强了。java.utilCollecti

c# - 为什么在 OOP(例如 Java、C#)中使用 break/continue 标签是一种不好的做法?

按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭10年前。有人告诉我,在OOP语言中使用break和continue标签不是OOP编程风格。您能详细解释一下原因和问题所在吗?诀窍在于这个标签词。我的意思是标记为break/continue。classBreakWithLabelDemo{publicstaticvoidmain(String[]args){int[][]arrayOfInts={{32,87,3

java - JDK 的 try-with-resources 示例中的错误做法?

这个问题在这里已经有了答案:Correctidiomformanagingmultiplechainedresourcesintry-with-resourcesblock?(8个答案)关闭5年前。我在try-with-resources中找到了这个例子Java文档:staticStringreadFirstLineFromFile(Stringpath)throwsIOException{try(BufferedReaderbr=newBufferedReader(newFileReader(path))){returnbr.readLine();}}如果BufferedReader

java - 如何避免在服务类中重复 DAO 方法? @Transactional 注释 DAO 和服务类 - 这是可以接受的做法吗?

我知道最佳实践是同时拥有服务层和Dao层,并在服务层添加@Transactional注解。但在我的例子中,这意味着我的大部分服务类都是为了重复DAO方法而创建的……这很烦人。例如。publicinterfaceFooDAO{publicListlist(intcathegoryId);publicListlist(intcathegoryId,intownerId);}@Service@TransactionalpublicclassFooService{protected@AutowiredFooDAOdao;publicListlist(intcathegoryId){dao.li

java - 使用带有 CompletableFuture 的默认公共(public) fork/join 池进行长阻塞调用是不好的做法吗?

假设我有一个CompletableFuture,它包装了一个阻塞调用,例如使用JDBC查询后端。在这种情况下,由于我没有将任何执行程序服务作为参数传递给CompletableFuture.supplyAsync(),因此通过后端获取资源的实际阻塞工作应该由公共(public)Fork/Join池中的线程完成。不是吗badpractice让来自公共(public)FJpool的线程执行阻塞调用?我在这里的优势是我的主线程没有阻塞,因为我委托(delegate)异步运行的阻塞调用。检查正在阻塞的abtJDBC调用here.如果这个推断是正确的,为什么可以选择将默认的公共(public)FJ

java - 为被调用方法返回的值创建一个未使用的引用是好的做法吗?

我有一个friend,他的老师认为这是一种很好的做法:publicvoidenterAnythingToContinue(){Stringjunk=in.nextLine();}我用谷歌搜索了这个,但没有找到解释,尽管正如预期的那样,还有其他用户使用这种方法;主要是老师。会不会做与不做并不重要,这只是一个清晰度和教学法的问题?即使您没有明确的答案,我们也欢迎您提供任何意见。 最佳答案 它可能指出Java中方法的矛盾性。你可以像这样使用这个方法Stringjunk=in.nextLine();或者那个in.nextLine();也许您

java - 覆盖非抽象方法是好的做法吗?

我有一种情况需要修改父类(superclass)方法以具有子类特定的逻辑,但方法逻辑对于所有其他子类都是相同的。我有两个选择:1)使方法抽象化,并为除我关注的子类之外的每个方法重复相同的代码。2)在我想要更改逻辑的相关子类中重写非抽象方法。在Java中覆盖非抽象方法是一种好的做法吗?以及在概念上b/w覆盖非抽象方法与抽象方法的区别是什么。 最佳答案 在某种程度上,这是一种风格问题。这是一种常见的做法-但也有人告诉您任何方法都不应有多个实现。这些人声称继承层次结构中的多个实现会导致难以调试的代码——因为您必须非常小心地确定实际调用此类

java - 一个迭代器,它改变并返回相同的对象。不好的做法?

我正在编写GC友好代码来读取并返回给用户一系列byte[]消息。在内部我重复使用相同的ByteBuffer这意味着我将重复返回相同的byte[]大部分时间。我正在考虑编写警告性javadoc并将其作为Iterator公开给用户.据我所知,它不会违反Iterator契约(Contract),但如果他们这样做,用户肯定会感到惊讶Lists.newArrayList(myIterator)并取回List填充了相同的byte[]在每个位置!问题:对于一个可能变异并返回相同对象的类来实现Iterator是否是不良做法界面?如果是这样,最好的选择是什么?“不要改变/重复使用你的对象”是一个简单的答

java - 最好的做法是始终使用访问器方法,即使是在访问本地状态时也是如此吗?

考虑以下类:publicclassPerson{privateIntegerage;//StandardAccessorspublicIntegergetAge(){returnage;}publicvoidsetAge(Integerage){this.age=age;}publicStringgetAgeAsTextString(){if(this.age==20){return"Twenty";}return"Unknown";}}我只有1个整数和2个访问器。如果我想创建一个以字符串形式返回对象状态的实用方法,最好的做法是将类变量引用为this.age,还是应该使用getAge(