草庐IT

Getter-Setter

全部标签

java - 为什么继续对不可变对象(immutable对象)使用 getter?

使用不可变对象(immutable对象)已变得越来越普遍,即使手头的程序从未打算并行运行。然而我们仍然使用getter,每个字段需要3行样板代码,每次访问需要5个额外字符(使用您最喜欢的主流OO语言)。虽然这看起来微不足道,而且许多编辑器无论如何都减轻了程序员的大部分负担,但这似乎仍然是不必要的努力。继续使用访问器而不是直接访问不可变对象(immutable对象)的原因是什么?具体来说,强制用户使用访问器(对于客户端或库编写器)有什么好处,如果是,它们是什么?请注意,我指的是不可变对象,与question不同,它指的是一般的对象。需要明确的是,不可变对象(immutable对象)没有s

java - 为什么继续对不可变对象(immutable对象)使用 getter?

使用不可变对象(immutable对象)已变得越来越普遍,即使手头的程序从未打算并行运行。然而我们仍然使用getter,每个字段需要3行样板代码,每次访问需要5个额外字符(使用您最喜欢的主流OO语言)。虽然这看起来微不足道,而且许多编辑器无论如何都减轻了程序员的大部分负担,但这似乎仍然是不必要的努力。继续使用访问器而不是直接访问不可变对象(immutable对象)的原因是什么?具体来说,强制用户使用访问器(对于客户端或库编写器)有什么好处,如果是,它们是什么?请注意,我指的是不可变对象,与question不同,它指的是一般的对象。需要明确的是,不可变对象(immutable对象)没有s

c++ - 直接访问成员或始终使用 getter

当一个类使用getter访问它自己的成员数据时,我个人觉得这很奇怪/丑陋。我知道对性能没有影响,但我只是不喜欢看到所有这些方法调用。是否有任何强烈的论据,或者它只是个人偏好的事情之一,应该留给每个编码人员,或者在编码标准中任意控制?更新:我的意思是简单的getter,专门针对类的非公共(public)成员。 最佳答案 您可能想要使用getter/setter的原因是它隐藏了实现。如果您使用getter/setter以防实现发生更改,则无需重写所有代码,因为这些成员可以继续工作。根据许多聪明的评论进行编辑:至于使用setter和get

c++ - 直接访问成员或始终使用 getter

当一个类使用getter访问它自己的成员数据时,我个人觉得这很奇怪/丑陋。我知道对性能没有影响,但我只是不喜欢看到所有这些方法调用。是否有任何强烈的论据,或者它只是个人偏好的事情之一,应该留给每个编码人员,或者在编码标准中任意控制?更新:我的意思是简单的getter,专门针对类的非公共(public)成员。 最佳答案 您可能想要使用getter/setter的原因是它隐藏了实现。如果您使用getter/setter以防实现发生更改,则无需重写所有代码,因为这些成员可以继续工作。根据许多聪明的评论进行编辑:至于使用setter和get

setter/getter 中的 C++ const

我仍在学习C++,而且我到处都在阅读我必须使用const的所有地方(我认为是出于速度原因)。我通常这样写我的getter方法:constboolisReady(){returnready;}但我已经看到一些IDE以这种方式自动生成getter:boolgetReady()const{returnready;}但是,在编写委托(delegate)时,如果const在函数之后,我碰巧发现了这个错误:memberfunction'isReady'notviable:'this'argumenthastype'constVideoReader',butfunctionisnotmarkedco

setter/getter 中的 C++ const

我仍在学习C++,而且我到处都在阅读我必须使用const的所有地方(我认为是出于速度原因)。我通常这样写我的getter方法:constboolisReady(){returnready;}但我已经看到一些IDE以这种方式自动生成getter:boolgetReady()const{returnready;}但是,在编写委托(delegate)时,如果const在函数之后,我碰巧发现了这个错误:memberfunction'isReady'notviable:'this'argumenthastype'constVideoReader',butfunctionisnotmarkedco

c++ - 如果 C++ 中不存在 getter 和 setter,有没有办法自动生成它们?

我有使用Objective-C的经验,在Objective-C中,您可以让编译器为您生成getter和setter(如果它们尚不存在)(@synthesize)。有没有办法在C++中做到这一点,还是我需要自己实现所有的getter和setter? 最佳答案 TheC++CoreGuidelinesadviseagainstusingtrivialgettersandsetters因为它们是不必要的,asymptomofbadobject-orienteddesign.因此,C++没有用于自动生成getter和setter的内置功能(

c++ - 如果 C++ 中不存在 getter 和 setter,有没有办法自动生成它们?

我有使用Objective-C的经验,在Objective-C中,您可以让编译器为您生成getter和setter(如果它们尚不存在)(@synthesize)。有没有办法在C++中做到这一点,还是我需要自己实现所有的getter和setter? 最佳答案 TheC++CoreGuidelinesadviseagainstusingtrivialgettersandsetters因为它们是不必要的,asymptomofbadobject-orienteddesign.因此,C++没有用于自动生成getter和setter的内置功能(

c++ - 我应该总是继续使用 `sink` 构造函数或 setter 参数吗?

structTestConstRef{std::stringstr;Test(conststd::string&mStr):str{mStr}{}};structTestMove{std::stringstr;Test(std::stringmStr):str{std::move(mStr)}{}};看了GoingNative2013之后,我明白sink参数应该始终按值传递并使用std::movemove。TestMove::ctor是应用这个成语的正确方法吗?TestConstRef::ctor是否有更好/更高效的情况?那么琐碎的二传手呢?我应该使用以下成语还是传递conststd:

c++ - 我应该总是继续使用 `sink` 构造函数或 setter 参数吗?

structTestConstRef{std::stringstr;Test(conststd::string&mStr):str{mStr}{}};structTestMove{std::stringstr;Test(std::stringmStr):str{std::move(mStr)}{}};看了GoingNative2013之后,我明白sink参数应该始终按值传递并使用std::movemove。TestMove::ctor是应用这个成语的正确方法吗?TestConstRef::ctor是否有更好/更高效的情况?那么琐碎的二传手呢?我应该使用以下成语还是传递conststd: