Vet du lag minst förvåning? Jag är inte säker på dess ursprung, men jag först lärde mig det från den exceptionella ”Tao of Programming”. enkelt uttryckt, är det principen att mjukvaran alltid måste svara för användarna på ett sätt som minst förvånar dem. Med andra ord, att skriva ut ett papper ska inte radera den från filsystemet.
Efter lag minst förvåning vad som måste ett program göra när den träffar ett hårt fel? Man kan säga att det måste låta användaren veta. Tyvärr, massor av system bara borsta det under mattan i dessa dagar.
Jag tror att det började med Windows. Eller kanske Mac. Tanken går att slutanvändarna är för dum eller för livrädd för felkoder eller fördjupad meddelanden så vi bara lämnar ut dem. typexempel: Min fru iPhone skulle inte publicera bilder. Jag är ingen expert med tanke på att jag bär en Android-enhet, men jag gick med på att titta på det. Oavsett vad jag försökte, jag fick samma värdelös meddelande: ”Det går inte att publicera bilder ideal nu. Vänligen försök igen senare.” Inte bara är det inte mycket informativt, men det innebär också problemet är i något som skulle kunna fixa sig senare som nätverket.
Den verkliga boven? Icloud användarvillkoren hade förändrats och hon inte hade accepterat det nya kontraktet. Jag har en känsla av att det kan ha dykt upp be henne att göra det någon gång, men av någon anledning hon missade det. tills du grävde i inställningarna och kontrolleras rutan för att komma överens om att dessa villkor, ”senare” aldrig kommer att hända.
Men det är inte bara iPhone. Windows är full av saker som det och du bara hoppas att det blir en logg i händelse kund med mycket mer information. Jag ser också mycket mer av det nu på Linux, även om det är normalt en loggfil någonstans om du vet hur man hittar den. Även om jag får det att program som har fel riskerar förvånande användaren, är det ännu mycket mer förvånande om det inte finns någon förklaring till vad som är fel. tänk om din bank skickat en anmärkning: det finns ett problem med ditt konto. Så du svarar: ”Har jag ÖVERSKRIDA?” De svarar ”Nej” nu då? Det är tillståndet för massor av programvara fel idag.
Det finns egentligen ingen ursäkt på stationära system eller webbplatser. Men du kanske vill förlåta små inbyggda system. Gör det inte! Jag har nyligen portade 3D-skrivare firmware Marlin till en ANET A8 ombord – en 8-bitars processor med lite minne – som hade varit på Repetier firmware för massor av år. Första gången jag försökte göra en Autolevel sond Jag fick meddelandet: Avkännarfunktion misslyckades. Det är allt.
Jag ska ge dig, att du kan slå på Autolevel felsökning för att få mycket mer information, men jag är redan 98% flash utnyttjande, så det skulle kräva tillfälligt ta bort en massa funktioner och återuppbygga koden. men varför inte göra som vi skulle göra i den gamla goda tiden:
enhet global_error = 0;
void do_something (void) {
global_error = 1;
if (process1 () == FAIL) avkastning;
global_error ++;
if (process2 () == FAIL) avkastning;
. . .
global_error = 0;
lämna tillbaka;
}
Detta tar inte mycket plats. Nu kan du rapportera något Probing misslyckades (8) och jag kan åtminstone gå till koden och räkna ut vad den 8: e steg som misslyckades. Jag är säker på att någon ens skulle lägga upp en förteckning över koder och vad de som anges i ett fall som detta.
För mycket overhead? berätta programräknaren där felet inträffade. Det brukade vara en ganska vanligt förekommande. Visst, krävs det att du har en minneskarta fil och vet hur man läser det, men det är ändå bättre än ingenting.
Vi tillbringar mycket tid att tänka på hur projekt och program måste fungera. men vi behöver spendera tid att tänka, även om vad som händer när de inte fungerar. Det är bra att vi kan göra in-circuit debugging eller ansluta en logikanalysator, men det kommer inte att hjälpa våra användare. även om det är bara för dig, varför inte göra det lite enklare för dig själv?
Som vi har sagt tidigare, ”Det finns inget som heter för mycket information.” Förutom att skydda mot systemfel, kan du också hjälpa användarna inte att förvåna sig.
Bild Credit: [Elisa Ventur] genom Unsplash.com