+ Antworten
Seite 5 von 5 ErsteErste ... 2 3 4 5
Ergebnis 81 bis 95 von 95

Thema: null-Verteufelung

  1. #81
    User Kilobyte
    Registriert seit
    30.07.2008
    Ort
    doubled-town
    Fachbeiträge
    131
    Genannt
    7 Post(s)
    Niemand behauptet, dass es keine Fehler mehr gibt, wenn man semantisch dem Compiler mitteilen kann, dass ein Feld keinen null Wert annehmen darf.

    Aber man faengt an, sich mehr Gedanken zu machen. Der typische Fall, wie er in Java passiert is doch dieser:
    Java Code:
    1.  
    2. public class Person {
    3.   private Adresse adresse;
    4.   pubic void setAdresse(Adresse adresse) { this.adresse = adresse; }
    5.   public Adresse getAdresse() { return adresse; }
    6.   public String toString() { return "Adresse: "+adresse.toString(); }
    7. }

    Und Boom!

    Wuerde man verbieten koennen, dass adresse null sein kann, so muesste man nachdenken, wie man das verhindern kann. Ja, mit einem Null-Objekt (was scheisse ist). Wie denn noch? So vielleicht?
    Code:
    class Person(val adresse:Adresse)
    Das zwingt dich, eine Adresse zu uebergeben und zwingt dich zum Nachdenken an die Stelle, wo du eine Person erzeugen willst. Nicht mehr und nicht weniger. Allein deshalb, wird der Code, der entsteht, imho deutlich angenehmer zu lesen, zu verstehen und zu debuggen. Zusaetzlich entstehen automatisch deutlich mehr immutable datastructures, da sich mit solchen das alles viel einfacher umsetzen laesst.

    Ich check grad echt nich, was eigentlich das Problem ist? Ich hab doch nur einen Hinweis gegeben, wie man einen riesigen Teil der Nullpointer-Problematik recht geschickt und ohne viel Krampf beseitigen koennte. Einfach weil man hiermit eine Moeglichkeit bekommt, dem Code zu sagen, dass der Rueckgabewert von getChildren() niemals null sein wird und deshalb da keinerlei Checks notwendig sind - und der Compiler sicherstellt, dass das wirklich so ist. Das ist mir persoenlich 1000x lieber, als das nur im JavaDoc stehen zu haben.
    "Drohende Diktaturen lassen sich nur bekämpfen, ehe sie die Macht übernommen haben. Es ist eine Angelegenheit des Terminkalenders, nicht des Heroismus." Erich Kästner

  2. #82
    Global Moderator Viertel Gigabyte Avatar von SlaterB
    Registriert seit
    06.08.2008
    Fachbeiträge
    2.701
    Genannt
    277 Post(s)
    wo eine Diskussion stattfindet besteht doch nicht unbedingt ein Problem

    ----

    Attribute direkt im Konstruktor zu setzen gibt es als Technik schon immer,
    verliert etwas an Attraktivität wenn Person 20 Attribute hat..

    wenn man das wollte kann man das genauso in Java verwenden, wo es gut passt auch im Einsatz,
    nur will mit man mit guten Grund nicht dazu gezwungen werden,

    wenn die veränderte Syntax für sich nicht viel tut,
    nur Zwang zu solchen ungewollten einschränkenden Möglichkeiten,
    bzw. allen anderen Code etwas 'häßlicher' darstellend, dann ja nicht ganz so attraktiv
    Hansa wird Meister

  3. #83
    Global Moderator Viertel Gigabyte Themenstarter

    Registriert seit
    05.08.2008
    Fachbeiträge
    4.905
    Genannt
    309 Post(s)
    Immutability und die Option eines private final Adresse sind ja unabhängig davon. (Wenn jemand eine Klasse "modelliert", indem er freigeistig-kreativ mal alles an Fields dort reinschreibt, was ihm gerade in den Sinn kommt, und dann in Eclipse unüberlegt auf "Generate Getters and Setters" klickt, macht er ja schon auf einer ganz anderen Ebene etwas falsch).

  4. Es bedanken sich:
    Timothy_Truckle (23.12.2016)
  5. #84
    User int Avatar von Katharsas
    Registriert seit
    02.03.2014
    Fachbeiträge
    42
    Genannt
    1 Post(s)
    Zitat Zitat von SlaterB Beitrag anzeigen
    Attribute direkt im Konstruktor zu setzen gibt es als Technik schon immer,
    verliert etwas an Attraktivität wenn Person 20 Attribute hat..
    Richtig, und genau das ist ja der Vorteil der Kotlin-Syntax, man braucht eben keinen Konstruktor (welcher final member initialisiert) oder Setter mit Null-Check oder oder einen Builder mit Null-Checks. Schalentier's Beispiel funktioniert auch als Setter OHNE Nullcheck.

    wenn man das wollte kann man das genauso in Java verwenden, wo es gut passt auch im Einsatz,
    nur will mit man mit guten Grund nicht dazu gezwungen werden,
    Auch ein Vorteil von der Kotlin-Syntax, man wird eben nicht dazu gezwungen, dank "?" Syntax.


    Ich werde in absehbarer Zeit nicht auf Kotlin wechseln (lerne stattdessen C++, da wäre man neidisch was man in Java so für Probleme hat), aber dieses Syntax-Design ist schlicht und einfach lediglich vorteilhaft im Vergleich zu Java, aka besser.
    Gothic Reloaded Mod: www.gothic-reloaded-mod.de

  6. #85
    User Megabyte Avatar von Timothy_Truckle
    Registriert seit
    01.08.2013
    Ort
    Wasserkuppe
    Fachbeiträge
    1.329
    Genannt
    85 Post(s)
    Blog-Einträge
    5
    Zitat Zitat von SlaterB Beitrag anzeigen
    Attribute direkt im Konstruktor zu setzen gibt es als Technik schon immer,
    verliert etwas an Attraktivität wenn Person 20 Attribute hat..
    Zitat Zitat von Marco13 Beitrag anzeigen
    Wenn jemand eine Klasse "modelliert", indem er freigeistig-kreativ mal alles an Fields dort reinschreibt, was ihm gerade in den Sinn kommt, und dann in Eclipse unüberlegt auf "Generate Getters and Setters" klickt, macht er ja schon auf einer ganz anderen Ebene etwas falsch
    Zitat Zitat von Katharsas Beitrag anzeigen
    Richtig, und genau das ist ja der Vorteil der Kotlin-Syntax, man braucht eben keinen Konstruktor
    Du sagts also, der Vorteil von Kotlin ist, dass einen der eigene Pfusch nicht so hart auf die Füße fällt?

    bye
    TT

  7. #86
    User int Avatar von Katharsas
    Registriert seit
    02.03.2014
    Fachbeiträge
    42
    Genannt
    1 Post(s)
    Zitat Zitat von Timothy_Truckle Beitrag anzeigen
    Du sagts also, der Vorteil von Kotlin ist, dass einen der eigene Pfusch nicht so hart auf die Füße fällt?
    Nein, der Vorteil steckt in dem Teil meines Satzes, den du nicht mitzitiert hast, bravo.
    Gothic Reloaded Mod: www.gothic-reloaded-mod.de

  8. #87
    User Viertel Megabyte Avatar von TMII
    Registriert seit
    19.02.2015
    Fachbeiträge
    313
    Genannt
    31 Post(s)
    Wenn ich mit einer Person rede und frage was für ein Auto sie hat und die Antwort ist "keins" - wie schreibt man das in Code ohne Null?
    Mit einer leeren Interface-Implementation vom Typ Auto?

    Wenn kein null dann darf man auch nicht das typische "-1" zurückgeben für Zahlenwerte. Ist das gleiche Prinzip.
    Geht in Kotlin hier auch nicht einfacher.
    Code:
    _/_/_/_/_/--_/------_/--_/_/_/--_/_/_/
    ---_/------_/_/--_/_/----_/------_/   
    --_/------_/--_/--_/----_/------_/    
    -_/------_/------_/----_/------_/     
    _/------_/------_/--_/_/_/--_/_/_/

  9. #88
    Unregistered
    Gast/Guest
    Neues Jahr fing gut an, hab die Woche drei Firmenwagen gegen die Wand gefahren.
    Erst ist mir ein Schild vor meinen Passat gerannt (kein Kommentar), am Folgetag den neuen 3er BMW auf einem Schutthaufen geparkt (nicht meine Schuld - war mitten auf der Straße vergessen worden) und dann wurde die hintere Hälfte meiner neuen E-Klasse von einem Laster geschluckt (*schock*).
    Ich frag mich welchen Wagen ich als nächstes bekomme? Einen G63 AMG 6x6? Was könnte schon auf Mercedes noch folgen?
    Mit einer leeren Liste, oder kennst du niemanden mit vielen Autos?

    Die Frage ist doch allerdings, kannst du mit der Antwort "kein Auto" umgehen. Klingt komisch, ist aber so, wir hatten früher kein Auto in der Familie um bei diesem Beispiel zu bleiben. Wenn dann jemand gefragt hat und das haben hin und wieder einige, dann waren die ganz schön überrascht. Ja, sogar so überrascht, dass wenn der Fragende programmiert hätte er einen Null-Check mal aussenvorgelassen hätte.

    Car car = null;
    while(car == null) {
    car = p.askAboutTheCar();
    }



    Clean Coder Blog

  10. #89
    Global Moderator Viertel Gigabyte Avatar von SlaterB
    Registriert seit
    06.08.2008
    Fachbeiträge
    2.701
    Genannt
    277 Post(s)
    Liste als Rückgabetyp, auch generisch, ist genau wie Optional eine Auflösung des OO-Prinzips,
    darf es keine Parameter/ Rückgabewerte mehr von ordentlichen Typen geben, Car, Person, String & Co?

    wenn alles nur noch Function, List, Stream oder Optional ist, dann hat man keinen Code mehr,
    das kann nie ein akzeptables Ziel sein,

    vereinzelt bzw. relativ oft, wo fachlich richtig, gibt es natürlich List, Set & Co.,
    aber das ist kein Baustein zur null-Vermeidung,
    Liste Ehepartner..
    Hansa wird Meister

  11. #90
    Premium User Halbes Megabyte Avatar von bygones
    Registriert seit
    17.07.2006
    Ort
    Dænemark
    Fachbeiträge
    572
    Genannt
    63 Post(s)
    Zitat Zitat von TMII Beitrag anzeigen
    Wenn ich mit einer Person rede und frage was für ein Auto sie hat und die Antwort ist "keins" - wie schreibt man das in Code ohne Null?
    mit Optional in Java
    Test Driven Development is like sex. If you dont like it, you probably aint doing it right

    You should never assume, because you make an ass of u and me

  12. #91
    User Viertel Megabyte Avatar von inv_zim
    Registriert seit
    31.07.2013
    Ort
    Rhein-Main Gebiet
    Fachbeiträge
    361
    Genannt
    31 Post(s)
    Zitat Zitat von SlaterB Beitrag anzeigen
    wenn alles nur noch Function, List, Stream oder Optional ist, dann hat man keinen Code mehr
    Lisp und Clojure Entwickler widersprechen

    Wieso muss denn immer so absolut diskutiert werden? Wieso muss jedes Konstrukt zu Objektorientierung passen und andersrum?
    I am obsessed with the ancient science of "puzzle-ometry". I have discovered that within puzzles lies the secret of human intelligence, that which separates us from the common beast.

  13. #92
    Global Moderator Viertel Gigabyte Avatar von SlaterB
    Registriert seit
    06.08.2008
    Fachbeiträge
    2.701
    Genannt
    277 Post(s)
    ähm ja, zwei Konstanten sind hier nun mal fundamental :

    Programmiersprache Java - Alternativen können erwähnt werden, aber es läuft auf die Lage in Java hinaus

    objektorientierte Programmierung - Alternativen wie alles als Stream von Bytes kann man vorschlagen/ verwenden,
    aber an OO muss sich alles messen, das ist der Kern des Erfolgs von Java,
    das ist der Inhalt von 95%+ aller Tutorials, Unis, Firmenvorstellungen,

    Klassen, Interface, Polymorphie, Attribute, Beans, Methoden, Rückgabewerte, Kontrollstrukturen & Co.
    (edit: + null )


    edit: Lisp & Co. sind legitime eigene Programmieransätze, aber Java bzw. OO ist nun mal was anderes,
    bei Lisp schlägt ja auch niemand Einführung von Klassen oder was auch immer vor
    Geändert von SlaterB (17.01.2017 um 10:49 Uhr)
    Hansa wird Meister

  14. #93
    User Viertel Megabyte Avatar von inv_zim
    Registriert seit
    31.07.2013
    Ort
    Rhein-Main Gebiet
    Fachbeiträge
    361
    Genannt
    31 Post(s)
    Zitat Zitat von SlaterB Beitrag anzeigen
    hm ja, zwei Konstanten sind hier nun mal fundamental
    Okay, wenn wir nur im Kontext Java diskutieren ist das natürlich etwas anderes.

    So sehr ich die Nullable Konstrukte unterstütze und mag, gibt es in Java das Problem dass die API und auch 90% der verfügbaren Bibliotheken dieses Feature nicht unterstützen. Ich weiß also ab einer gewissen Abstraktionsschicht über meinen Bibliotheken dass ein Call der kein nullable zurückgibt auch kein null zurückgeben kann, aber das weiß ich nicht für mein Hibernate, meine Commons Bibliotheken oder das meiste andere was ich aufrufe. So wirklich ist das Feature doch nur, wenn ich nicht erlaube es zu umgehen, oder?
    I am obsessed with the ancient science of "puzzle-ometry". I have discovered that within puzzles lies the secret of human intelligence, that which separates us from the common beast.

  15. #94
    Global Moderator Viertel Gigabyte Avatar von SlaterB
    Registriert seit
    06.08.2008
    Fachbeiträge
    2.701
    Genannt
    277 Post(s)
    da die Frage so direkt an mich gerichtet klingt, sehe ich mich zu einer Antwort genötigt,
    die gerade nur heißen kann dass ich nicht ganz mitkomme,

    'nullable feature'?, die Suchmaschinen-Decke ist recht dünn,
    wenn Nullable-Annotation, dann bemerkenswerter Themenwechsel, bisher/ zuletzt nicht wirklich Thema hier gewesen?

    die Nullable-Annotation ist optional, kein vollständiges Konzept wie Kotlin-Syntax, gewiss, das ist der Stand, viel nicht damit anzufangen, etwa aus Hibernate, richtig
    was war die Frage dazu? oder wohl schon bestätigt

    ------

    von mir mal wieder mehr oder weniger passend als Mix reingeworfen:
    eine Frage ist ob man null komplett ausradieren will und wenn ja wie
    (Konstruktor mit 20 Attributen etwa reichlich ungünstiges Konzept),

    zu Verzicht von null gezwungen zu werden ist kein gutes Argument,

    meiner Ansicht nach sind null-Werte ganz normal in normaler OO-Programmierung,
    alles auf Optional oder List oder anders wäre nicht schön,

    nicht in Java, man kann ja funktionial programmieren, anderes System, andere Sprache,

    in Java braucht es aber besser ein gemeinsames Programmiersystem,
    auch andere Programme/ Libraries will man bei Blick in Quellcode verstehen können,
    sollten nicht fremdes Kauderwelsch sein obwohl in Java geschrieben,

    wenn Nullable-Annotation oder Kotlin-Syntax, dann diese wahrscheinlich in vielen Programmteilen,
    klingt nicht allzu hilfreich, wobei Kotlin-Syntax auf jeden Fall besser als Annotation und die paar Fragezeichen sicher so ziemlich das Minimum/ Optimum darstellen
    Hansa wird Meister

  16. #95
    User Viertel Megabyte Avatar von inv_zim
    Registriert seit
    31.07.2013
    Ort
    Rhein-Main Gebiet
    Fachbeiträge
    361
    Genannt
    31 Post(s)
    Sollte kein Themenwechsel sein, ich meinte natürlich Optional.
    I am obsessed with the ancient science of "puzzle-ometry". I have discovered that within puzzles lies the secret of human intelligence, that which separates us from the common beast.

+ Antworten Thema als "gelöst" markieren
Seite 5 von 5 ErsteErste ... 2 3 4 5

Direkt antworten Direkt antworten

Wie lautet das letzte Wort am Ende dieser Webseite?

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Ähnliche Themen

  1. Image == null, DrawImage
    Von Quiji im Forum AWT, Swing, JavaFX & SWT
    Antworten: 5
    Letzter Beitrag: 10.06.2015, 09:28
  2. UNIQUE-Index und NULL
    Von SlaterB im Forum Datenbankprogrammierung
    Antworten: 5
    Letzter Beitrag: 05.06.2014, 09:22
  3. Antworten: 12
    Letzter Beitrag: 21.11.2013, 11:15
  4. EntityManager ist immer NULL
    Von mfe_ im Forum Java Enterprise Edition (Java EE)
    Antworten: 4
    Letzter Beitrag: 06.08.2013, 13:28
  5. getBaseLocation() == null?
    Von ???? im Forum DockingFrames
    Antworten: 10
    Letzter Beitrag: 02.09.2010, 04:29

Berechtigungen

  • Neue Themen erstellen: Ja
  • Themen beantworten: Ja
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •