マジックナンバーは間違いなく反パターンです。しかし、マジックナンバーにマップされる定数はパターンです。 Like
if (productType == 3) //Bad
if (productType == PRODUCT_ELECTRO) //Good even while PRODUCT_ELECTRO=3
lookup tables
を使用してください。
PRODUCT TABLE
TYPE DESCRIPTION
1 FOOD
2 ELECTRONIC
3 HOUSE
そして、このテーブルにFOREIGN KEY
であなたのエンティティを定義します。
例あなたは
public class ProductTypes {
public const int FOOD_PRODUCT = 1;
......
}
例クエリのような定数を定義することができ、あなたのコードで
CREATE TABLE PRODUCT_TYPES (PRODUCT_TYPE_ID NUMBER PRIMARY KEY, PRODUCT_TYPE_DESCRIPTION VARCHAR2);
CREATE TABLE PRODUCTS (PRODUCT_ID NUMBER PRIMARY KEY, PRODUCT_TYPE NUMBER NOT NULL REFERENCES PRODUCT_TYPES(PRODUCT_TYPE_ID), BLA BLA BLA..........);
(:)このパターンは安全ではないことを私に思い出させないでください)
公共製品[] getElectronicProducts() { ... //初期接続bla bla Command.CommandText = Strin g.Format( "SELECT * FROM PRODUCTS WHERE PRODUCT_TYPE = {0}"、ProductTypes.ELECTRONIC_PRODUCT);それは良いデザインの価値観を持つ列挙型を使用して
//Produces "SELECT * FROM PRODUCTS WHERE PRODUCT_TYPE = 3"
... //do the query and return
}
明確にするために私の質問が更新されました。 – Icerman