此观察是在查看DirectedGraph.java中的addNode代码之后进行的。编码人员使用true和false来区分无操作和操作。一个类似的例子是自定义下面的代码,只是为了轻松地问我一个问题。是否建议将布尔值与操作符区分开来,将布尔值与操作符区分开来为代码客户端提供更多可见性,这是​​一种推荐/好的做法?public class FreeMain { private List<Integer> fooList; FreeMain ( ) { } /** * Lazy init - either set a value of no-op. * * @param barList */ public void putList(List<Integer> barList) { if (this.fooList == null) { this.fooList = barList; } } /** * Boolean returned as an indication to the user of operation status * * @param barList * @return true if putLists sets the value, false is no-op. */ public boolean putListWithBoolean(List<Integer> barList) { if (this.fooList == null) { this.fooList = barList; return true; } return false; }} 最佳答案 我将以这种方式进行设置,在这种情况下,putList的职责是通过返回布尔值来告诉您尝试放置的列表是否被接受吗?我认为不,这是因为putList应该仅处理替换列表指针的单个模块,而不返回任何内容。如果您实际上想知道条件是否被授予(或对于可能发生的任何异常行为),请使用Exceptions。然后,在使用putList(带有try-catch块)时,只需将那些异常捕获到您的主程序中,然后执行您想要的任何操作即可。例如:public void putList(List<Integer> barList) throws new MyListException{ if (this.fooList == null) { this.fooList = barList; } else { throw new MyListException("The pointer of fooList can not be changed because the fooList is not null"); }}public class MyListException extends Exception { public MyListException(String s) { super(s); }}另一方面,该方法将返回true / false的情况是它应实际处理该模块并通过测试条件确定列表是否将被接受。因此,方法名称将为“ isListAccepted()”(不需要参数,因为它没有任何作用)。但是,在Java中注意到(即See LinkedList click here)有时像public boolean add(E e)之类的方法返回true / false。这是因为这些方法是在集合接口下实现的,并且集合的工作方式存在一些先决条件。另外,在这种情况下,oracle文档也说:  public boolean add(E e)确保此集合包含指定的元素  (可选操作)。如果此集合由于以下原因而更改,则返回true:  呼叫。 (如果此集合不允许重复,则返回false,并且  已经包含指定的元素。)    如果集合出于任何原因拒绝添加特定元素  除了已经包含该元素之外,还必须抛出一个  异常(而不是返回false)。因此,基于此,我相信这些操作可以处理一个模块,告诉您使用它们后集合是否已更改,而不是添加元素(即使它们在某些情况下也是如此)。一个例子:private boolean isListAccepted() { return this.fooList == null;}最后,由于我也不太清楚“无操作的情况下,而不是null”的含义,所以我要说的是:当您使用putList(..)且未授予条件时,它不会返回,但是它什么也不做。但是,在这种情况下,最好还是使用我已经演示过的Exceptions(在第一个示例中),以便您知道出了什么问题,以防您期望putList()实际替换指针。这是因为您将永远不会有机会花费时间搜索代码来了解问题所在。这对您提供的代码示例来说并不是很重要,因为它很简单,但是如果您的putList更复杂,并且可能会出错,该怎么办?总的来说,我不能说putListWithBoolean()是否不好,因为它取决于使用的方式(如Java示例所示),而没有例外的putList()可以认为是不好的习惯,因为您的类永远不会那么简单,很多事情都会出错,所以您最好知道哪里出了问题以及哪里出了错。
07-26 01:49