Java: gör en void-metod en "return;" i slutet?

Permalänk

Java: gör en void-metod en "return;" i slutet?

Hejsan.

Kommer domhär funktionerna att köras på samma sätt?

public void add(int a, int b) { System.out.println(a+b); }

public void add(int a, int b) { System.out.println(a+b); return; }

I den sista funktionen finns en return. Är det så att det finns en gömd return på den första funktionen där jag inte skrivit return?
Händer det något speciellt om man skriver "return;" i slutet av en void-funktion? Kanske programmet slutar "brutalare" eller "hårdare" om man skriver "return;"? Någon som vet? Jag hittar inget på google om dethär.

Visa signatur

PC: Windows 10 Pro x64 | ASUS Z270 ROG MAXIMUS IX CODE | Intel i7 7700K 4.2 GHz | Crucial 2x8GB@2400MHz | ASUS GeForce GTX 1070 8GB DUAL OC | Samsung 960 EVO 500GB | WD Red 2TB | Corsair TX650M 650W | Deepcool Tesseract ATX

Permalänk
Medlem

De kommer fungera på samma sätt. Med stor sannoliket kommer return-nyckelordet att tas bort av kompilatorn eftersom det är helt onödigt. Använd det inte på voidmetoder är min rekommendation; det är bara förvirrande.

Visa signatur

Kom-pa-TI-bilitet

Permalänk
Medlem
Skrivet av -8-DEAMON-8-:

Hejsan.

Kommer domhär funktionerna att köras på samma sätt?

public void add(int a, int b) { System.out.println(a+b); }

public void add(int a, int b) { System.out.println(a+b); return; }

I den sista funktionen finns en return. Är det så att det finns en gömd return på den första funktionen där jag inte skrivit return?
Händer det något speciellt om man skriver "return;" i slutet av en void-funktion? Kanske programmet slutar "brutalare" eller "hårdare" om man skriver "return;"? Någon som vet? Jag hittar inget på google om dethär.

Båda metoderna gör exakt samma sak och blir kompilerade till exakt samma kod. Alla metoder som är void gör en "osynlig" return om det inte finns någon.

//C

Permalänk
Medlem

Nej, det är ingen skillnad eftersom void-funktioner inte har något retur-värde.

EDIT: Som teknocide skriver så går det inte att returnera något med en void-funktion över huvud taget, testa t.ex att skriva return a; och se vad kompilatorn säger.

Visa signatur

P67 Deluxe :: i7 2600k :: 6970CF w/ Arctic Accelero Xtreme II :: 120GB SSD :: Obsidian 650D

Permalänk
Inaktiv
Skrivet av Teknocide:

De kommer fungera på samma sätt. Med stor sannoliket kommer return-nyckelordet att tas bort av kompilatorn eftersom det är helt onödigt. Använd det inte på voidmetoder är min rekommendation; det är bara förvirrande.

Nu är jag inte alls särskilt insatt i just Java, men return har ju faktiskt en användning i void-funktioner du inte tänker på!

void DoStuff(){ ... if(!PreChecks()){ Print("Stuff wen't wrong, wont do stuff"); return; } ... return; }

Förstår dock hur du tänker i att det ändå inte gör någon skillnad när returnen ligger i slutet av funktionen, men själv tycker jag rätt tvärtom att man alltid ska ha en return i slutet, trots att det rent programmatiskt inte är logiskt överhuvudtaget, så det det ändå någon sorts klarhet och tydlighet jämfört med om man aldrig har returns i slutet.

Men smaken är som baken!

Permalänk
Medlem
Skrivet av anon214934:

Men smaken är som baken!

Jag håller inte med, när man programmerar Java så programmerar man Java och ingenting annat. Det handlar inte om smak.

Det är väldigt oproffsigt att tillämpa en kodstil från ett språk då man programmerar ett annat. Att sätta return i slutet bara för att man kan är som att inleda namnen på sina privata metoder och variabler med understreck.

Visa signatur

I'm Winston Wolfe. I solve problems.

