首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么要用Getter和Setter方法,而不是公开属性

大多数字段的访问都是通过Getter和Setter方法来间接访问,为什么不直接将字段设置为公开属性Public呢?答案在于前者的未来可能性。...当我在Java语言编程中开始我的职业生涯时,我就对Getter和Setter感到困惑。为什么要这么写呢?为什么不直接用Public呢?这对我来说是个奇怪的语法。 ?...那么,下面属性name和value的区别是什么呢? ? 慢慢地,我意识到了为什么我们使用Getter和Setter,以及为什么它们是重要的。...设置值的惟一方法是通过Setter,通过Getter获得值,所以现在字段只有一个入口和一个出口点,因为Getter和Setter是允许代码块的方法,所以可以对它们进行验证检查!...但是,当一个字段没有这样的验证约束时,为什么要麻烦写一个Getter和Setter?我可以简单地公开它。 根据我的理解,问题的症结在于避免使代码变得不必要的复杂。

2.2K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    为什么 build 方法放在 State 中而不是在 StatefulWidget 中

    为什么 build 方法放在 State 中而不是在 StatefulWidget 中呢?其中前2点是源代码的注释中给出的原因,最后一点是我的一点个人理解。...灵活性 将 build 方法放在 State 中比放在 StatefulWidget 中更具灵活性,比如说,AnimatedWidget 是 StatefulWidget 的子类,AnimatedWidget...是一个抽象类,其中有一个 Widget build(BuildContext context) 的抽象方法,此方法需要子类重写,AnimatedWidget 源代码如下: abstract class...试想一下,如果 build 方法放在 StatefulWidget 中,则 AnimatedWidget 中的 build 方法需要带一个 State 参数,如下: abstract class AnimatedWidget...闭包 this 指向异常 假设 build 方法在 StatefulWidget 中,StatefulWidget 的子类写法如下: class MyWidget extends StatefulWidget

    91320

    为什么Adam 不是默认的优化算法?

    由于训练时间短,越来越多人使用自适应梯度方法来训练他们的模型,例如Adam它已经成为许多深度学习框架的默认的优化算法。...尽管训练结果优越,但Adam和其他自适应优化方法与随机梯度下降(SGD)相比,有时的效果并不好。这些方法在训练数据上表现良好,但在测试数据却差很多。...为了充分理解这一说法,我们先看一看ADAM和SGD的优化算法的利弊。 传统的梯度下降是用于优化深度学习网络的最常见方法。...上图来自cs231n,根据上面的描述Adam能迅速收敛到一个“尖锐的最小值”,而SGD计算时间长步数多,能够收敛到一个“平坦的最小值”,并且测试数据上表现良好。 为什么ADAM不是默认优化算法呢?...但是,本文这并不是否定自适应梯度方法在神经网络框架中的学习参数的贡献。而是希望能够在使用Adam的同时实验SGD和其他非自适应梯度方法,因为盲目地将Adam设置为默认优化算法可能不是最好的方法。

    39010

    什么是行为驱动的 Python?

    或许你是一个 Python 人(Pythonista),正在寻找更好的方法来测试你的代码。...Scenario 和 Feature 可以有标签(注意 @cucumber-basket 标记)用于钩子和过滤(如下所述)。 步骤都遵循严格的 Given-When-Then 顺序。...只要列标题出现在由尖括号括起的步骤中,行值就会被替换。 在上面的示例中,场景将运行三次,因为有三行输入组合。 场景大纲是避免重复场景的好方法。 Gherkin 语言还有其他元素,但这些是主要的机制。...behave 框架还支持钩子来处理 Gherkin 步骤之外的自动化问题。钩子是一个将在步骤、场景、功能或整个测试套件之前或之后运行的功能。钩子让人联想到面向方面的编程。...其他选择 behave 不是 Python 中唯一的 BDD 测试框架。

    1.7K30

    为什么说你的数据不是大数据?

    这种想法是不对的,我们从很早以前就已经有海量的数据了,那时候甚至还没有大数据的概念。那么大数据究竟是从哪里来的呢?为什么我们需要大数据呢?...你只有在想要分析用户的行为时,才会大量收集这样的数据。 而现在的情况是,存储这些数据的成本是比较低的,而且你收集越多的数据,通过比对不同的趋势,你就可能获得更多的价值。...也就是说,大数据并不是你频繁访问的数据,除了作为分析之用,甚至你从来不会去用到它。事实上,除了分析之外,我们可以把大数据“冷冻”起来。...不要轻视其他数据的价值 现在,你需要从大数据的狂热中退一步思考,你现在最重要的数据也许并不是那些大数据,而是我们所说的热数据。...记住,大数据的最佳实践并不适合这些数据。你的数据也许这是一些重要的有价值的数据,它们并不是大数据。

    73350

    为什么说你的数据不是大数据?

    这种想法是不对的,我们从很早以前就已经有海量的数据了,那时候甚至还没有大数据的概念。那么大数据究竟是从哪里来的呢?为什么我们需要大数据呢?...你只有在想要分析用户的行为时,才会大量收集这样的数据。 而现在的情况是,存储这些数据的成本是比较低的,而且你收集越多的数据,通过比对不同的趋势,你就可能获得更多的价值。...也就是说,大数据并不是你频繁访问的数据,除了作为分析之用,甚至你从来不会去用到它。事实上,除了分析之外,我们可以把大数据“冷冻”起来。...最终的结果也就可想而知。 不要轻视其他数据的价值 现在,你需要从大数据的狂热中退一步思考,你现在最重要的数据也许并不是那些大数据,而是我们所说的热数据。...记住,大数据的最佳实践并不适合这些数据。你的数据也许这是一些重要的有价值的数据,它们并不是大数据。

    85190

    键盘的排列为什么不是“ABCD”而是“QWER”?

    本期就来分享下我们常用的键盘, 它的字母排列方式为什么不是按顺序排列, 而是看似杂乱无章的排列 这个就要从键盘的起源说起了, 有看过老电影的朋友们或许看到过, 在早期没有电脑出现的时候, 文件是通过打字机打出来的...那为什么这个键盘的顺序, 后来变成了“QWER”呢? 这个其实是为了降低打字速度你能信?...所以为了避免卡键, 肖尔斯在1868年, 就发明了“QWER”的键盘布局, 这种布局其实并不是最科学的, 仅仅只是为了减低打字速度, 强制你慢下来, 这样就不会卡键了。...算是一种曲线救国的方法, 可能他们当时没办法改变打字机结构, 让其不再卡键, 所以就改变输入方式吧。...1888年7月25日在美国辛辛那提, 举行了一场打字比赛, 比赛中,一个法庭速记员麦古瑞(Frank McGurrin), 使用“QWER”布局打字机和盲打方法, 以绝对的优势获得冠军和500美元的奖金

    1.6K10

    为什么 useState 返回的是 array 而不是 object?

    [count, setCount] = useState(0) 这里可以看到 useState 返回的是一个数组,那么为什么是返回数组而不是返回对象呢?...为什么是返回数组而不是返回对象 要弄懂这个问题要先明白 ES6 的解构赋值,来看 2 个简单的例子: 数组的解构赋值 const foo = [1, 2, 3]; const [one, two, three...,这个问题就很好解释了 如果 useState 返回的是数组,那么使用者可以对数组中的元素命名,代码看起来也比较干净 如果 useState 返回的是对象,在解构对象的时候必须要和 useState 内部实现返回的对象同名...总结 useState 返回的是 array 而不是 object 的原因就是为了降低使用的复杂度,返回数组的话可以直接根据顺序解构,而返回对象的话要想使用多次就得定义别名了 首发自:为什么 useState...返回的是 array 而不是 object?

    2.3K20

    为什么开发者不是ChatGPT的主流群体?

    ChatGPT 最开始上线不久的时候,看到的大部分尝鲜和测试结果都是开发者在做进行敲代码测试,可以说职业危机感非常强的一群人了。所以我们会潜意识的认为,开发者是ChatGPT的主流群体。...Measurable.AI,2023年1至2月统计数据 ChatGPT 不受开发者待见的原因 至于为什么 ChatGPT 不被开发者所欢迎,其实 ChatGPT 它自己是有一些回答的。...而恰好开发者基本上是第一批用户,已经玩的差不多了,说真的我个人来说,认为它现在的成熟度还有挺大的进步空间,现在多玩几次就已经过了瘾,再玩的动力不大。...3、应用场景限制开发者发挥价值 如果仅仅是单纯的尝鲜其实是很难有持续使用的效应,基本上问完两个问题满足了好奇的心理就不会频繁使用,除非找到一个特定的场景让 ChatGPT 能够真正的发挥价值。...而一般来讲,技术型产品开发出来最大的难点就在于找到各式各样的应用场景,让其持续的优化和迭代,继而不断的扩充场景实现商业化目的。

    65820

    EA的研发团队成员为什么不是EA的涉众

    DDD领域驱动设计批评文集>> 《软件方法》强化自测题集>> 《软件方法》各章合集>> 外婆 2022-7-10 18:37 在软件方法的第六章第199页开头提到的一段中,有个例子是说 EA作为所研究系统...,那么其研发团队不是渉众。...如果这里说的研发人员是另外一个研发团队的研发人员,那他研发的就不会是EA,把“EA”改成“一款建模工具”才不是捏造。...如果该研发团队想研发一款建模工具去和EA竞争,那么,和Sparx Systems的EA研发团队不是EA的目标组织一样,该研发团队极有可能也不是这款建模工具的目标组织。...《软件方法》书中自测题-题目全文+分卷自测(1-8章)16套111题 《软件方法》强化自测题集110题 CTO也糊涂的常用术语:功能模块、业务架构、用户需求……[20210217更新] 如何选择UMLChina

    53520
    领券