Page 2 of 5 First 12345 Last
  1. #16
    Kemblin's Avatar
    Registered
    14/05/03
    Location
    Schoten
    Posts
    812
    iTrader
    1 (100%)
    Mentioned
    0 Post(s)
    Reputation
    1/7
    Quote Originally Posted by Ice View Post
    This quote is hidden because you are ignoring this member. Show
    Ja SUPER .... Want goh een collectie waar geen duplicaten in mogen zitten is zo speciaal dat het niet in java zit ... oh wacht ... Set (Java 2 Platform SE v1.4.2)
    ik ging er vanuit dat ie wel degelijk specifiek een ArrayList nodig had...

    Quote Originally Posted by Cycloon View Post
    This quote is hidden because you are ignoring this member. Show
    Om het eens over slecht geschreven code te hebben. De originele code was dan iets beter, alhoewel hij daar een while moet gebruiken ipv een for.
    waarom?
    no votes  

  2. #17
    Ice's Avatar
    Registered
    31/07/02
    Location
    Kontich
    Posts
    602
    iTrader
    16 (100%)
    Mentioned
    0 Post(s)
    Reputation
    0/0
    Quote Originally Posted by Kemblin View Post
    This quote is hidden because you are ignoring this member. Show
    ik ging er vanuit dat ie wel degelijk specifiek een ArrayList nodig had...



    waarom?
    Hij heeft een lijst nodig waarin de elementen uniek zijn. (Volgens zijn code toch) en dan is ArrayList toch een foute keuze.
    When you're slapped, you'll take it and like it - Sam Spade
    Make way for the bad guy! - Tony Montana
    When a girl has a heart of stone, there's only one way to melt it. Just add Ice.
    no votes  

  3. #18
    Kemblin's Avatar
    Registered
    14/05/03
    Location
    Schoten
    Posts
    812
    iTrader
    1 (100%)
    Mentioned
    0 Post(s)
    Reputation
    1/7
    Quote Originally Posted by Ice View Post
    This quote is hidden because you are ignoring this member. Show
    Hij heeft een lijst nodig waarin de elementen uniek zijn. (Volgens zijn code toch) en dan is ArrayList toch een foute keuze.
    tjah das waar, ne set had mss idd beter geweest, maar misschien was de volgorde van eigenaars voor hem wel van belang ?
    no votes  

  4. #19

    Registered
    03/08/02
    Location
    Gavere
    Posts
    37,519
    iTrader
    23 (100%)
    Mentioned
    57 Post(s)
    Reputation
    0/1281
    Quote Originally Posted by Kemblin View Post
    This quote is hidden because you are ignoring this member. Show
    ik ging er vanuit dat ie wel degelijk specifiek een ArrayList nodig had...
    Dan nog... contains anyone?
    ArrayList (Java Platform SE 6) )

    Deze wordt trouwens gedeclareerd in de Collections interface.
    no votes  

  5. #20
    Ice's Avatar
    Registered
    31/07/02
    Location
    Kontich
    Posts
    602
    iTrader
    16 (100%)
    Mentioned
    0 Post(s)
    Reputation
    0/0
    Quote Originally Posted by Kemblin View Post
    This quote is hidden because you are ignoring this member. Show
    tjah das waar, ne set had mss idd beter geweest, maar misschien was de volgorde van eigenaars voor hem wel van belang ?
    Je bedoelt zoals in LinkedHashSet (Java 2 Platform SE v1.4.2) ?
    When you're slapped, you'll take it and like it - Sam Spade
    Make way for the bad guy! - Tony Montana
    When a girl has a heart of stone, there's only one way to melt it. Just add Ice.
    no votes  

  6. #21
    Kemblin's Avatar
    Registered
    14/05/03
    Location
    Schoten
    Posts
    812
    iTrader
    1 (100%)
    Mentioned
    0 Post(s)
    Reputation
    1/7
    Quote Originally Posted by Ice View Post
    This quote is hidden because you are ignoring this member. Show
    wat als hij een ArrayList gewoon handiger vond om mee te werken, hoe dan ook het is niet mijn keuze dus bij mij moet ge niet zijn...

    jeez ik had al beter niks gepost :P
    no votes  

  7. #22
    Ice's Avatar
    Registered
    31/07/02
    Location
    Kontich
    Posts
    602
    iTrader
    16 (100%)
    Mentioned
    0 Post(s)
    Reputation
    0/0
    Quote Originally Posted by Kemblin View Post
    This quote is hidden because you are ignoring this member. Show
    wat als hij een ArrayList gewoon handiger vond om mee te werken?

    jeez ik had al beter niks gepost :P
    Njah, kvind gewoon dat mensen beter eens hun basic collections leren ipv altijd opnieuw het wiel uit te vinden.
    When you're slapped, you'll take it and like it - Sam Spade
    Make way for the bad guy! - Tony Montana
    When a girl has a heart of stone, there's only one way to melt it. Just add Ice.
    no votes  

  8. #23
    Bubbling Zombie's Avatar
    Registered
    03/11/03
    Location
    Hove
    Posts
    6,718
    iTrader
    3 (100%)
    Mentioned
    0 Post(s)
    Reputation
    1/3
    Quote Originally Posted by Kemblin View Post
    This quote is hidden because you are ignoring this member. Show
    wat als hij een ArrayList gewoon handiger vond om mee te werken, hoe dan ook het is niet mijn keuze dus bij mij moet ge niet zijn...

    jeez ik had al beter niks gepost :P
    Dan gebruikt hij een verkeerde collectie voor zijn doel?
    Look down at me and you see a fool; look up at me and you see a god; look straight at me and you see yourself
    no votes  

  9. #24
    Cycloon's Avatar
    Registered
    18/01/04
    Location
    Melle
    Posts
    10,535
    iTrader
    56 (100%)
    Mentioned
    0 Post(s)
    Reputation
    27/102
    Quote Originally Posted by Kemblin View Post
    This quote is hidden because you are ignoring this member. Show
    waarom?
    Jij springt zomaar ergens halfweg uit je for lus. Een for lus dient er voor om x keer dezelfde code te herhalen en in beide code wordt de for lus vroegtijdig afgebroken als een item reeds bestaat. De TS doet zich wel nog de moeite om alle voorwaarden duidelijk in de forlus te houden, jij gebruikt gewoon een lompe return in je for lus. Qua leesbaarheid is dat echt 0.

    In dit geval zou de code van de TS goed geweest zijn had hij zich de moeite genomen om een while lus te schrijven.

    (het gaat hier dus vooral over hoe leesbaar en duidelijk programmeert, ik heb me niet uitgesproken over de efficiëntie van de gegeven code)
    “In terms of how we evaluate schooling, everything is about working by yourself. If you work with someone else, it’s called cheating. Once you get out in the real world, everything you do involves working with other people.”
    PSN: Cycloon - Final Fantasy XIV: A realm reborn character
    no votes  

  10. #25

    Registered
    03/08/02
    Location
    Gavere
    Posts
    37,519
    iTrader
    23 (100%)
    Mentioned
    57 Post(s)
    Reputation
    0/1281
    Quote Originally Posted by Ice View Post
    This quote is hidden because you are ignoring this member. Show
    Njah, kvind gewoon dat mensen beter eens hun basic collections leren ipv altijd opnieuw het wiel uit te vinden.
    Nu kunnen er wel bepaalde redenen zijn om een Linked-variant van een collection te vermijden, zoals performance. Maar het lijkt me straf dat dat hier al een issue zou zijn, dus ik geef je wel hard gelijk


    Met een linkedhashset wordt het blok code dan gewoon:

    Code:
    return eigenaars.add(eigenaar);
    Indien de eigenaar al bestond returned dit gewoon false, anders add hij en returned het true.

    Natuurlijk wel voor een deftige equals() en hashCode() override zorgen in Eigenaar.
    no votes  

  11. #26

    Registered
    20/09/04
    Location
    Kortrijk / Gent
    Posts
    7,177
    iTrader
    1 (100%)
    Mentioned
    0 Post(s)
    Reputation
    3/43
    Quote Originally Posted by Cycloon View Post
    This quote is hidden because you are ignoring this member. Show
    Jij springt zomaar ergens halfweg uit je for lus. Een for lus dient er voor om x keer dezelfde code te herhalen en in beide code wordt de for lus vroegtijdig afgebroken als een item reeds bestaat. De TS doet zich wel nog de moeite om alle voorwaarden duidelijk in de forlus te houden, jij gebruikt gewoon een lompe return in je for lus. Qua leesbaarheid is dat echt 0.

    In dit geval zou de code van de TS goed geweest zijn had hij zich de moeite genomen om een while lus te schrijven.

    (het gaat hier dus vooral over hoe leesbaar en duidelijk programmeert, ik heb me niet uitgesproken over de efficiëntie van de gegeven code)
    Hier ga ik niet mee akkoord.
    Je hebt een teller nodig, je moet deze per loop incrementeren en je moet in het slechtste geval de volledige collectie doorlopen.

    Waarom zou je dan geen for lus mogen gebruiken?

    Of je dat doet met een boolean variabele of door direct uit de lus te springen is een voorkeur.
    Ik vind die code niet slecht (los van de collectie keuze).

    De redenering dat je verplicht een while lus moet gebruiken wanneer er vroegtijdig uit de lus kan gesprongen worden vind ik belachelijk.
    no votes  

  12. #27
    Parnakra's Avatar
    Registered
    15/04/04
    Location
    Izegem
    Posts
    6,095
    iTrader
    1 (100%)
    Mentioned
    0 Post(s)
    Zoals Cycloon zei, dat is noodzakelijk als je leesbare code wil maken.

    Als ik code lees en ik zie een for-lus staan, dan bekijk ik de voorwaarden en hoeveel keer de lus doorlopen wordt. Hetgeen in de lus uitgevoerd wordt, staat los van die voorwaarden.

    Als er dan in die for-lus opeens abrupt gestopt wordt, kan mijn beeld van hoe het programma/stuk code werkt niet kloppen.
    no votes  

  13. #28

    Registered
    20/09/04
    Location
    Kortrijk / Gent
    Posts
    7,177
    iTrader
    1 (100%)
    Mentioned
    0 Post(s)
    Reputation
    3/43
    En sinds wanneer kun je die extra voorwaarden (een hulpvariabele) niet in uw for lus zetten?
    Dat is toch hetzelfde als bij een while lus ...

    We zijn hier bezig over een loop die met behulp van een for lus in drie regels geschreven kan worden.
    Als dat al niet meer leesbaar is, waar zijn we dan mee bezig?

    We hebben het dus bijv. over

    Code:
    for(int i = 0; i < collec.size(); i++)
    	if(collec.equals("test"))
    		return true;
    return false;
    vs
    Code:
    int i=0;
    boolean temp = false;
    while( i < collec.size() && !temp){
    	if(collec.equals("test"))
    		temp = true;
            i++;
    }
    return temp;
    Het eerste vind ik persoonlijk zelfs veel duidelijker, aangezien je bij het tweede stuk nog moet nadenken over die hulpvariabele ...
    Nu, dat zijn persoonlijke voorkeuren.
    Om daar dan een preek over te gaan geven
    Last edited by MilM; 11-03-2009 at 15:36.
    no votes  

  14. #29
    Parnakra's Avatar
    Registered
    15/04/04
    Location
    Izegem
    Posts
    6,095
    iTrader
    1 (100%)
    Mentioned
    0 Post(s)
    Quote Originally Posted by MilM View Post
    This quote is hidden because you are ignoring this member. Show
    En sinds wanneer kun je die extra voorwaarden (een hulpvariabele) niet in uw for lus zetten?
    Dat is toch hetzelfde als bij een while lus ...

    We zijn hier bezig over een loop die met behulp van een for lus in drie regels geschreven kan worden.
    Als dat al niet meer leesbaar is, waar zijn we dan mee bezig?

    We hebben het dus bijv. over

    Code:
    for(int i = 0; i < collec.size(); i++)
    	if(collec.equals("test"))
    		return true;
    return false;
    vs
    Code:
    int i=0;
    boolean temp = false;
    while( i < collec.size() && !temp){
    	if(collec.equals("test"))
    		temp = false;
    return temp;
    Het eerste vind ik persoonlijk zelfs duidelijk, aangezien je bij het tweede stuk nog moet nadenken over die hulpvariabele ...
    Nu, dat zijn persoonlijke voorkeuren.
    Om daar dan een preek over te gaan geven
    Niet alle for- of while-lussen bestaan uit 3 regeltjes code.

    En dat zouden geen persoonlijke voorkeuren moeten zijn, je kan alles wat je met een forlus kan doen ook met een whilelus doen, en vice versa. Het grote verschil is dat er gewoon een verschil in interpretatie is.

    Zoals ik al zei, als je code overloopt (bv. een for-lus met enkele tientallen lijnen code, die methodes uit een andere klasse gaan gebruiken, etc.) moet je er van uit kunnen gaan dat die lus altijd x aantal keer zal uitgevoerd worden.

    Laat dat de regel zijn, en een for met slechts 3 lijntjes de uitzondering.
    no votes  

  15. #30

    Registered
    20/09/04
    Location
    Kortrijk / Gent
    Posts
    7,177
    iTrader
    1 (100%)
    Mentioned
    0 Post(s)
    Reputation
    3/43
    Quote Originally Posted by Parnakra View Post
    This quote is hidden because you are ignoring this member. Show
    Niet alle for- of while-lussen bestaan uit 3 regeltjes code.

    En dat zouden geen persoonlijke voorkeuren moeten zijn, je kan alles wat je met een forlus kan doen ook met een whilelus doen, en vice versa. Het grote verschil is dat er gewoon een verschil in interpretatie is.

    Zoals ik al zei, als je code overloopt (bv. een for-lus met enkele tientallen lijnen code, die methodes uit een andere klasse gaan gebruiken, etc.) moet je er van uit kunnen gaan dat die lus altijd x aantal keer zal uitgevoerd worden.

    Laat dat de regel zijn, en een for met slechts 3 lijntjes de uitzondering.
    In een lus van veel regels, kan een paar regels extra geen kwaad. Maar in een kleine lus vind ik dit net juist minder leesbaar. Dat het in grote blokken verwaarloosbaar is en daarmee beter, doet er niet toe.
    Dit klinkt alsof je kleine blokken minder leesbaar gaat maken om een consistent gebruik van 'while' te hebben bij grotere blokken. Je kunt hier over de voor/nadelen discussiëren.

    Welk stuk code vind jij hier het meest leesbaar?

    Ik vind het dan ook overdreven om iemand hierop te pakken in dit voorbeeld.

    while en for lus zijn exact hetzelfde. Net zoals ik in de while lus een boolean gebruik, zou ik daar ook een break of return kunnen gebruiken.
    Ik zou ook ipv een return in de for lus, een extra boolean als voorwaarde hebben kunnen meegeven.

    Als jullie bij een for lus ervan uitgaan, dat de size van een collectie de enige voorwaarde is en dan niet controleren op andere voorwaardes tussen de haakjes (zoals hieronder), dan ligt dit aan jullie eerder dan aan slecht programmeren van de auteur.

    Ik geef u wel gelijk dat voor zeer grote blokken (waar je dan zelfs in een goeie IDE mss snel over 'return true' gaat lezen) het beter kan zijn om te werken met een conditie binnen de haakskes ipv een return of break statement.

    For-lus versie:
    Code:
    boolean temp = false;
    for(int i=0; i < collec.size() && !temp; i++){
    	if(collec.equals("test"))
    		temp = true;
    }
    return temp;
    edit: ik beweer niet dat een for lus daarom beter is, ik vind het gewoon wat ver gaan om te doen alsof dit zo slecht programmeren is ...
    Last edited by MilM; 11-03-2009 at 16:03.
    no votes  

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  

Log in

Log in