Hantering av programinställningar

Här diskuteras programmering och utveckling
TicToc
Inlägg: 2266
Blev medlem: 27 dec 2006, 17:28
OS: Kubuntu
Utgåva: 20.04 Focal Fossa LTS

Hantering av programinställningar

Inlägg av TicToc »

Jag har ett problem jag har gått och grubblat på under det senste året, kanske inte på heltid,
men lite då och då. Det gäller det här med inställningsmöjligheterna av ett "grafiskt" program
och hur de skall hanteras. Hitintills har jag mest låtit en ändring av en grafisk komponent
direkt påverka en variabel. Något säger mig att det borde finnas betydligt bättre sätt att lösa
det på och jag kan tänka mig några olika alternativ. Jag programmerar i Java men själva
språket är inte så intressant, utan mer filosofin.

När jag har tittat på andras kod på "seriösa" projekt har det stora problemet varit att sätta sig
in i den för att förstå något, så det har tagit stopp efter en liten stund.

Ett väldigt förenklat alternativ jag funderat på är:
Skapa någon form av inställningsklass som hanterar varje enskild inställning med set/get,
antingen med ett metodpar per inställning eller EN set/get med TVÅ argument, nyckel+värde.
Java har ju redan klasser som man kan vidareförädla för detta.

Om jag har ett inställningsfönster med en massa olika alternativ och ändras minst ett, brukar
alla inställningar sättas om på nytt, eller sker det hela tiden kontroller om varje inställning är
ändrad? Det kan bli många kontroller.

Ibland kan det vara så att vissa inställningar krockar med varandra och skapar ogiltiga
kombinationer, hur brukar detta lösas? En tanke jag fick är att tilldela varje inställning en bit
och sedan svartlista vissa tal/masker som kan uppstå. Men det bästa kanske är att göra så
att det inte går att välja dåliga kombinationer.

Det som gör det svårt att hitta en bra lösning är att jag inte riktigt vet vad jag skall göra, mer än
att få ett smidigt system för att hantera inställningar... ::)

En stor fördel vore om lösningen var enkel att återvinna för att användas i andra program.

Tacksam för nästan alla former av fingervisningar ;D
David Andersson
Inlägg: 1269
Blev medlem: 15 dec 2007, 03:20
OS: Xubuntu

Re: Hantering av programinställningar

Inlägg av David Andersson »

Tacksam för nästan alla former av fingervisningar
Lite tankar som bara berör några promille av dina frågor:

* Det finns en klass java.util.Properties. Den är en slags Map fast med metoder att spara och läsa från fil. Nackdelen är att utan get och set för varje värde får du ingen compile-time-kontroll att en given property finns (är rättstavad). Du kan ev bygga en egen klass på Properties.

* Om flera processer av programmet kör, och användaren gör vissa ändringar i en process och andra ändringar i en annan process, fundera på hur inställningarna ska sparas till en fil så att den process som skriver sist inte skriver över ändringarna från den andra processen. (Tror inte klassen Properties har nån färdig lösning för det. Gör ev en härledd klass som håller reda på ändringar sedan senaste spara och mergar in dessa i filen vid spara. Den kan återanvändas. Kolla om den redan finns.)

* Fundera på om inställningar ska vara som i Gnome att man bara ändrar nåt så gäller det, eller som i KDE att man måste trycka OK eller Apply för att det ska gälla. Om det senare och inställningsfönstret har flera filkar, fundera på om OK eller Apply i en flik ska ta med ändringar i andra (dolda) flikar och hur användaren ska bli medveten om det.
TicToc
Inlägg: 2266
Blev medlem: 27 dec 2006, 17:28
OS: Kubuntu
Utgåva: 20.04 Focal Fossa LTS

Re: Hantering av programinställningar

Inlägg av TicToc »

Om flera processer av programmet kör
Tack för tipset, hade inte tänkt så långt. En sak till som jag vill ha med är möjligheten att välja config-fil vid progrmstart så att man kan köra olika varianter, var för sig eller samtidigt.

När det gäller att verkställa direkt eller med en verkställ-knapp föredrar jag det första, men programupplägget i övrigt är klart KDEinspirerat, så jag får se vad det blir.
Skriv svar

Återgå till "Programmering och webbdesign"