Sind Module böse?

  • VB.NET

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von nikeee13.

    Sind Module böse?

    Bezug: [VB.NET] Meine Controls (Source)

    GraphicsHelper sollte ne Klasse sein, die statische (also Shared) Member hat. Module sind so HurrDurr-VB6-Clusterfuck.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „ErfinderDesRades“ ()

    Ich denke das wird hier zu sehr Off topic aber hier mein letzter beitrag dazu.
    Bei Modulen schwirren Funktionen frei herum.
    Bei Klassen habe ich Funktionen nur in der Klasse.
    Beispiel:

    Ich will Funktion XYZ aus Klasse A.
    Ich will aber auch Funktion XYZ auf Klasse B.
    Mal angenommen ich habe XYZ so (ohne Klasse, im Modul),
    das würde (für mich) für eine riesen Verwirrung sorgen.
    Module sind ein Rudiment aus grauer Vorzeit, die gab es schon zu VB3-Zeiten.
    Aus Kompatibilitätsgründen werden die von MS noch supportet.
    Die einzige Daseinsberechtigung in VB.NET habe Module für eine Befehlserweiterung.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Während du bei Shared Klassenmethoden zum Aufruf immer den Klassennamen angeben mußt, musst du dieses bei Modulen nicht - kannst es aber.

    Auch könntest du um verschiedene Module (mit gleichnamigen Methoden) einen geeigneten Namespace legen, das würde dann beim Aufruf ebenso aussehen wie beim Aufruf von Shared Klassenmethoden.

    Aber ich will garnicht Module verfechten - ob man nun Modul-Methoden verwendet oder Shared Class-Methoden ist annähernd schnurz, und die Strukturierung via KlassenDefinition ist stärker eingebürgert.
    Nur die Abqualifikation als "Hurr-Durr-ClusterFuck" findich unhaltbar.

    @Rod: nur weils dieses Konstrukt schon vlt. länger gibt als selbst die Klassen - deswegen ist ein Konstrukt noch nicht schlecht.
    Wenn alles was alt ist schlecht sein soll - was machstedann mittm If - Schlüsselwort? ;)
    .NET-Intern werden Module so oder so in das umgewandelt, was in C# eine Klasse mit staticsealed-Modifier ist. Zusätzlich werden alle Methoden als static markiert. Danach wird die Klasse mit 'nem Attribut versehen.

    Mal ausprobiert:
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Imports Microsoft.VisualBasic.CompilerServices
    2. Imports System
    3. Namespace XmalStringProfiler
    4. Public Module EinTestModul
    5. Public Function NehmeDirEineEins() As String
    6. Return Conversions.ToString(1)
    7. End Function
    8. End Module
    9. End Namespace

    wird zu:

    C-Quellcode

    1. using Microsoft.VisualBasic.CompilerServices;
    2. using System;
    3. namespace XmalStringProfiler
    4. {
    5. [StandardModule]
    6. public sealed class EinTestModul
    7. {
    8. public static string NehmeDirEineEins()
    9. {
    10. return Conversions.ToString(1);
    11. }
    12. }
    13. }

    Wird doch zu einer sealed (NotInheritable) Class, nicht static. Naja, ist ja fast das gleiche. ;)
    Wenn man sich das Attribut wegdenkt, hat man 'ne ganz normale Klasse, ohne irgendetwas besonderes.
    Von meinem iPhone gesendet

    Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von „nikeee13“ ()