counter
とdistance
は、ボンネットの下に両方のint
ているにもかかわらず、彼らは現実の世界に互換性のない型を表すため、このコードは無効になりますどこの言語が存在する場合は基本的に、私は疑問に思う:ハンガリー語アプリの言語は?
#include <stdio.h>
typedef int counter;
typedef int distance;
int main() {
counter pies = 1;
distance lengthOfBiscuit = 4;
printf("total pies: %d\n", pies + lengthOfBiscuit);
return 0;
}
でコンパイル「gcc -pedantic -Wall」と私が試した他のすべての言語に関する警告はありません。誤ってカウンタと距離を追加するのを許可しないようにするのは良い考えですが、言語サポートはどこですか?
(ちなみに、この質問を促した実際の例は、PHPとPythonのWeb開発者の仕事でした。「HTMLエスケープ文字列」、「SQLエスケープ文字列」、「生危険なユーザー入力"互換性はありませんが、私が得ることができる最善の方法は、ここに示唆されているようなハンガリー語の表記です - >http://www.joelonsoftware.com/articles/Wrong.html < - それでもコンパイラのサポートではなく人間のチェック("間違ったコードは間違って見える ")に依存しています(" wrong code is wrong "))
どのようにユーザー定義型を許可する静的型言語ですか?もちろん、クラスラッピングなど。 "これは距離です"という情報を追加するだけの整数は、定義するためのかなりの型付けと使用するPITAです。しかし、それは全体のポイントと思われる。 – delnan
実行時にチェックされたユーザー定義型および実装済基本型を使用して完全に行うことができます。あなたが言うように、それは非常に長持ちする方法です - Cのtypedefは例のように構文には完全にぴったりですが、私は自動的に型間を静かにキャストしないでコンパイル時エラーをスローします... – Shish