言語の戦争やリストにならないような方法でこの質問を構成するために最善を尽くします。この質問に対する優れた技術的な答えがあると思います。
さまざまな言語がさまざまな程度で型エイリアスをサポートしています。C#では、各コードファイルの先頭で型のエイリアスを宣言でき、それらはそのファイル全体でのみ有効です。ML / Haskellのような言語は、型定義を使用するのと同じくらい、型エイリアスを使用します。C / C ++はと、ソートワイルドウェストのあるtypedef
と#define
別名型に一見互換的に使用されていることが多いです。
タイプエイリアスの利点は、あまり論争を引き起こしません。
- これは、言語によって自然に記述されている複合型、例えばを定義することが便利になります
type Coordinate = float * float
かtype String = [Char]
。 - 長い名前は短縮できます:
using DSBA = System.Diagnostics.DebuggerStepBoundaryAttribute
。 - MLやHaskellなどの関数パラメーターに名前がないことが多い言語では、型エイリアスは自己文書化のようなものを提供します。
マイナス面はもう少し不明瞭です。エイリアスが急増し、コードを読んで理解したり、プラットフォームを学習したりすることが難しくなる可能性があります。Win32 APIのは、そので、良い例でDWORD = int
、そのHINSTANCE = HANDLE = void*
とそのLPHANDLE = HANDLE FAR*
とな。これらすべての場合において、HANDLEとvoidポインタ、またはDWORDと整数などを区別することはほとんど意味がありません。
王が主体に完全な自由を与え、彼ら自身に責任を負わせるべきか、または疑わしい行動のすべてを介入させるべきかという哲学的議論を別にして、タイプエイリアスの利点を可能にする幸せなメディアが存在するだろうかその乱用のリスクを軽減する?
例として、長い名前の問題は、優れたオートコンプリート機能によって解決できます。たとえばVisual Studio 2010では、IntellisenseをSystem.Diagnostics.DebuggerStepBoundaryAttributeに参照するためにDSBAを入力する必要があります。タイプエイリアスのその他の利点をより安全に提供する他の機能はありますか?
DebuggerStepBoundaryAttribute
は、よりはるかに読みやすくなっていDSBA
ます。最初のケースでは、それが何を意味するか知っています。2つ目はわかりません。次に、このようなコードで20種類のエイリアスを使用するとします。誰かがあなたのコードを読んで理解しようとするのに十分な勇気がありますか?