{"id":146,"date":"2018-12-10T16:27:48","date_gmt":"2018-12-10T15:27:48","guid":{"rendered":"https:\/\/evileu.de\/praxis-dr-inselfisch\/?p=146"},"modified":"2018-12-10T16:27:48","modified_gmt":"2018-12-10T15:27:48","slug":"der-else-zweig-es-gibt-immer-eine-alternative","status":"publish","type":"post","link":"https:\/\/evileu.de\/praxis-dr-inselfisch\/2018\/12\/10\/der-else-zweig-es-gibt-immer-eine-alternative\/","title":{"rendered":"Der Else-Zweig: es gibt immer eine Alternative"},"content":{"rendered":"<p>Das erste Kon\u00adstrukt, das man gemein\u00adhin in ein\u00ader Pro\u00adgram\u00admier\u00adsprache lernt, ist meis\u00adtens ein If, auf Deutsch ein Wenn. Wenn a gr\u00f6ss\u00ader als b ist, mach etwas, das ist die Aus\u00adgangs\u00adba\u00adsis f\u00fcr viele Anf\u00e4nger\u00adpro\u00adgramme. Dabei lernt man meis\u00adtens auch ziem\u00adlich schnell, dass die If-Bedin\u00adgung sel\u00adten ein-ein\u00addeutig ist, man muss immer noch ein paar Alter\u00adna\u00adtiv\u00aden ber\u00fcck\u00adsichti\u00adgen. Was ist zum Beispiel, wenn a nicht gr\u00f6ss\u00ader als b ist, son\u00addern klein\u00ader? Was macht man dann? Und was ist, wenn die bei\u00adden Werte gle\u00adich sind? Daf\u00fcr gibt es die Else-Bedin\u00adgung, also die Alter\u00adna\u00adtive, was passieren soll wenn die If-Bedin\u00adgung nicht zutrifft.<\/p>\n<p>Das kriegt man in ver\u00adsch\u00e4rfter Form immer wieder um die Ohren, beson\u00adders wenn es um Benutzereingaben geht. Nehmen wir mal an, wir bit\u00adten den Benutzer um die Eingabe ein\u00ader Zahl:<\/p>\n<div id=\"attachment_147\" style=\"width: 280px\" class=\"wp-caption alignnone\"><img aria-describedby=\"caption-attachment-147\" decoding=\"async\" loading=\"lazy\" class=\"size-full wp-image-147\" src=\"https:\/\/evileu.de\/praxis-dr-inselfisch\/wp-content\/uploads\/2018\/12\/eingabe_screenshot.jpg\" alt=\"eingabe_screenshot\" width=\"270\" height=\"142\"><p id=\"caption-attachment-147\" class=\"wp-caption-text\">eingabe_screenshot<\/p><\/div>\n<p>Das sieht sehr straight\u00adfor\u00adward aus, hat es aber ganz sch\u00f6n in sich. Als Pro\u00adgram\u00admier\u00ader ist man n\u00e4m\u00adlich h\u00e4u\u00adfig damit besch\u00e4ftigt, Benutzereingaben \u201cwasserdicht\u201d zu machen, das hei\u00dft, man muss alle m\u00f6glichen Kon\u00adstel\u00adla\u00adtio\u00adnen ber\u00fcck\u00adsichti\u00adgen und vorauss\u00adchauend bedenken, was der Benutzer denn in unserem kleinen Eingabefor\u00admu\u00adlar alles machen k\u00f6n\u00adnte. Im besten Fall gibt er eine Zahl ein und klickt auf \u201cAbschick\u00aden\u201d, das ist Fall eins und leicht zu behan\u00addeln. Was aber passiert, wenn er keine Zahl, son\u00addern einen Buch\u00adstaben oder son\u00adstige Zeichen ein\u00adgibt? Und was passiert, wenn er gar nichts ein\u00adgibt und trotz\u00addem auf Abschick\u00aden klickt? Und was passiert, wenn er nicht auf Abschick\u00aden klickt? Dann passiert n\u00e4m\u00adlich gar nichts\u2026<\/p>\n<p>Sie sehen schon, das kann beliebig kom\u00adplex wer\u00adden. Deswe\u00adgen muss ein guter Pro\u00adgram\u00admier\u00ader immer f\u00fcr den gr\u00f6\u00dften AU mit\u00addenken (AU= Insid\u00ader\u00adwitz, Ahnungslos\u00ades\u00adter User) und alle Even\u00adtu\u00adal\u00adit\u00e4ten ber\u00fcck\u00adsichti\u00adgen. Das \u00fcbt \u2014 auch f\u00fcrs richtige Leben.<\/p>\n<p>Wenn ein guter Pro\u00adgram\u00admier\u00ader \u00fcber ein Prob\u00adlem nach\u00addenkt, ber\u00fcck\u00adsichtigt er immer auch den Else-Zweig, auch wenn der auf den ersten Blick nicht so offen\u00adsichtlich erscheint. Wir sind es gewohnt, die Aus\u00adgangs\u00adba\u00adsis sehr genau anzuschauen, und alle m\u00f6glichen Vari\u00adanten der Vorge\u00adhensweise durchzus\u00adpie\u00adlen. Ein richtig guter Pro\u00adgram\u00admier\u00ader wird daf\u00fcr sor\u00adgen, dass der Benutzer gar keine Fehleingaben machen kann, dass beispiel\u00adsweise eine aus\u00adsagekr\u00e4ftige Fehler\u00admel\u00addung kommt wenn der User Buch\u00adstaben eingegeben hat, und das Pro\u00adgramm zum Aus\u00adgangspunkt zur\u00fcck\u00adkehrt ohne dass etwas passiert:<\/p>\n<div id=\"attachment_148\" style=\"width: 896px\" class=\"wp-caption alignnone\"><img aria-describedby=\"caption-attachment-148\" decoding=\"async\" loading=\"lazy\" class=\"wp-image-148 size-full\" src=\"https:\/\/evileu.de\/praxis-dr-inselfisch\/wp-content\/uploads\/2018\/12\/fehlermeldung.jpg\" alt=\"fehlermeldung\" width=\"886\" height=\"232\" srcset=\"https:\/\/evileu.de\/praxis-dr-inselfisch\/wp-content\/uploads\/2018\/12\/fehlermeldung.jpg 886w, https:\/\/evileu.de\/praxis-dr-inselfisch\/wp-content\/uploads\/2018\/12\/fehlermeldung-300x79.jpg 300w, https:\/\/evileu.de\/praxis-dr-inselfisch\/wp-content\/uploads\/2018\/12\/fehlermeldung-768x201.jpg 768w\" sizes=\"(max-width: 886px) 100vw, 886px\"><p id=\"caption-attachment-148\" class=\"wp-caption-text\">fehler\u00admel\u00addung<\/p><\/div>\n<p>Deswe\u00adgen sind gute Pro\u00adgram\u00admier\u00ader auch immer gute Prob\u00adlem-Ana\u00adlytik\u00ader, sie sind es gewohnt mit allen Even\u00adtu\u00adal\u00adit\u00e4ten zu rech\u00adnen und ihre Pro\u00adgramm so zu gestal\u00adten, dass jed\u00ader nur denkbare Fehler abge\u00adfan\u00adgen wird.<\/p>\n<p>In Com\u00adput\u00ader\u00adpro\u00adgram\u00admen geht das meis\u00adtens \u2014 meis\u00adtens, aber nicht immer. Je kom\u00adplex\u00ader die Aus\u00adgangssi\u00adt\u00adu\u00ada\u00adtion, desto schwieriger wird es, alle m\u00f6glichen Ereignisse vorauszuse\u00adhen und entsprechend zu behan\u00addeln. Schlie\u00dflich sind wir keine Hellse\u00adher, und deswe\u00adgen ste\u00adht am Ende ein\u00ader pro\u00adfes\u00adsionellen Pro\u00adgram\u00admen\u00adtwick\u00adlung auch immer ein aus\u00adgiebiger Test, auf neudeutsch Usabil\u00adi\u00adty Test. In dem d\u00fcr\u00adfen und sollen die Anwen\u00adder, also die Per\u00adso\u00adn\u00aden, die das Pro\u00adgramm let\u00adz\u00adtendlich benutzen sollen, das Pro\u00adgramm so bedi\u00adenen wie es ihnen ger\u00adade ein\u00adf\u00e4llt, und auch mal richti\u00adgen K\u00e4se und Unsinn eingeben und bewu\u00dft Fehlbe\u00addi\u00adenun\u00adgen provozieren. Ein richtig gutes Pro\u00adgramm kann sowas ab ohne abzust\u00fcrzen, und wenns w\u00e4hrend des Tests irgend\u00adwo kracht, muss der Pro\u00adgram\u00admier\u00ader nochmal ran und eine Fehler\u00adbe\u00adhand\u00adlung f\u00fcr diesen speziellen Fall ein\u00adbauen. Im Nor\u00admal\u00adfall braucht man sog\u00adar mehrere Testrun\u00adden, um die Pro\u00adgramme auch bei krass\u00ader Fehlbe\u00addi\u00adenung absturzfrei zu machen, erst dann entste\u00adht Usabil\u00adi\u00adty oder Benutzer\u00adfre\u00adundlichkeit.<\/p>\n<p>Das heisst auch, dass ein guter Pro\u00adgram\u00admier\u00ader Nachko\u00adr\u00adrek\u00adturen nicht als l\u00e4stiges \u00dcbel, son\u00addern als notwendi\u00adgen Bestandteil sein\u00ader Arbeit sieht, schlie\u00dflich ist auch der beste Pro\u00adgram\u00admier\u00ader nicht unfehlbar, und kein auch nur etwas kom\u00adplex\u00aderes Pro\u00adgramm wird im ersten Anlauf schon fehler\u00adfrei laufen.<\/p>\n<p>Das \u00fcbt f\u00fcrs richtige Leben: am Anfang ste\u00adht die Auf\u00adgaben\u00adstel\u00adlung (das Pro\u00adgramm, oder auch das Prob\u00adlem). Dann \u00fcber\u00adlegt man sich alle m\u00f6glichen L\u00f6sun\u00adgen und sucht die aus, die einem am erfol\u00adgver\u00adsprechend\u00adsten erscheint. Falls die dann doch die Auf\u00adgabe oder das Prob\u00adlem nicht hun\u00addert\u00adprozentig l\u00f6st, kom\u00admen die Nachko\u00adr\u00adrek\u00adtu\u00adrar\u00adbeit\u00aden, und man pro\u00adbierts auf eine andere Art und Weise noch ein\u00admal. Dies nen\u00adnt man einen iter\u00ada\u00adtiv\u00aden Ansatz, und wenn man die Tests und die Nachko\u00adr\u00adrek\u00adturen richtig ange\u00adht, kommt man meist recht schnell zu ein\u00ader zufrieden\u00adstel\u00adlen\u00adden L\u00f6sung.<\/p>\n<p>Wir sind n\u00e4m\u00adlich nicht unfehlbar, aber wir sind lern\u00adf\u00e4hig \u2014 und das ist im richti\u00adgen Leben auf jeden Fall eine sehr n\u00fct\u00adzliche F\u00e4higkeit, meinen sie nicht auch?<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Das erste Kon\u00adstrukt, das man gemein\u00adhin in ein\u00ader Pro\u00adgram\u00admier\u00adsprache lernt, ist meis\u00adtens ein If, auf Deutsch ein Wenn. Wenn a gr\u00f6ss\u00ader als b ist, mach etwas, das ist die Aus\u00adgangs\u00adba\u00adsis f\u00fcr viele Anf\u00e4nger\u00adpro\u00adgramme. Dabei lernt man meis\u00adtens auch ziem\u00adlich schnell, \u2026 <a href=\"https:\/\/evileu.de\/praxis-dr-inselfisch\/2018\/12\/10\/der-else-zweig-es-gibt-immer-eine-alternative\/\">Weit\u00ader\u00adlesen <span class=\"meta-nav\">\u2192<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"wp_typography_post_enhancements_disabled":false},"categories":[15,11],"tags":[],"_links":{"self":[{"href":"https:\/\/evileu.de\/praxis-dr-inselfisch\/wp-json\/wp\/v2\/posts\/146"}],"collection":[{"href":"https:\/\/evileu.de\/praxis-dr-inselfisch\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/evileu.de\/praxis-dr-inselfisch\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/evileu.de\/praxis-dr-inselfisch\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/evileu.de\/praxis-dr-inselfisch\/wp-json\/wp\/v2\/comments?post=146"}],"version-history":[{"count":1,"href":"https:\/\/evileu.de\/praxis-dr-inselfisch\/wp-json\/wp\/v2\/posts\/146\/revisions"}],"predecessor-version":[{"id":149,"href":"https:\/\/evileu.de\/praxis-dr-inselfisch\/wp-json\/wp\/v2\/posts\/146\/revisions\/149"}],"wp:attachment":[{"href":"https:\/\/evileu.de\/praxis-dr-inselfisch\/wp-json\/wp\/v2\/media?parent=146"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/evileu.de\/praxis-dr-inselfisch\/wp-json\/wp\/v2\/categories?post=146"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/evileu.de\/praxis-dr-inselfisch\/wp-json\/wp\/v2\/tags?post=146"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}