名字长的类

时间:2015-06-19 02:00:39

标签: java android exception naming-conventions

Java中Exception类的名称必须具有Exception后缀,也可以描述其抛出情况。现在我在Android中的主外部存储中有两个异常类:

/**
 * Thrown when Application tries to access primary external storage and it is not
 * available for write.This only depends on status of storage, for example media
 * not mounted,bad mounted, or ... .
 */
public class PrimaryExternalStorageIsNotReadyToWriteException extends Exception {
...
}

/**
 * Thrown when Application tries to write on a directory
 * of primary external storage that needs
 * {@link Manifest.permission#WRITE_EXTERNAL_STORAGE} permission but that
 * permission has not granted to the Application.
 */
public class WriteToPrimaryExternalStoragePermisionException extends RuntimeException {
...
}

如您所见,名称很长,但我无法从名称中删除ExceptionPrimaryExternalStorage。此外,我不想使用SecurityException或其他现有的例外,因为这些是一般性的。我知道长名不是禁止的,但使用和提醒它们很难。我唯一能想到的是创建一个名为primaryexternalstorageexceptions的包,并将名称更改为IsNotReadyToWriteExceptionWritePermisionException。但这是一个好方法吗?有没有更好的方法来避免那些长名?

2 个答案:

答案 0 :(得分:2)

如果您在程序中经常使用PrimaryExternalStorage,则可以引入(并记录)PES之类的缩写并使用PESIsNotReadyToWriteExceptionWriteToPESPermissionException(或PesIsNotReadyToWriteExceptionWriteToPesPermissionException取决于您在camelCased标识符中使用缩写的政策。)

请注意,您的第一个例外中的Is肯定是多余的。例如,请参阅ArrayIndexOutOfBoundsException之类的JDK异常不是ArrayIndexIsOutOfBoundsException

另一件需要考虑的事情是让你的异常更像PrimaryExternalStorageNotReadyException(不准备任何东西,不仅仅是写入)和PrimaryExternalStoragePermissionException(实际缺失的权限是写入或读取可能是传递为异常参数)。

答案 1 :(得分:-1)

为单个异常类创建单独的包primaryexternalstorageexceptions正在扼杀java中的Packages概念。如果您认为将有超过5或6个异常类属于primaryexternalstorageexceptions的一部分,那么您可以得到它。我个人认为没有单独的包装。

我建议你同样缩短班级名称: PrimaryExternalStorageIsNotReadyToWriteExceptionPrmyExtlStrgIsNotReadyToWriteException

标准是你现在拥有的,这是一个长类名。无论如何,例外是打包的,你不会很难去一个包并搜索这个类。