Eng gekoppelten Code verstehen

Abgeschlossen

Eng gekoppelter Code tritt auf, wenn Komponenten übermäßig von den Implementierungsdetails der anderen abhängig sind. Die Abhängigkeit kann ihren Code schwieriger verwalten, weniger flexibel und anfälliger für Fehler machen. Eine gängige Lösung besteht darin , Schnittstellen zu verwenden, um Komponenten zu entkoppeln und die Modularität zu verbessern.

In Ihrer Rolle als Softwareentwickler begegnen Sie den Herausforderungen von eng gekoppeltem Code, bei dem es eine direkte Abhängigkeit gibt. Sie wenden das Open/Closed-Prinzip an, um die Entkoppelung Ihres Codes zum Erstellen eines besser verwendbaren Systems zu behandeln.

Eng gekoppelter Code

Eng gekoppelter Code bezieht sich auf eine Situation, in der eine Komponente stark auf die internen Details eines anderen angewiesen ist. Dadurch entsteht ein starres System, das nur schwer zu ändern oder zu erweitern ist, ohne vorhandene Funktionen zu unterbrechen.

Beispiel für direkte Abhängigkeit

Betrachten Sie eine Library Klasse, die direkt mit einer BorrowableBook Klasse interagiert. Die Library Klasse ist von der spezifischen Implementierung von BorrowableBook abhängig, um Borrowing-Operationen durchzuführen.

public class BorrowableBook
{
    public string Title { get; set; }
    public bool IsAvailable { get; private set; } = true;

    public BorrowableBook(string title)
    {
        Title = title;
    }

    public void Borrow()
    {
        if (IsAvailable)
        {
            IsAvailable = false;
            Console.WriteLine($"You have borrowed \"{Title}\".");
        }
        else
        {
            Console.WriteLine($"\"{Title}\" is already borrowed.");
        }
    }
}

public class Library
{
    private BorrowableBook _book;

    public Library(BorrowableBook book)
    {
        _book = book;
    }

    public void BorrowBook()
    {
        if (_book.IsAvailable)
        {
            _book.Borrow();
        }
        else
        {
            Console.WriteLine("The book is not available.");
        }
    }
}

In diesem Code hängt die Library Klasse direkt von der BorrowableBook Klasse ab. Während die Abhängigkeit für eine einzelne Art von leihbarem Element funktioniert, führt sie zwei wichtige Probleme ein:

  • Direkte Abhängigkeit: Die Library Klasse ist eng mit dem BorrowableBook Typ gekoppelt. Wenn Sie neue ausleihbare Elemente (z. B. DVDs, Zeitschriften) hinzufügen möchten, müssen Sie die Library Klasse ändern.
  • Eingeschränkte Erweiterbarkeit: Das aktuelle Design erschwert das Erweitern der Funktionalität, ohne vorhandenen Code zu ändern.

Diese enge Kopplung verstößt gegen das Open/Closed-Prinzip (OCP), das besagt, dass software offen für Erweiterung, aber für Änderungen geschlossen sein sollte. Mit anderen Worten, Sie sollten in der Lage sein, neue Features hinzuzufügen, ohne vorhandenen Code zu ändern.

Indem Sie Abhängigkeiten reduzieren, können Sie:

  • Verbesserung der Wartungsfreundlichkeit: Änderungen in einem Teil des Systems wirken sich weniger auf andere aus.
  • Mehr Flexibilität: Neue Features können hinzugefügt werden, ohne vorhandenen Code zu ändern.
  • Vereinfachen des Tests: Komponenten können unabhängig getestet werden.

Um das Problem zu beheben, müssen Sie den Code mithilfe von Schnittstellen umgestalten, um es modularer und flexibler zu gestalten.