A meno che non si preveda di estendere questo a più parti, sarei riluttante ad aggiungere un database ancora. Avere un database significa una grande quantità di cose da imparare per te e più cose da installare per farlo funzionare per altre persone. L'aggiunta di un database incorporato mantiene l'eseguibile finale portatile, ma qualcuno con il tuo codice sorgente ora ha ancora una cosa per funzionare.
Penso che un elenco di costanti chiaramente denominate e funzioni di implementazione delle regole sarà di grande aiuto. Se dai tutto nomi naturali e ti concentri sulle tecniche di programmazione alfabetica dovresti essere in grado di creare un programma leggibile.
Idealmente ti ritroverai con il codice che dice:
LeftBearingHoleDepth = BearingWidth + HoleDepthTolerance;
if (not CheckPartWidth(LeftBearingHoleDepth, {other parameters})
{whatever you need to adjust}
A seconda di quanto siano localizzate le costanti, sarei tentato di dichiararle nelle funzioni in cui sono utilizzate, laddove possibile. È molto utile girare:
SomeAPICall(10,324.5, 1, 0.02, 6857);
in
const NumberOfOilDrainHoles = 10
const OilDrainHoleSpacing = 324.5
{etc}
SomeAPICall(NumberOfOilDrainHoles, OilDrainHoleSpacing, {etc}
Questo ti dà un codice ampiamente auto-documentante e incoraggia anche chi modifica il codice a dare nomi altrettanto significativi a ciò che aggiunge. Iniziare localmente rende anche più facile gestire il numero totale di costanti che accumulerai. Diventa un po 'fastidioso se devi continuare a scorrere un lungo elenco di costanti per assicurarti che il valore sia quello desiderato.
Un consiglio per i nomi: metti la parola più importante a sinistra. Potrebbe non leggere abbastanza bene, ma rende le cose più facili da trovare. La maggior parte delle volte si sta osservando un sifone e ci si chiede il bullone, non si guarda un fulmine e ci si chiede dove si trova, quindi chiamalo SumpBoltThreadPitch non BoltThreadPitchSump. Quindi ordina l'elenco di costanti. Successivamente, per estrarre tutti i pitch del thread è possibile ottenere la lista in un editor di testo e utilizzare la funzione find oppure utilizzare uno strumento come grep per restituire solo le righe che contengono "ThreadPitch".