从面向对象的角度来看,拥有具有固定状态的对象有多糟糕?

2024-04-26 00:54:48 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我对我读到的关于面向对象编程的内容有点困惑。我意识到,当我专注于每个对象只做一件事的规则时,我创建了一个没有变化状态的类。你知道吗

基本上我写的程序,做了大量的读写文本文件。我认为我所有的对象都不应该处理这些操作,我应该有一个fileIO类来为它们执行这些操作。但是,我有点担心这可能与使用实用程序类是一样的。你知道吗

拥有一个字段永远不会更改(甚至不需要初始化)的类是否与实用程序类相同?从面向对象的角度来看,这是一种不好的做法吗?有fileIO对象有意义吗?如果没有,是否应该允许对象读取和写入文件?你知道吗

class fileIO:
    __processFilePath = None
    __trackFilePath = None

    def __init__(self, iProcessFilePath, iTrackFilePath):

    def getProcesses(self):

    #checks if appString is in file
    def isAppRunning(self,appString):

    #reads all
    def getAllTrackedLines(self):

    #appends
    def addNewOnTracked(self,toBeAdded):

    #overwrites
    def overWriteTrackedLines(self,fullData):

在这个特殊的实例中,我实际上是在初始化init方法中的字段。但就我的程序而言,我实际上不需要这样做,因为只有两个文件是我读写的。你知道吗


Tags: 文件对象self程序实用程序none内容init
1条回答
网友
1楼 · 发布于 2024-04-26 00:54:48

从文件中读写数据可以包装在处理数据状态的类中,以确保事务完成。我的意思是,无论操作的结果如何,都需要适当地取消分配资源,最好是在同一事务中。如果您将资源的分配和取消分配视为状态,那么您的类就不是完全无状态的。在函数式编程中,处理资源的函数将被认为是不纯的,因为它不是无状态的。国家只是外在的。你知道吗

拥有一个没有状态的类并不构成一个坏类。的确,实用程序类是一种反模式,但是如果您的类做了一件小事,并且做得很好,那么它就不是问题。当一大堆相关的方法聚集在类中,代码开始腐烂时,问题就出现了,这就是你想要避免的。一个有明确目标的类,并且只做那件事,将抵抗腐朽

确保你也围绕你的类编写了大量的测试,因为这是长期可维护性的关键。你知道吗

如果有什么我可以澄清的,请告诉我。你知道吗

相关问题 更多 >