`
leonzhx
  • 浏览: 796815 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Item 14: In public classes, use accessor methods, not public fields

阅读更多

1.  If a class is accessible outside its package, provide accessor methods to preserve the flexibility to change the class’s internal representation.

 

2.  If a class is package-private or is a private nested class, there is nothing inherently wrong with exposing its data fields. If a change in representation becomes desirable, you can make the change without touching any code outside the package or the outer class.

 

3.  The decision to expose the internals of the Dimension class resulted in a serious performance problem that is still with us today.

 

4.  In summary, public classes should never expose mutable fields. It is less harmful, though still questionable, for public classes to expose immutable fields.

分享到:
评论

相关推荐

    Effective Java 3rd edition(Effective Java第三版英文原版)附第二版

    Item 16: In public classes, use accessor methods, not public fields Item 17: Minimize mutability Item 18: Favor composition over inheritance Item 19: Design and document for inheritance or else ...

    attr_setting:增强的 attr_accessor

    attr_accessor :send_email def initialize @send_email = true end def send_email? send_email end end 该类定义了一个Configuration对象,其中包含应用程序是否应该发送电子邮件的设置。 send_email设置...

    Python库 | ftrack_s3_accessor-0.1.5-py2.py3-none-any.whl

    资源分类:Python库 所属语言:Python 使用前提:需要解压 资源全名:ftrack_s3_accessor-0.1.5-py2.py3-none-any.whl 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059

    Google C++ Style Guide(Google C++编程规范)高清PDF

    Classes Doing Work in Constructors Default Constructors Explicit Constructors Copy Constructors Structs vs. Classes Inheritance Multiple Inheritance Interfaces Operator Overloading Access Control ...

    Laravel开发-accessor

    在Laravel框架中,访问器(Accessor)是用于修改模型属性值的一种机制,它允许我们在获取数据时对其进行处理,而不改变原始数据存储。这在处理数据展示或格式化时非常有用。当我们需要根据多个条件来调整这个处理...

    jsonb_accessor:将类型化的jsonb支持的字段添加到ActiveRecord模型中

    JSONb访问器 由...制作 将类型化的jsonb支持字段作为头等公民添加到您的ActiveRecord模型中。 这个宝石在本质上与相似,但是PostgreSQL中的jsonb列具有一些明显的优势,主要围绕嵌套文档和... jsonb_accessor :data ,

    expose-via-accessor:通过公共对象上的访问器公开私有对象

    $ npm install expose-via-accessor 用法 | import { expose , via } from 'expose-via-accessor' ; var publicObject = { x : 'Public X' } , privateObject = { y : 'Private Y' } ; expose ( privateObject...

    radioactive:用于变异 bean 的 Java 8 库

    放射性 用于构建、验证、变异和映射 bean 的 Java 8 库。... public static final Accessor< Person> NAME = Accessor . of( Person :: getName, Person :: setName); public static final Accessor< Person> ADDRES

    :abacus: 基于ui-core的react-table UI组件

    ) 导入/导出 借助 exceljs 列以 .xlsx 或 .csv 格式导入和导出数据示例导出 const IMEX_COLUMNS = [ { Header: 'Email', accessor: 'email', meta: { imex: { type: 'string' as const, }, }, }, { Header: 'Age', ...

    learn_public_private.zip_learn c

    我们通过公有成员函数`setVar()`和`getVar()`来间接操作私有变量,这就是所谓的“访问器”(Accessor)和“ mutator”(Mutator)或“getter”和“setter”。 总结来说,C++中的类公有与私有成员是实现封装的关键。...

    hstore_accessor:将类型化的hstore支持的字段支持添加到ActiveRecord模型

    Hstore Accessor允许您将hstore列上的字段视为由ActiveRecord获取的实际列。 这在尝试使用时避免稀疏列时特别方便。 Hstore Accessor当前支持ActiveRecord版本4.0、4.1、4.2、5.0和5.1。 目录 安装 将此行添加到您的...

    oop-basics-accessor-methods

    在这个名为 "oop-basics-accessor-methods" 的主题中,我们将深入探讨 Ruby 中的访问器方法,这是 OOP 设计中的关键部分。 访问器方法,也称为 getter 和 setter 方法,是用于读取或修改对象属性值的函数。在 Ruby ...

    file-input-accessor:Angular指令以Angular形式提供文件输入功能

    寻找?(此软件包的版本<2.0.1)如果您看到有关未知令牌{带有某些导入的错误。... " babel node_modules/file-input-accessor -d node_modules/file-input-accessor --presets es2015 " 将posti

    weak_attr_accessor:RubyMotion 的weak_attr_accessor

    #weak_attr_accessor 用于 用法 做这个: class MainView < UIView weak_attr_accessor :view_controller end 而不是这个: class MainView < UIView def view_controller @view_controller end def...

    【ASP.NET编程知识】asp.net core利用AccessControlHelper实现控制访问权限.docx

    public AdminPermissionRequireStrategy(IHttpContextAccessor accessor) { _accessor = accessor; } public bool IsCanAccess(string accessKey) { var user = _accessor.HttpContext.User; return user....

    NETCFSERUP

    <summary>The API Base class provides a common foundation for all classes that in the SMDK for .NET class libraries that will work with the StandardForms functionality.</summary> <remarks>The API ...

    MemoryMgmt开发资料

    3. **不在初始化方法和dealloc中使用访问器方法** (Don’t Use Accessor Methods in Initializer Methods and dealloc): - 初始化方法和dealloc方法中应直接操作实例变量,而不是通过访问器方法。 4. **使用弱引用...

    OC 中的内存管理

    - **不在初始化方法和dealloc中使用访问器方法**(Don’t Use Accessor Methods in Initializer Methods and dealloc):避免在这些特殊方法中使用访问器方法,以防止意外的行为。 - **使用弱引用来避免循环引用**...

    valid_email:使用邮件gem的电子邮件的活动模型验证

    attr_accessor :name , :email validates :name , presence : true , length : { maximum : 100 } validates :email , presence : true , email : true end person = Person . new person . name = 'hallelujah' ...

Global site tag (gtag.js) - Google Analytics