zoukankan      html  css  js  c++  java
  • 条款22 :将成员变量声明为private

    首先看看为什么成员变量不该是public的,然后让你看看所有反对public成员变量的论点同样适用于protected成员变量。最后导出一个结论,所有的成员变量都应该是private的。

    一.语法一致性。如果成员变量不是public的,那么所有的访问成员变量,都变成了函数,所以就不存在是不是有括号的问题了。

    二.使用成员函数会让你对成员变量有更加精确的控制。因此你可以设计出“不准访问(不写对应此成员的函数)”,“只读访问(const)”,“读写访问”。

    三.封装。如果你通过函数访问成员变量,日后,当你想用某个计算替换这个成员变量,而class客户一点也不知道class的内部实现已经起了变化。

    成员变量的封装性与“成员变量的内容改变时所破坏的代码数量”成反比。所谓改变,也许是从class中移除它。

    假设我们有一个public成员变量,而我们最终要出取消它。多少代码会被破坏掉呢?

    所有使用它的代码都会被破坏,所以public成员变量完全没有封装性。假设是一个protected变量呢?所有使用它的子类都会被破坏。

    请记住:

    • 切记将成员变量声明为private。这可赋予客户访问数据的一致性、可细微划分访问控制、允许约束条件获得保证,并提供class作者以充分的实现弹性。
    • Protected并不比public更具有封装性。
  • 相关阅读:
    VRChat简易教程1-开发环境准备(SDK)
    BeatSaber节奏光剑插件开发官方教程2-简单的插件示例
    BeatSaber节奏光剑插件开发官方教程1-创建一个插件模板
    BeatSaber节奏光剑双手柄MR教程
    第四章 HTML与JavaScript
    第二章数据和判定
    蓝港在线笔试经验
    数据结构总复习(查找)
    数据结构总复习(3)
    数据结构总复习(2)
  • 原文地址:https://www.cnblogs.com/loveyakamoz/p/2772413.html
Copyright © 2011-2022 走看看