A menos que você preveja estender isso para várias partes, eu relutaria em adicionar um banco de dados ainda. Ter um banco de dados significa uma grande pilha de coisas para aprender e mais coisas para instalar para que funcione para outras pessoas. Adicionar um banco de dados incorporado mantém o executável final portátil, mas alguém com seu código-fonte agora tem mais uma coisa para começar a trabalhar.
Eu acho que uma lista de constantes claramente nomeadas e funções de implementação de regras ajudará muito. Se você der nomes naturais a tudo e se concentrar nas técnicas de programação alfabetizada, poderá criar um programa legível.
Idealmente, você terminará com o código que diz:
LeftBearingHoleDepth = BearingWidth + HoleDepthTolerance;
if (not CheckPartWidth(LeftBearingHoleDepth, {other parameters})
{whatever you need to adjust}
Dependendo de quão local são as constantes, ficaria tentado a declará-las nas funções em que são usadas sempre que possível. É bastante útil ativar:
SomeAPICall(10,324.5, 1, 0.02, 6857);
para dentro
const NumberOfOilDrainHoles = 10
const OilDrainHoleSpacing = 324.5
{etc}
SomeAPICall(NumberOfOilDrainHoles, OilDrainHoleSpacing, {etc}
Isso fornece um código amplamente auto-documentado e também incentiva qualquer pessoa que modifica o código a atribuir nomes com significado semelhante ao que eles adicionam. Iniciar localmente também facilita lidar com o número total de constantes que você acumulará. Fica um pouco chato se você precisar continuar percorrendo uma longa lista de constantes para garantir que o valor seja o desejado.
Uma dica para nomes: coloque a palavra mais importante à esquerda. Pode não ser tão bom assim, mas facilita encontrar as coisas. Na maioria das vezes, você está olhando para um poço e se perguntando sobre o parafuso, sem olhar para um parafuso e se perguntando onde ele funciona. Então, chame-o de SumpBoltThreadPitch e não BoltThreadPitchSump. Em seguida, classifique a lista de constantes. Posteriormente, para extrair todos os arremessos de encadeamento, você pode obter a lista em um editor de texto e usar a função find ou usar uma ferramenta como grep para retornar somente as linhas que contêm "ThreadPitch".