Abo
  1. Foren
  2. Kommentare
  3. Software-Entwicklung
  4. Alle Kommentare zum Artikel
  5. › Programmiersprache für…

Lokale Kopien von Funktionsparametern

  1. Thema

Neues Thema Ansicht wechseln


  1. Lokale Kopien von Funktionsparametern

    Autor: WurstCase 28.09.17 - 16:28

    "In Kotlin gilt die Konvention, möglichst immer alle genutzten Variablen auch tatsächlich als var zu definieren. Das betrifft auch die übergebenen Parameter, die der Rumpf von ggt() daher für die Berechnung in die Variablen a und b kopiert."

    Was ist denn genau der Vorteil dieser Konvention, Funktionsparameter innerhalb der Funktion in neue lokale Variablen zu kopieren? Und wie ist der erste Satz genau zu verstehen? Können Variablen/Konstanten auch anders (ohne var/val) deklariert werden, abgesehen von der Funktionsparameterliste?

  2. Re: Lokale Kopien von Funktionsparametern

    Autor: Nocta 29.09.17 - 10:49

    Ich habe noch nie Kotlin benutzt, aber ich verstehe das so, dass Variablen die man verändert, eben var sein müssen. Wenn man nun alle Variablen, die man tatsächlich in der Funktion verändert als var definiert, und den Rest als val hat man drei Vorteile:

    1) Der Compiler kann den Code mit "val" Werten ähnlich zu dem "const" Qualifier in anderen Sprachen besser optimieren.
    2) Der Nutzer weiß, dass die val Werte konstant sind und sich nicht ändern und der Nutzer weiß, dass sich alle anderen Variablen ändern werden (bzw ändern können) und er davon ausgehen muss, dass sie nach dem Funktionsaufruf tatsächlich andere Werte enthalten.
    3) Es werden nur Werte kopiert, die auch kopiert werden müssen, was einen minimalen Speicher und Geschwindigkeitsvorteil bieten sollte.

    Soweit jedenfalls aus meinem allgemeinen Verständnis heraus, von Kotlin speziell habe ich keine Ahnung.

  3. Re: Lokale Kopien von Funktionsparametern

    Autor: Das Osterschnabeltier 29.09.17 - 11:34

    Nocta schrieb:
    --------------------------------------------------------------------------------
    > Ich habe noch nie Kotlin benutzt, aber ich verstehe das so, dass Variablen
    > die man verändert, eben var sein müssen. Wenn man nun alle Variablen, die
    > man tatsächlich in der Funktion verändert als var definiert, und den Rest
    > als val hat man drei Vorteile:
    >
    > 1) Der Compiler kann den Code mit "val" Werten ähnlich zu dem "const"
    > Qualifier in anderen Sprachen besser optimieren.
    > 2) Der Nutzer weiß, dass die val Werte konstant sind und sich nicht ändern
    > und der Nutzer weiß, dass sich alle anderen Variablen ändern werden (bzw
    > ändern können) und er davon ausgehen muss, dass sie nach dem
    > Funktionsaufruf tatsächlich andere Werte enthalten.
    > 3) Es werden nur Werte kopiert, die auch kopiert werden müssen, was einen
    > minimalen Speicher und Geschwindigkeitsvorteil bieten sollte.
    >
    > Soweit jedenfalls aus meinem allgemeinen Verständnis heraus, von Kotlin
    > speziell habe ich keine Ahnung.

    Zu 1: Jeder vernünftige Compiler hat heute Constant Propagation und findet das auch selber heraus.

  4. Re: Lokale Kopien von Funktionsparametern

    Autor: MoonShade 30.09.17 - 11:16

    Andere Sprachen wie Skala halten das genauso mit der Konvention. Zitat aus Learning Skala:

    > For most languages [...] [using variables] is the typical pattern for working with named, assignable memory storage. [...] In Skala, values are preferred over variables by convention, due to the stability and predictability they bring to source code.

    > When you define a value you can be assured that it will retain the same value regardless of any other code that may access it. Reading and debugging code is easier when a value assigned at the beginning of a code segment is unchanged through the end of the code segment.

    > Finally, when working with data that may be available for the life span of an application, or accessible from concurrent or multithreaded code, an immutable value will be more stable and less prone to errors than mutable data that may be modified at unexpected times.

  5. Re: Lokale Kopien von Funktionsparametern

    Autor: tomate.salat.inc 30.09.17 - 12:15

    WurstCase schrieb:
    --------------------------------------------------------------------------------
    > Was ist denn genau der Vorteil dieser Konvention, Funktionsparameter
    > innerhalb der Funktion in neue lokale Variablen zu kopieren?

    Weil sich Parameter nicht ändern sollten. Besonders drastisch ist das, wenn du mit Code zu tun hast, wo Methoden gerne mal > 100 Zeilen lang sind. Das an sich ist schon sehr kacke. Besonders blöd wirds dann, wenn du die Methode erweitern darfst und sich irgendwo dazwischen in einem if plötzlich der Wert des Parameters ändert. Das ist dann im besten Fall noch ein Edge-Case --> BUG!

  6. Re: Lokale Kopien von Funktionsparametern

    Autor: horotab 05.10.17 - 11:09

    Wer Methoden schreibt, die so lang sind, mach idR sowieso etwas falsch. Im Idealfall hat jede Methode genau eine Aufgabe, das ist eine saubere Struktur die auch einfach zu Debuggen ist.

  1. Thema

