String-Parameter statt Integer

Bitte aktiviere JavaScript!
Status
Nicht offen für weitere Antworten.
@sCream_19 Nimm als Parametertyps Strings und setze einen kleinen Parser davor, dann ist Dein Quelltext sozusagen vor unsachgemäßer Verwendung geschützt. Minimale Geschwindigkeitsverringerungen sind denke ich mal hinnehmbar/akzeptabel. Und starte nur Anwendungen die auch vollständig kompilierbar sind. ;)
Später kann ich mir das mal ansehen....
 
Warum verwenden wir nicht alle nur noch Strings für alles? Exceptions zur Laufzeit sind doch viiieeel besser als sofortige Compilerfehler zur Übersetzungszeit... NICHT!
 
Da magst du recht haben. Allerdings ist einen String Parameter für eine Zahl zu nutzen jetzt nicht unbedingt best practise..
 
Nimm als Parametertyps Strings und setze einen kleinen Parser davor, dann ist Dein Quelltext sozusagen vor unsachgemäßer Verwendung geschützt.
Jetzt probiere ich das schon seit Stunden aber es will einfach nicht klappen:
Java:
public void doSomething(String param) { ... }

doSomething("X"); // geht
doSomething(3); // error: incompatible types: int cannot be converted to String
Irgendwie muss ich immer noch das passende Literal angeben :( Was soll ich nur tun?
 
Doch doch, das kommt häufiger als von dir angenommen vor. ;)
Es mag durchaus vorkommen. Aber das bedeutet nicht, dass es gut oder wünschenswert ist, es so zu machen.
Gerade bei Datenbanken findet man bei Anfängern die massive Nutzung von "Strings". Egal was, man speichert es als varchar.

Und als Entwickler hat man Code nun einmal korrekt anzugeben. Wenn ich Java Programme schreiben will, dann muss ich nun einmal die Syntax von Java verwenden.

Wenn man unbedingt die führende 0 haben wollte, dann würde das also im Aufruf etwas sein wie Integer.parseInt("08"). Und das aber bitte nicht direkt im Code sondern herausgezogen in einer Konstanten. Aber selbst da würde ich überlegen, ob die notwendig ist bezüglich lesbarer Code ...

Und ja - es gibt einen Bereich, in dem sowas in der Art tatsächlich vorkommt: Wenn die Zahl aus aus einer Config-Datei gelesen wird. Dann liegt der Wert als String vor und muss gelesen und ebenfalls in ein Integer gewandelt werden.
Aber das Szenario ist dann halt auch wieder komplett unterschiedlich, denn es geht dann um eine Eingabe zur Laufzeit.
 
Wo meinst Du, dass meine Aussage widersprüchlich ist? Dann erläutere ich es Dir, denn Du scheinst Verständnisprobleme zu haben.
 
denn Du scheinst Verständnisprobleme zu haben
Ne habe ich nicht.

Wenn man unbedingt die führende 0 haben wollte, dann würde das also im Aufruf etwas sein wie Integer.parseInt("08")
Das widerspricht dem, String nicht verwenden zu wollen.

Dann erläutere ich es Dir
Nein danke, das Thema ist für mich gegessen. Vielleicht solltest Du etwas an Deiner Kritikfähigkeit arbeiten. Die ist nämlich nicht gegeben.
 
Die Diskussion hätten wir auch mit einer Wand führen können .. da wäre vielleicht mehr dabei raus gekommen :eek:
 
Das widerspricht dem, String nicht verwenden zu wollen.
Ich habe nie behauptet, dass ich Strings nicht verwenden will. Das alleine sollte Dir schon zu denken geben...

Schau Dir Deine ursprüngliche Idee an: Du wolltest die Parameter der Funktion anpassen:
@sCream_19 Nimm als Parametertyps Strings und setze einen kleinen Parser davor, dann ist Dein Quelltext sozusagen vor unsachgemäßer Verwendung geschützt. Minimale Geschwindigkeitsverringerungen sind denke ich mal hinnehmbar/akzeptabel. Und starte nur Anwendungen die auch vollständig kompilierbar sind. ;)
Später kann ich mir das mal ansehen....
Und genau das ist eben nicht Zielführend und daher haben wir davon explizit abgeraten.

Und dann habe ich mir erlaubt darauf hinzuweisen, dass
- diese Konstanten mitten im Code nicht so sinnvoll sind und
- wenn dann eine Konvertierung direkt in der Konstanten erfolgen sollte.

Wenn man das mit der Konstanten nicht wollte, dann hätte man immer noch eine unveränderte Funktion aber man hätte als Parameter ein Integer.parse("08") im Parameter. In diesem Fall aber macht dies relativ wenig Sinn, denn ein einfaches 8 ist immer noch lesbarer als ein Integer.parse("08"). Aber es gibt natürlich entsprechende Beispiele, wo dies eben explizit notwendig ist.

Aber warum denn dann das Konvertieren nicht in der eigentlichen Funktion? Technisch würde das ja funktionieren.
Aber die Funktion benötigt ja eigentlich Integern. Und die Daten liegen normalerweise als Integer vor. Hier geht es also weniger darum, dass der Programmcode mit Strings umgehen können muss, sondern dass eine Konstante vom Programmierer anders angegeben werden möchte ...
Selbst wenn es im Program notwendig sein sollte, dass auch Parameter mit String notwendig sein könnten, dann wäre wohl das Pattern, dass eine zusätzliche Methode geschrieben, die dann konvertiert und dann die eigentliche Methode aufruft. Nur wegen dem lesbaren Literal wäre dies aber deutlicher Mehraufwand weil eine weitere Funktion getestet werden muss...


Nein danke, das Thema ist für mich gegessen. Vielleicht solltest Du etwas an Deiner Kritikfähigkeit arbeiten. Die ist nämlich nicht gegeben.
Also ich lasse mich gerne kritisieren. Und ich habe hier im Forum auch schon das eine oder andere aus Diskussionen mitgenommen. Aber hier ist es doch eher umgedreht: Du hattest eine Idee, die von anderen für nicht gut gehalten wurde. Aber die Kritik nimmst DU nicht an. Und wirfst dann vor, dass ich mir selbst widerspreche....

Aber nein ... Deine Beispiele sind "geheim" ... und jetzt ist das Thema für Dich gegessen .... ja vielen Dank auch! Und ich habe dann hier jetzt einen Troll gefüttert oder wie? Also hätte ich die Erläuterungen sparen können und einfach einen Fisch rüber schieben können?
 
Status
Nicht offen für weitere Antworten.
Passende Stellenanzeigen aus deiner Region:

Neue Themen

Oben