Ich werde mein Bestes geben, um diese Frage so zu gestalten, dass sie nicht zu einem Sprachkrieg oder einer Sprachliste führt, da ich denke, dass es eine gute technische Antwort auf diese Frage geben könnte.
Verschiedene Sprachen unterstützen Typaliasnamen in unterschiedlichem Maße. Mit C # können Typaliasnamen am Anfang jeder Codedatei deklariert werden, und sie sind nur in dieser Datei gültig. Sprachen wie ML / Haskell verwenden wahrscheinlich genauso viele Typaliasnamen wie Typdefinitionen. C / C ++ sind eine Art von Wilder Westen, mit typedefund #defineoft scheinbar austauschbar Typen Alias verwendet wird.
Die Vorteile des Typ-Aliasing führen nicht zu viel Streit:
- Es macht es bequem, zusammengesetzte Typen zu definieren, die natürlich durch die Sprache beschrieben werden, z . B.
type Coordinate = float * floatodertype String = [Char]. - Lange Namen können gekürzt werden :
using DSBA = System.Diagnostics.DebuggerStepBoundaryAttribute. - In Sprachen wie ML oder Haskell, in denen Funktionsparameter häufig keine Namen haben, bieten Typ-Aliase einen Anschein von Selbstdokumentation.
Der Nachteil ist etwas zweifelhafter: Aliase können sich vermehren, was es schwierig macht, Code zu lesen und zu verstehen oder eine Plattform zu erlernen. Die Win32-API ist ein gutes Beispiel mit ihrem DWORD = intund seinem HINSTANCE = HANDLE = void*und seinem LPHANDLE = HANDLE FAR*und so. In all diesen Fällen macht es kaum Sinn, zwischen einem GRIFF und einem leeren Zeiger oder einem DWORD und einer ganzen Zahl usw. zu unterscheiden.
Wenn man die philosophische Debatte darüber beiseite lässt, ob ein König seinen Untertanen völlige Freiheit geben und sie für sich selbst verantwortlich machen sollte oder ob sie alle ihre fragwürdigen Handlungen eingreifen sollten, könnte es ein glückliches Medium geben, das die Vorteile von Typ-Aliasing währenddessen zulässt das Risiko seines Missbrauchs mindern?
Beispielsweise kann das Problem langer Namen durch gute Funktionen zur automatischen Vervollständigung gelöst werden. In Visual Studio 2010 können Sie beispielsweise DSBA eingeben, um Intellisense auf System.Diagnostics.DebuggerStepBoundaryAttribute zu verweisen. Könnte es andere Funktionen geben, die die anderen Vorteile des Typ-Aliasing sicherer bieten?
DebuggerStepBoundaryAttributeist viel besser lesbar als DSBA. Im ersten Fall wissen Sie, was es bedeutet. Im zweiten hast du keine Ahnung. Stellen Sie sich nun vor, Sie verwenden im Code zwanzig verschiedene Aliase wie diesen. Hätte jemand genug Mut, um zu versuchen, Ihren Code zu lesen und zu verstehen?