2009-09-29 7 views
13

最近、私はEmpire-dbと連絡を取ります。プロジェクトの文書彼らは "string-free coding"を使用していると述べています。これは、タイプミスを避け、コンパイラの力を使うためにできるだけ定数の少ない文字列を使用することを意図しています。"文字列のないコーディング"は共通の用語ですか?

私はJavaが、それはプロパティやXMLなどの設定のためにexpresive可能性があり、正式な言語であり、コンパイラスルーチェックすることで、余分な値を与えると思うので、私は、常にこの原則の大ファンでした。おそらく実行時には、再コンパイルせずに変更する可能性は低くなりますが、これはそれぞれのケースに依存します。

ここで、この用語/原則/デザインパターンについて、より多くの参照や読書をしましたか?

+1

Empire DBを指摘してくれてありがとう。これは、さらなる調査に値するツールです。私は特にHibernateの分析に襲われました:http://incubator.apache.org/empire-db/empiredb/hibernate.htm – APC

+0

これは本当に興味深い記事です。ありがとう@APC。 –

+0

それは良い原則ですが、いつものように、まず常識を使います。無意識のうちに良い意図を持って良い設計をして、悪いコードにつなげることもできます。http://thedailywtf.com/Articles/It-Gets-Worse-Each-Year.aspxとhttp://thedailywtf.com/Articles/ Soft_Coding.aspx –

答えて

4

私はその特定の用語を聞いたことはありませんが、私はあなたが何を意味しているか知っています。

4

私はJavaについて少し知っていますが、このイディオムは現代のC++で有名です。たとえば、Xpressiveは、正規表現ライブラリであり、プログラマは正規表現をC++に書き込むことができ、コンパイル時のチェックを行います。 Spiritは、あなたがC++でEBNF を書くことができ、およびコンパイラはまたあなたのための構文をチェックすることができます:)

は、私はあなたが探している 用語は組み込みドメイン固有言語だと思う場合は、別の例です。

+0

Qtにも関連がありますが、それは翻訳がそこで動作するためです。基本的には、ユーザが見える文字列を "tr(...) "と表示され、アプリケーションは実行時に動的に表示され、適切な翻訳が見つからなかった場合にのみ指定された文字列を使用します。 –

1

特定の表現は聞いたことがありませんが、Effective Javaは「は他のタイプがより適切な場合は文字列を避けることをお勧めします。」(アイテム50)。

6

これはのマジックナンバーの定数と同じものです。定数を使用すると、保守性と可読性が向上します。定数は変更をカプセル化します。定数値の変更は自動的に伝播され、文字列のないコーディングの場合、スペルの間違いはコンパイル時エラーです。

0

Pragmatic Programmer有名なのは、特に、メタデータの処理に関連して、この原則に言及しています。このことについてのヒントの一つは、次のとおりです。

、コードで抽象化を入れて、一般的なケースのための メタデータ

プログラム、 で詳細と コンパイルされたコードベースの外に詳細を置きます。

とにかく本を読む価値があります。

0

empire-dbに関しては、SQLクエリのための '型安全性'に似ています。

関連する問題