Neues Thema Ansicht wechseln


Um zu kommentieren, loggen Sie sich bitte ein oder registrieren Sie sich. Zum Login

Stellenmarkt
  1. ING-DiBa AG, Nürnberg
  2. ORBIT Gesellschaft für Applikations- und Informationssysteme mbH, Bonn
  3. Kliniken Dritter Orden gGmbH, München
  4. Senat der Freien und Hansestadt Hamburg - Senatskanzlei, Hamburg

Golem pur
  • Golem.de ohne Werbung nutzen

Anzeige
Hardware-Angebote
  1. (reduzierte Überstände, Restposten & Co.)
  2. 61,90€


Haben wir etwas übersehen?

E-Mail an news@golem.de


iPhone 11 im Test: Zwei Kameras beim iPhone reichen
iPhone 11 im Test
Zwei Kameras beim iPhone reichen

Das iPhone Xr war der heimliche Verkaufsschlager der letzten iPhone-Generation, mit dem iPhone 11 bekommt das Gerät nun einen Nachfolger. Im Test zeigt sich, dass Käufer auf die Kamerafunktionen der Pro-Modelle nicht verzichten müssen, uns stört auch das fehlende dritte Objektiv nicht - im Gegensatz zum Display.
Ein Test von Tobias Költzsch

  1. China Apple entfernt Hongkonger Protest-App aus App Store
  2. Smartphone Apple bietet kostenlose Reparatur für iPhone 6S an
  3. iPhone und iPad Apple forscht an fühlbarer Displaytastatur

Medienkompetenz: Was, Ihr Kind kann nicht programmieren?
Medienkompetenz
Was, Ihr Kind kann nicht programmieren?

Lesen, schreiben, rechnen und coden: Müssen Kinder programmieren lernen? Vielleicht nicht. Aber sie sollen verstehen, wie Computer funktionieren. Wie das am besten geht.
Von Jakob von Lindern

  1. 5G Milliardenlücke beim Digitalpakt Schule droht
  2. Digitalpakt Schuldigitalisierung kann starten
  3. Whatsapp bei Lehrern Kultusministerkonferenz pocht auf Datenschutz

WLAN-Kameras ausgeknipst: Wer hat die Winkekatze geklaut?
WLAN-Kameras ausgeknipst
Wer hat die Winkekatze geklaut?

Weg ist die Winkekatze - und keine unserer vier Überwachungskameras hat den Dieb gesehen. Denn WLAN-Cams von Abus, Nest, Yi Technology und Arlo lassen sich ganz einfach ausschalten.
Von Moritz Tremmel

  1. Wi-Fi 6 Router und Clients für den neuen WLAN-Standard
  2. Wi-Fi 6 und 802.11ax Was bringt der neue WLAN-Standard?
  3. Brandenburg Vodafone errichtet 1.200 kostenlose WLAN-Hotspots

  1. China: Internetanschluss oder Telefonnummer nur gegen Gesichtsscan
    China
    Internetanschluss oder Telefonnummer nur gegen Gesichtsscan

    In China soll es ab Dezember Telefonnummern oder Internet-Anschlüsse nur noch mit Identitätsfeststellung per Gesichtserkennung geben. Eine entsprechende Regelung wurde kürzlich erlassen und soll auch für bereits registrierte Anschlüsse gelten.

  2. Nach Attentat in Halle: Seehofer möchte "Gamerszene" stärker kontrollieren
    Nach Attentat in Halle
    Seehofer möchte "Gamerszene" stärker kontrollieren

    Nach dem rechtsextremistisch motivierten Attentat in Halle gibt Bundesinnenminister Horst Seehofer in einem Interview der "Gamerszene" eine Mitschuld und kündigte mehr Überwachung an. Kritiker werfen ihm eine Verharmlosung des Rechtsextremismus und Inkompetenz vor.

  3. Siri: Apple will Sprachbefehle wieder auswerten
    Siri
    Apple will Sprachbefehle wieder auswerten

    Nach einem weltweiten Stopp möchte Apple die Sprachbefehle der Siri-Nutzer wieder auswerten - diesmal jedoch mit expliziter Zustimmung durch den Nutzer. Das gilt allerdings nur für Audioaufnahmen, die in Text umgewandelten Mitschnitte möchte Apple weiter ungefragt auswerten.


  1. 15:37

  2. 15:15

  3. 12:56

  4. 15:15

  5. 13:51

  6. 12:41

  7. 22:35

  8. 16:49