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

时间:2019-06-12 04:16:50

标签: python oop

因此,对于我在阅读有关面向对象程序设计的内容时感到有些困惑。我意识到,当我专注于每个对象仅做一件事情的规则时,我创建了一个没有变化状态的类。

基本上,我正在编写一个对文本文件进行大量读写的程序。我认为我拥有的所有对象都不应该处理这些操作,并且我应该有一个fileIO类来为它们执行这些操作。但是,我有点担心这可能与拥有实用程序类一样。

是否有一个其字段从不更改(甚至不需要初始化)的类与实用程序类相同?从OOP角度来看这是一种不好的做法吗?有一个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方法中初始化字段。但是对于我的程序而言,实际上并不需要,因为我只能读写两个文件。

1 个答案:

答案 0 :(得分:1)

从文件中读取和写入数据可以包装在处理数据状态的某些类中,以确保事务完成。我的意思是,无论操作结果如何,都需要适当地对资源进行适当的分配,最好是在同一事务中进行。如果您将资源的分配和取消分配视为状态,则您的类不是完全无状态的。在函数式编程中,函数处理资源将被认为是不纯的,因为它不是无状态的。状态仅仅是外部的。

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

确保您也围绕类编写了许多测试,因为这对于长期的可维护性至关重要。

请让我知道我是否可以澄清。