Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java类组织_Java_Access Modifiers - Fatal编程技术网

Java类组织

Java类组织,java,access-modifiers,Java,Access Modifiers,阅读本文,作者建议考虑一下包org,只留下真正需要向世界其他地方公开的类 我想我明白了一点,那就是比特公开不需要的东西允许以后在不破坏客户端代码的情况下更改东西-但是,我想不出一个例子- 如果一个包有两个实体或类,每个实体或类提供一组功能,那么面向公众的类是否必须协调与外部世界的所有通信 任何示例或指导都将不胜感激 基本上,除非您需要,否则不要对客户机代码做出承诺。当您公开一个方法时,在某些上下文中,至少您承诺在不与客户机代码协调的情况下不更改它 假设您公开了一个方法,并且有人使用它。后来你意识

阅读本文,作者建议考虑一下包org,只留下真正需要向世界其他地方公开的类

我想我明白了一点,那就是比特公开不需要的东西允许以后在不破坏客户端代码的情况下更改东西-但是,我想不出一个例子-

如果一个包有两个实体或类,每个实体或类提供一组功能,那么面向公众的类是否必须协调与外部世界的所有通信


任何示例或指导都将不胜感激

基本上,除非您需要,否则不要对客户机代码做出承诺。当您公开一个方法时,在某些上下文中,至少您承诺在不与客户机代码协调的情况下不更改它

假设您公开了一个方法,并且有人使用它。后来你意识到你需要改变方法。现在您有两个选择:

  • 与该客户协调进行更改
  • 破坏客户
  • 显然,如果可能的话,你想要避免2

    对于小型系统,1可能不是什么大问题。但是,由于您的代码有更多的客户机代码,因此#1可能会变得非常有问题。有人可能因为任何原因(日程安排、业务原因、技术原因等等)都不准备接受您的更改

    避免这种困境的一个好方法是避免做出承诺,除非有理由这样做。这在日常生活中确实是一件明智的事情,即使是在编程之外。但它也适用于编程:关于可见性,这意味着更喜欢有限的可见性而不是公共可见性

    一个示例。假设我正在编写一个电子商务订单管理库,并编写一个方法

    public double computeTax(double price) { ... }
    
    即使所有图书馆的税收计算都发生在图书馆内部。我只是把这个方法公之于众,因为我认为不与全世界分享我的税务计算器将是一种耻辱

    很多人都认为这种方法很好,并使用它构建应用程序

    然后有人指出,用双精度表示美元金额是完全错误的(浮点表示法只是近似值,对金钱没有好处)。我决定彻底摆脱旧方法(不希望任何人使用根本错误的东西),并用

    public Currency computeTax(Currency price) { ... }
    
    但是现在我要打破一堆使用原始方法的客户端代码


    如果我把我那蹩脚的税务计算器留给自己,那就更好了,因为它毕竟不是图书馆真正提供的东西的一部分。现在我陷入了进退两难的境地。

    基本上就是不承诺客户机代码,除非你需要。当您公开一个方法时,在某些上下文中,至少您承诺在不与客户机代码协调的情况下不更改它

    假设您公开了一个方法,并且有人使用它。后来你意识到你需要改变方法。现在您有两个选择:

  • 与该客户协调进行更改
  • 破坏客户
  • 显然,如果可能的话,你想要避免2

    对于小型系统,1可能不是什么大问题。但是,由于您的代码有更多的客户机代码,因此#1可能会变得非常有问题。有人可能因为任何原因(日程安排、业务原因、技术原因等等)都不准备接受您的更改

    避免这种困境的一个好方法是避免做出承诺,除非有理由这样做。这在日常生活中确实是一件明智的事情,即使是在编程之外。但它也适用于编程:关于可见性,这意味着更喜欢有限的可见性而不是公共可见性

    一个示例。假设我正在编写一个电子商务订单管理库,并编写一个方法

    public double computeTax(double price) { ... }
    
    即使所有图书馆的税收计算都发生在图书馆内部。我只是把这个方法公之于众,因为我认为不与全世界分享我的税务计算器将是一种耻辱

    很多人都认为这种方法很好,并使用它构建应用程序

    然后有人指出,用双精度表示美元金额是完全错误的(浮点表示法只是近似值,对金钱没有好处)。我决定彻底摆脱旧方法(不希望任何人使用根本错误的东西),并用

    public Currency computeTax(Currency price) { ... }
    
    但是现在我要打破一堆使用原始方法的客户端代码


    如果我把我那蹩脚的税务计算器留给自己,那就更好了,因为它毕竟不是图书馆真正提供的东西的一部分。现在我陷入了进退两难的境地。

    基本上就是不承诺客户机代码,除非你需要。当您公开一个方法时,在某些上下文中,至少您承诺在不与客户机代码协调的情况下不更改它

    假设您公开了一个方法,并且有人使用它。后来你意识到你需要改变方法。现在您有两个选择:

  • 与该客户协调进行更改
  • 破坏客户
  • 显然,如果可能的话,你想要避免2

    对于小型系统,1可能不是什么大问题。但是,由于您的代码有更多的客户机代码,因此#1可能会变得非常有问题。有人可能因为任何原因(日程安排、业务原因、技术原因等等)都不准备接受您的更改

    避免这种困境的一个好方法是避免做出承诺,除非有理由这样做。这在日常生活中确实是一件明智的事情,即使是在编程之外。但它也适用于编程:关于可见性,这意味着更喜欢有限的可见性而不是公共可见性

    一个示例。假设我正在编写一个电子商务订单管理库,并编写一个方法

    public double computeTax(double price) { ... }
    
    即使所有的