异常应该放在单独的包中吗?
在我看来,这个问题是关于文件系统中强调的凝聚力类型的问题。
将异常与异常、服务与服务、常量与常量等分组称为逻辑凝聚力,通常被认为是一种较弱的凝聚力类型。
基于它们对于单个和明确定义的任务的贡献,例如usermanagement
或authentication
,将事物分组称为功能凝聚力,被认为是更强和更可取的凝聚力。在这种模型中,与用户管理相关的异常将与其他专用于用户管理的类一起放在用户管理包中。在这种模型中,我们根据它们的功能角色来分组事物,而不是根据它们所属的实体的"种类",比如"Exceptions"。
所以是的,我也赞同Tom Hawtin的答案。这没有好的做法。
要了解更多关于凝聚力的信息,可以参考一些来源,如geeksforgeeks和wikipedia。我相信你还可以找到其他大量的资源,以便进一步研究这个概念。
异常是否应该放在一个单独的包中?
异常应该放在一个单独的包中这种做法是不好的。这是一个巧合的分组。包应该是有一致性的。不要将异常、接口、枚举、抽象类等分组到它们自己的包中。而是应该将相关的概念分组在一起。
那么为什么会出现将异常放在一个单独包的问题呢?
一个可能的原因是人们可能会认为将异常放在一个单独的包中,有助于代码的组织和管理。然而,这样做实际上会导致代码的混乱和不一致。异常是与其他相关概念密切相关的,将它们分开放置会使得代码更难以理解和维护。
那么如何解决这个问题呢?
解决方法是将相关的概念放在一起,而不是将异常与其他概念分开放置。可以根据业务逻辑或功能将相关的类、接口和异常放在同一个包中。这样可以提高代码的可读性和维护性,并使得代码的组织更加一致和清晰。
以下是一个示例,展示了如何将相关的概念放在同一个包中:
package com.example.myapp.accounts; public class Account { // Account class implementation } public interface AccountService { // AccountService interface definition } public class AccountNotFoundException extends Exception { // AccountNotFoundException class implementation }
在上面的示例中,账户相关的类和接口都被放置在了`com.example.myapp.accounts`包中,而异常`AccountNotFoundException`也放在了同一个包中。这样可以使得代码更加一致和易于理解。
总结起来,将异常放在一个单独的包中是一个不好的做法。应该将相关的概念放在一起,而不是将异常与其他概念分开放置。这样可以提高代码的可读性和维护性,并使得代码的组织更加一致和清晰。
应该将异常放置在单独的包中吗?
这个问题的出现原因是,人们认为异常应该与引发异常的对象放在一起,这样更符合直觉。例如,如果一个包中包含了定价模型和相关的异常,那么在该包中放置与定价相关的异常是合理的。
解决方法是将异常放置在与其相关的包中。这样可以提高代码的可读性和维护性,因为开发人员可以更容易地找到和理解与特定包相关的异常。
以下是将异常放置在单独包中的示例代码:
package com.oopsconsultancy.models.pricing; public class PricingException extends Exception { // exception code here }
通过将异常放置在单独的包中,开发人员可以更好地组织和管理代码,使其更具可读性和可维护性。