/ Forside / Teknologi / Udvikling / Java / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java
#NavnPoint
molokyle 3688
Klaudi 855
strarup 740
Forvirret 660
gøgeungen 500
Teil 373
Stouenberg 360
vnc 360
pmbruun 341
10  mccracken 320
Anonyme kode blokke i Java?
Fra : Kenneth Ahn Jensen


Dato : 12-05-04 15:31

Jeg sidder og læser noget Java kode, og er gentagne gange stødt på anonyme
kodeblokke midt i metoder. Det er altså ikke blokke som afgrænser
kontrolstrukturer som if, while, for eller try/catch blokke, men blot
"nøgne" blokke.
Måske har jeg været fraværende den dag dette fænomen blev behandlet i
skolen, men jeg synes ikke at kunne huske hvad effekten af disse er.
Eksempelvis kan det se sådan her ud:

public class SomeClass {
p.s.void main( String[] args) {
yadayada();
if( true)
blah( foo );

//her kommer en kodeblok
{
doThis();
doThat( bar );
if( true ) undoThat();
}
// nu er den slut

sidsteMetodekald();
}
}

Hvilken forskel er der på om blokken er en blok, eller bare 3 linier kode,
uden tuborg-klammerne?

PFT.
--
Mvh Kenneth

Fjern en mail fra min emailadresse.
Remove one mail from my email address.

 
 
Thorbjoern Ravn Ande~ (12-05-2004)
Kommentar
Fra : Thorbjoern Ravn Ande~


Dato : 12-05-04 15:37

Kenneth Ahn Jensen <jakabov@mailmail.dk> writes:

> Måske har jeg været fraværende den dag dette fænomen blev behandlet i
> skolen, men jeg synes ikke at kunne huske hvad effekten af disse er.

Så vidt jeg lige kan huske, er den eneste forskel at det afgrænser
virkefeltet for variable. Variable erklæret inden i blokken, kan ikke
ses udenfor.

Herudover giver det en visuel tilkendegivelse af at dette er en samlet
klump kode.
--
Thorbjørn Ravn Andersen
http://unixsnedkeren.dk/ravn

Kenneth Ahn Jensen (12-05-2004)
Kommentar
Fra : Kenneth Ahn Jensen


Dato : 12-05-04 15:44

Thorbjoern Ravn Andersen wrote:

> Kenneth Ahn Jensen <jakabov@mailmail.dk> writes:
>
>> Måske har jeg været fraværende den dag dette fænomen blev behandlet i
>> skolen, men jeg synes ikke at kunne huske hvad effekten af disse er.
>
> Så vidt jeg lige kan huske, er den eneste forskel at det afgrænser
> virkefeltet for variable. Variable erklæret inden i blokken, kan ikke
> ses udenfor.

Det passer meget godt - bekræftet med hurtig compile-test. :)
Ikke at jeg forstår hvad man skal bruge det til - i hvert fald ikke i det
kode jeg sidder med..

> Herudover giver det en visuel tilkendegivelse af at dette er en samlet
> klump kode.

Ok - jeg plejer nu bare at bruge kommentarer, men hver sin smag.

Tak for (hurtigt) svar.

--
Mvh Kenneth

Fjern en mail fra min emailadresse.
Remove one mail from my email address.

@(FILTER)Lybecker.co~ (13-05-2004)
Kommentar
Fra : @(FILTER)Lybecker.co~


Dato : 13-05-04 11:48

Kenneth Ahn Jensen wrote:

> Thorbjoern Ravn Andersen wrote:
>
>
>>Kenneth Ahn Jensen <jakabov@mailmail.dk> writes:
>>
>>
>>>Måske har jeg været fraværende den dag dette fænomen blev behandlet i
>>>skolen, men jeg synes ikke at kunne huske hvad effekten af disse er.
>>
>>Så vidt jeg lige kan huske, er den eneste forskel at det afgrænser
>>virkefeltet for variable. Variable erklæret inden i blokken, kan ikke
>>ses udenfor.
>
>
> Det passer meget godt - bekræftet med hurtig compile-test. :)
> Ikke at jeg forstår hvad man skal bruge det til - i hvert fald ikke i det
> kode jeg sidder med..

Det er en måde, at forkorte levetiden på resourcekrævende objecter.
Objecterne kan hurtigere opsamles af GC og derved frigive hukommelse.


Anders Lybecker

kgc (14-05-2004)
Kommentar
Fra : kgc


Dato : 14-05-04 06:25

> Det er en måde, at forkorte levetiden på resourcekrævende objecter.
> Objecterne kan hurtigere opsamles af GC og derved frigive hukommelse.
Det lyder rigtigt - har ikke tænkt over det før. Man kunne vel forøvrigt
opnå det samme ved at sætte sine referencer til objekterne til null når
man er færdig med dem.

Et andet formål kunne måske være, at gøre det muligt at "genbruge"
variabel-navne (hvis nu man har en dårlig fantasi). Jeg ville dog ikke
personligt anbefale dette (pludselig tager man måske fejl af hvordan en
variabel p.t. er erklæret).

