매직 넘버는 틀린 반 패턴입니다. 그러나 매직 넘버에 매핑되는 상수는 하나의 패턴입니다. 마찬가지로
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 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