我最近读到getter/setter是邪恶的,我不得不说这是有道理的,但是当我开始学习OOP时,我学到的第一件事就是"封装你的字段",所以我学会了创建类给它一些字段,创建getter ,为他们设置setter并创建我初始化这些字段的构造函数.每当其他一些类需要操作这个对象(或者例如显示它)时,我将它传递给对象并使用getter/setter来操作它.我可以看到这种方法的问题.
但是怎么做呢?例如显示/呈现对象是"数据"类 - 让我们说人,有姓名和出生日期.该类是否有显示对象的方法,其中一些Renderer将作为参数传递?这不违反类应该只有一个目的(在这种情况下是存储状态)的原则,所以它不应该关心这个对象的表示.
您能否提出一些优秀的资源,其中介绍了OOP设计的最佳实践?我打算在业余时间开始一个项目,我希望它成为我正确的OOP设计的学习项目.
duf*_*ymo 11
2003年,Allen Holub在"为什么getter和setter方法是邪恶的"中引起轰动.
你发现并阅读这篇文章真是太棒了.我很钦佩任何正在学习和批判性地思考他们正在做什么的人.
但是把霍尔布先生带上一粒盐.
这种观点因其极端的地位和"邪恶"这个词的使用而引起了很多关注,但它没有让世界着火,或者被普遍认为是教条.
看看C#:他们实际上为语言添加了语法糖,使得get/set操作更容易编写.要么这证实了某人认为微软是一个邪恶的帝国,要么与霍罗布先生的声明相矛盾.
事实是人们写对象以便客户可以操纵状态.这并不意味着用这种方式写的每个对象都是错误的,邪恶的或不可行的.
极端的观点是不实际的.