Магические числа, безусловно, плохой антипаттерн. Однако константы, которые отображаются на магические числа, являются паттерном. Как
if (productType == 3) //Bad
if (productType == PRODUCT_ELECTRO) //Good even while PRODUCT_ELECTRO=3
Хорошей практикой в SQL является использование lookup tables
!
PRODUCT TABLE
TYPE DESCRIPTION
1 FOOD
2 ELECTRONIC
3 HOUSE
А затем определите свои сущности с FOREIGN KEY
для этой таблицы.
Пример
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..........);
В вашем коде вы можете определить константы, такие как
public class ProductTypes {
public const int FOOD_PRODUCT = 1;
......
}
Пример запроса (не напоминайте мне, что этот шаблон небезопасен:))
публичный продукт [] getElectronicProducts ()
{
... // инициализация соединения бла бла бла
Command.CommandText = String.Format ("ВЫБРАТЬ * ИЗ ПРОДУКТОВ ГДЕ PRODUCT_TYPE = {0}", ProductTypes.ELECTRONIC_PRODUCT);
//Produces "SELECT * FROM PRODUCTS WHERE PRODUCT_TYPE = 3"
... //do the query and return
* *} Тысяча двадцать-один