Permalänk
Medlem
Skrivet av anon214934:

Nu är jag inte alls särskilt insatt i just Java, men return har ju faktiskt en användning i void-funktioner du inte tänker på!

void DoStuff(){ ... if(!PreChecks()){ Print("Stuff wen't wrong, wont do stuff"); return; } ... return; }

Förstår dock hur du tänker i att det ändå inte gör någon skillnad när returnen ligger i slutet av funktionen, men själv tycker jag rätt tvärtom att man alltid ska ha en return i slutet, trots att det rent programmatiskt inte är logiskt överhuvudtaget, så det det ändå någon sorts klarhet och tydlighet jämfört med om man aldrig har returns i slutet.

Men smaken är som baken!

Nja, return på slutet ser lite fult ut i en void-metod. Precis som dina metodnamn DoStuff, PreChecks och Print ser lite fula ut - metoder och variabler skrivs med camelCase i Java

Permalänk
Inaktiv
Skrivet av dagbro:

Nja, return på slutet ser lite fult ut i en void-metod. Precis som dina metodnamn DoStuff, PreChecks och Print ser lite fula ut - metoder och variabler skrivs med camelCase i Java

Kan ju som sagt inte Java, visste btw inte att det var strict camelcase dessutom.. I C++ får man välja själv

Förövrigt så är det en funktion och inte en metod

Permalänk
Inaktiv
Skrivet av matti4s:

Jag håller inte med, när man programmerar Java så programmerar man Java och ingenting annat. Det handlar inte om smak.

Jag kan inte avgöra om du är seriöst eller inte.

Skrivet av matti4s:

Det är väldigt oproffsigt att tillämpa en kodstil från ett språk då man programmerar ett annat. Att sätta return i slutet bara för att man kan är som att inleda namnen på sina privata metoder och variabler med understreck.

Kan fortfarande int e avgöra om du är seriös eller inte. Hursomhelst:

class NativelyCompiledClass{ public: void IAmNative(){ return; } private: float m_TotallyBeginsWithM. }

Permalänk
Medlem
Skrivet av anon214934:

Förövrigt så är det en funktion och inte en metod

Ska vi fortsätta att påpeka detaljer så kan jag då nämna att funktioner inte finns i Java. Alla namngivna kodblock är metoder som sitter på klasser.

//C

Permalänk
Inaktiv
Skrivet av conio:

Ska vi fortsätta att påpeka detaljer så kan jag då nämna att funktioner inte finns i Java. Alla namngivna kodblock är metoder som sitter på klasser.

//C

Då kan vi ju fortsätta och säga att jag skrev C/C++, och inte Java. Precis som jag nämnt flera gånger; Jag kan inte Java.. Nog för mig i denna tråd.

Permalänk
Medlem
Skrivet av anon214934:

Då kan vi ju fortsätta och säga att jag skrev C/C++, och inte Java. Precis som jag nämnt flera gånger; Jag kan inte Java.. Nog för mig i denna tråd.

Du skrev att du inte är insatt i Java. Det tolkade jag som om att du inte visste hur Javas kompilator fungerar. Det var lite missledande att du inte nämnde att du syftade på andra språk i det första du skrev.

Visa signatur

I'm Winston Wolfe. I solve problems.

Permalänk
Hedersmedlem
Skrivet av anon214934:

Kan ju som sagt inte Java, visste btw inte att det var strict camelcase dessutom.. I C++ får man välja själv

Förövrigt så är det en funktion och inte en metod

Det är inte strikt påtvingat av kompilatorn men det följer inte kodningskonventionen för Java, som många tillämpar.
http://www.oracle.com/technetwork/java/codeconv-138413.html (kapitel 9).

Visa signatur

Forumregler | Feedbackforumet | Något som behöver modereras? Tryck på Anmäl inlägget och ge en anledning, någon moderator kommer granska inlägget och göra (egen) bedömning
"Fate. Protects fools, little children and ships named Enterprise." - Riker - ST:TNG