/Kasper

--
Besøg mig på nettet: http://www.kaspershjemmeside.dk

Jonas Kongslund (14-05-2004)
Kommentar
Fra : Jonas Kongslund


Dato : 14-05-04 09:29

On Friday 14 May 2004 07:24, kgc wrote:
> Et andet formål kunne måske være, at gøre det muligt at "genbruge"
> variabel-navne (hvis nu man har en dårlig fantasi).

Det lader sig ikke gøre i Java. Der er formentligt tale om et bevidst
designvalg da det sjældent er en god ide.

--
Jonas Kongslund

kgc (14-05-2004)
Kommentar
Fra : kgc


Dato : 14-05-04 10:36

>>Et andet formål kunne måske være, at gøre det muligt at "genbruge"
>>variabel-navne (hvis nu man har en dårlig fantasi).
>
>
> Det lader sig ikke gøre i Java. Der er formentligt tale om et bevidst
> designvalg da det sjældent er en god ide.
Jeg er helt enig i, at det sjældent er en god idé, men det kan nu
sagtens lade sig gøre ved brug af anonyme kodeblokke - men ikke i den
samme blok (måske misforstår vi hinanden her?).

Til tider gør man det måske ubevidst (f.eks. tællere i to på hinanden
følgende for-løkker, som måske ikke altid er af samme type, men som
alligevel begge hedder f.eks. "i").

Eksempel (der kompilerer og kører som forventet):

public class BadVarNames {
   public static void main(String[] args) {
      { //Start på anonym kodeblok
         int dumt = 5;
         //blah
         System.out.println(dumt);
      }
      String dumt;
      //blah blah
      dumt = "Dette er en string!";      
      System.out.println(dumt);
   }
}

Her betyder den anonyme kodeblok, at variabelnavnet "dumt" kan bruges
først til en int og siden til en String. Ikke særligt smart eller nyttigt.

Mvh. Kasper

--
Besøg mig på nettet: http://www.kaspershjemmeside.dk

Ukendt (14-05-2004)
Kommentar
Fra : Ukendt


Dato : 14-05-04 12:47

Det kan nu være nyttigt, hvis man endnu ikke har refactored sine
switch-statements. Alle case's ligger nemlig i samme scope, og det kan
derfor blive mere eller mindre umuligt at holde styr på hvilke variabler,
der er interessante for hvilket scope.

Ja, mit udsagn er måske ikkeså meget:
"Det kan være interessant at opdele kodeblokke for at kunne genbruge
sine lokale variable."

Som det er:
"Det kan være interessant at sætte hvert af sine 'case' i {} blokke -
hvis man endnu har al koden stående her frem for i metoder. Hvilket iøvrigt
gør det forholdsvist let at refactor'e det ud i metoder, hvorved switch'en
bliver til en jumptable."

/nobody important

"kgc" <news1@kaspershjemmeside.dk> wrote in message
news:40a492be$0$462$edfadb0f@dread14.news.tele.dk...
> >>Et andet formål kunne måske være, at gøre det muligt at "genbruge"
> >>variabel-navne (hvis nu man har en dårlig fantasi).
> >
> >
> > Det lader sig ikke gøre i Java. Der er formentligt tale om et bevidst
> > designvalg da det sjældent er en god ide.
> Jeg er helt enig i, at det sjældent er en god idé, men det kan nu
> sagtens lade sig gøre ved brug af anonyme kodeblokke - men ikke i den
> samme blok (måske misforstår vi hinanden her?).
>
> Til tider gør man det måske ubevidst (f.eks. tællere i to på hinanden
> følgende for-løkker, som måske ikke altid er af samme type, men som
> alligevel begge hedder f.eks. "i").
>
> Eksempel (der kompilerer og kører som forventet):
>
> public class BadVarNames {
> public static void main(String[] args) {
> { //Start på anonym kodeblok
> int dumt = 5;
> //blah
> System.out.println(dumt);
> }
> String dumt;
> //blah blah
> dumt = "Dette er en string!";
> System.out.println(dumt);
> }
> }
>
> Her betyder den anonyme kodeblok, at variabelnavnet "dumt" kan bruges
> først til en int og siden til en String. Ikke særligt smart eller nyttigt.
>
> Mvh. Kasper
>
> --
> Besøg mig på nettet: http://www.kaspershjemmeside.dk



Kim Voss Schrader (12-05-2004)
Kommentar
Fra : Kim Voss Schrader


Dato : 12-05-04 15:40

Hej!

Kenneth Ahn Jensen wrote:
>
> Hvilken forskel er der på om blokken er en blok, eller bare 3 linier kode,
> uden tuborg-klammerne?

Der er lokale variable indenfor tuborgklammerne. Taler af erfaring Se evt.
en tidlige tråd jeg har startet...

--
Mvh, Kim Voss Schrader

OBS: Der kan max. attaches 30kb i e-mails til mig, ellers bouncer de.

Søg
Reklame
Statistik
Spørgsmål : 177580
Tips : 31968
Nyheder : 719565
Indlæg : 6409081
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste