2 Stimmen

Was ist zu tun, um Gott Objekt zu verhindern?

Ich weiß, dass es eine schlechte Programmierung und Architektur ist, wenn man ein Klassenobjekt hat, das nur an einer Stelle verwendet werden soll. Aber ich bin auch davor gewarnt worden, ein Objekt zu schaffen, das zu mächtig ist und zu viel kann. Wie kann ich das also aufschlüsseln? Hier ist ein Beispiel für das, was ich meine - bitte nehmen Sie diese Dinge nicht wörtlich, denn es ist nur ein Beispiel.

Jedenfalls habe ich ein Objekt, mit dem ich arbeite, das ziemlich komplex ist. In diesem Objekt sind viele Informationen gespeichert, und es kann viele Manipulationen an den Daten vornehmen. Nennen wir dieses Objekt also Erde.

Public Class Planet
Private _population As UInteger = 0
Public ReadOnly Property Population() As UInteger
    Get
        Return _population
    End Get
End Property

Public Overridable Sub CreatePerson(Optional ByVal numberOfPeople As Integer = 1)
    _population += numberOfPeople
End Sub
End Class

So weit, so einfach. Aber ich könnte noch viele weitere Dinge aufzählen, die dieses Objekt möglicherweise leisten könnte. Um die Dinge nicht zu komplex werden zu lassen, habe ich die "Aktivitäten", die während des Tages und der Nacht stattfinden, in zwei weitere Objekte aufgeteilt: Tag und Nacht (diese beiden sind nicht abgebildet). Jetzt habe ich also eine aktualisierte Planetenklasse.

Public Class Planet

Private _population As UInteger = 0

Private _day As New Day
Private _night As New Night

Public ReadOnly Property Day() As Day
    Get
        Return _day
    End Get
End Property

Public ReadOnly Property Night() As Night
    Get
        Return _night
    End Get
End Property

Public ReadOnly Property Population() As UInteger
    Get
        Return _population
    End Get
End Property

Public Overridable Sub CreatePerson(Optional ByVal numberOfPeople As Integer = 1)
    _population += numberOfPeople
End Sub

End Class

Diese beiden Klassen - Tag und Nacht - werden nun niemals außerhalb der Planetenklasse verwendet werden. Ist dies ein guter Weg, um meine Methoden und Attribute für diese "übergeordnete" Klasse Planet zu organisieren? Wie könnte ich sonst eine solche Ordnung schaffen?

Ich habe über Refactoring gelesen, aber ich glaube nicht, dass das in meinem Fall hilft. Mir gefällt die Idee, dass ich ein Planet-Objekt wie dieses aufrufen kann: Earth.Night.BlowUpMoon .

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X