Я спробую зробити все можливе, щоб вирішити це питання таким чином, щоб це не призвело до мовної війни чи списку, тому що я думаю, що на це питання може бути хороша технічна відповідь.
Різні мови в різному ступені підтримують псевдоніми типів. C # дозволяє псевдоніми типів оголошувати на початку кожного файлу коду, і вони дійсні лише у всьому цьому файлі. Такі мови, як ML / Haskell, використовують псевдоніми типу, ймовірно, настільки ж, наскільки вони використовують визначення типів. C / C ++ є на зразок Дикого Заходу, typedefі #defineчасто використовується, здавалося б, взаємозамінно для псевдонімів.
Зовнішні типи псевдоніму не викликають занадто великих суперечок:
- Це дозволяє зручно визначати складові типи, які природно описані мовою, наприклад,
type Coordinate = float * floatабоtype String = [Char]. - Довгі імена можуть бути скорочені:
using DSBA = System.Diagnostics.DebuggerStepBoundaryAttribute. - У таких мовах, як ML або Haskell, де параметри функцій часто не мають імен, псевдоніми типів надають вигляд самодокументації.
Мінус - дещо складніший: псевдоніми можуть поширюватися, утрудняючи читання та розуміння коду чи вивчення платформи. API Win32 - хороший приклад, DWORD = intі його, HINSTANCE = HANDLE = void*і його, LPHANDLE = HANDLE FAR*і таке. У всіх цих випадках навряд чи має сенс розрізняти HANDLE та недійсний покажчик або DWORD та ціле число тощо.
Якщо відмовитись від філософської дискусії про те, чи повинен король дати повну свободу підданим, і нехай вони будуть відповідальні за себе чи чи слід втручатися у всі їх сумнівні дії, чи може бути щасливий засіб, який би дозволив отримати переваги згладжування типу? пом'якшення ризику його зловживань?
Наприклад, питання довгих імен можна вирішити за допомогою хороших функцій автозаповнення. Наприклад, Visual Studio 2010 дозволить вам ввести DSBA, щоб віднести Intellisense до System.Diagnostics.DebuggerStepBoundaryAttribute. Чи можуть бути інші особливості, які б безпечніше забезпечували інші переваги типу сшивання?
DebuggerStepBoundaryAttributeнабагато більш читабельним , ніж DSBA. У першому випадку ви знаєте, що це означає. У другому ви поняття не маєте. Тепер уявіть, що ви використовуєте в коді двадцять різних псевдонімів. Хто-небудь матиме достатньо сміливості, щоб спробувати прочитати і зрозуміти ваш код?