Nem sei se esse é o fórum apropriado para tirar minha duvida mais creio que sim.
Seguinte, estou desenvolvendo um sistema que faz uns cálculos para montagem de peças. Minha duvida é! guardar formulas em uma tabela no banco de dados é uma coisa legal? funcionaria legal?? e uma pratica utilizada?
vou explicar melhor o meu problema quem sabe alguma alma boa possa me ajudar hehe
eu tenho uma peça A que para calcular o perímetro é uma formula totalmente diferente da peça B. ou seja para cada peça eu terei uma formula diferente para calcular perímetro, peso e etc.
Guardar no banco vc diz, como stored procedures, ou em forma de texto pra que a aplicacao interprete e execute? No primeiro caso, acho pouco aconselhavel, principalmente pq os calculos nao devem ser simples, entao serao melhor executados na aplicacao.
Eu pensei no problema mais ou menos como num sistema academico. Se cada professor puder lançar as avaliações independentemente, entao a media de cada turma será calculada de uma maneira. Só que quem define a formula é o usuário e não o desenvolvedor.
Acho interessante essa abordagem, mas de qualquer forma voce precisaria criar um interpretador para esses calculos depois ou ainda otimizar futuramente, num HashMap ou semelhante, uma forma de nao interpretar as formulas a cada calculo, melhorando a performance do sistema.
então eh exatamente o que o nicholas pensou, pq na verdade hoje o sistema contem mais de 100 peças diferentes que tem calculos diferentes para cada uma delas, e pode entrar novas peças.
eu encontrei uma api que interpreta uma formula em forma de txt.
Eu to fazendo um sistema academico que acabaria usando isso tambem. A minha ideia era usar uma API dessas de linguagem interpretada, tipo JRuby ou Groove para fazer as contas. Ainda não cheguei a esse ponto mas acho que é o que vale mais a pena.
Nao sei como funcionam as APIs por que, como disse, ainda nao cheguei nessa parte do sistema. Mas o principal é você criar uma forma de validar as formulas no sistema, ao menos a sintaxe delas. A pior coisa seria o usuario cadastrar uma formula que na hora da producao nao funciona e a equipe de TI levar a culpa.
Voce precisa deixar claro para ele como escrever a fórmula e quais os operadores disponiveis. Depois criar alguma função se ele precisar… Sei lá! Mas deixar na mao do usuario digitar a formula como bem entender e ter q se virar pra interpretar só vai te dar dor de cabeça.
Acho que o Design Pattern Interpreter pode ser usado numa boa pra fazer essa validação.