Camping_RIDER: Rekursive Lösung in JavaScript

Beitrag lesen

Aloha ;)

    // provide default value for startnumber
    if (startnumber === undefined) startnumber = 1;

Der schreibfaule Javascript-Programmierer kürzt sowas gern ab zu

startnumber = startnumber || 1;

Guter Hinweis! Ich hab tatsächlich jetzt schon ein paar Tage kein „echtes“ JavaScript mehr geschrieben, weil ich in der letzten Zeit durch meine Bachelorarbeit mehr mit TypeScript am Hut hatte.

Wenn man davon ausgehen kann, dass diese Funktion lediglich eine Hilfsfunktion der eigentlich aufgerufenen findRemainingNumbers() ist, dann sind diese Prüfungen der übergebenen Parameter so hilfreich, wie sich die Schuhe anzuziehen und beim anschließenden Verlassen des Hauses nochmal zu prüfen, ob man Schuhe anhat.

Andersrum wird ein Schuh draus (pun intended), denn...

Wenn du allerdings davon ausgehst, dass sie soweit von nutzen ist, sie aus anderen Kontexten aufzurufen, dann wird man das wohl auch eher so machen müssen.

Genau. Für mich war findRemainingElements die allgemeine Grundfunktionalität (z.B., um ein Array mit Gefangenen-Objekten zu übergeben) und findRemainingNumbers die Spezialfunktion für n natürliche Zahlen. Aber klar, demnach hätte man sich zumindest für k die Überprüfung bei findRemainingNumbers auch sparen können, denn k wird nur durchgereicht. Was die anderen Parameter angeht sind die Überprüfungen nicht ohne weiteres obsolet, auch wenn der Gedanke

Wer Garbage übergibt, kann nicht damit rechnen, keinen Garbage zurückzubekommen.

natürlich auch seine Berechtigung hat. Es kommt eben immer drauf an, gegenüber welchen Fehleingaben die Funktionalität wie gewappnet sein soll.

Beim Entwickeln meiner Lösung hatte ich mir eine nicht eintretende Abbruchbedingung eingehandelt. Das hat dem Browser ganz schön zugesetzt. Solche Fälle vermeiden zu können, ist auf alle Fälle wert, eine entsprechende Prüfung einzubauen.

Ja. Manche Prüfungen mögen nicht zwingend notwendig sein, bringen aber doch einiges an Komfort für den Entwickler, der damit arbeiten muss. JavaScript hat ja ganz grundsätzlich das „Problem“, nicht typisiert zu sein. In einer typisierten Sprache erledigen sich viele Überprüfungen schon von ganz alleine, daher halte ich es nicht für unangebracht, im nicht typisierten JavaScript solche Überprüfungen „manuell“ durchzuführen.

Allerdings ist mein Code da an der Stelle auch nicht ganz päpstlich, denn statt undefined zurückzugeben sollte man dort vielleicht eher mit errors um sich werfen.

Grüße,

RIDER

--
Camping_RIDER a.k.a. Riders Flame a.k.a. Janosch Zoller
# Twitter # Steam # YouTube # Self-Wiki # Selfcode: sh:) fo:) ch:| rl:) br:^ n4:? ie:% mo:| va:) js:) de:> zu:} fl:( ss:) ls:[