デザイン:適切なタイプを選択
1001 ワード
プログラマーは一日中いろいろな値と変数と付き合っています.変数タイプは頭を使わない選択のようです.名前nameは文字列に違いないでしょう.重量weightは浮動小数点数に違いない?
タイプの選択は設計に非常に影響する要素に違いない.Javaのような強いタイプの言語では、ライブラリの変数、パラメータを与えてタイプを変更したいが、決して楽ではない.アプリケーションでも、ユーザーがいる限り、コードのタイプ情報は容易に変更されません.Clojureのようなアヒルのタイプの言語では、タイプは明示的に宣言されませんが、パラメータや戻り値のタイプを理解する必要があります.この言語では、強いタイプの言語よりも危険なものを東西に変更します.コンパイラのチェックがないからです.
だからこそ、プログラマーは便利さの誘惑に耐え、タイプを本質として設計し、その表現を使うべきではない.私たちがタイプの面で最もよく犯す間違いは、文字列を乱用することです.は、列挙の代わりに文字列を使用します.文字列の特徴は任意の数の文字を含むことができて、無限の集合で、各種の演算を行うことができます;列挙は限られており、各値は明確に演算できない.たとえば、銀行カードを処理するプログラムでは、カードのタイプを表示することが多いため、 は日付の代わりに文字列を使用します.日付のフォーマットは多くのプログラムで面倒であり、日付を表示するのは一般的な必要です.プログラムで日付を文字列で表すことがよく見られます.これはまたこの量の本質から逸脱している. は、他の様々なデータ構造の代わりに文字列を使用する.例えば、リストやmapを表すために使用されます.
タイプの選択は設計に非常に影響する要素に違いない.Javaのような強いタイプの言語では、ライブラリの変数、パラメータを与えてタイプを変更したいが、決して楽ではない.アプリケーションでも、ユーザーがいる限り、コードのタイプ情報は容易に変更されません.Clojureのようなアヒルのタイプの言語では、タイプは明示的に宣言されませんが、パラメータや戻り値のタイプを理解する必要があります.この言語では、強いタイプの言語よりも危険なものを東西に変更します.コンパイラのチェックがないからです.
だからこそ、プログラマーは便利さの誘惑に耐え、タイプを本質として設計し、その表現を使うべきではない.私たちがタイプの面で最もよく犯す間違いは、文字列を乱用することです.
cardTypeName
の属性、文字列のタイプを設計する誘惑を受ける可能性があります.「クレジットカード」、「デビットカード」などの値しか取れません.しかし、より本質的な設計はcardType
列挙であり、CREDIT
とDEBIT
などの値が取られている.Clojureでは、:credit
および:debit
のようなkeywordを直接使用することができる.