Gå til innhold

ProgrammeringsBaren! Småprat, om det du elsker!


Anbefalte innlegg

Videoannonse
Annonse

Er det jeg som er dum eller er disse oppgavene identiske?

 

 

4. Write a method called doubleList that takes an ArrayList of Strings as a parameter and replaces every String with two of that same String. For example, if the list stores the values (“how”, “are”, “you?”) before the method is called, it should store the values (“how”, “how”, “are”, “are”, “you?”, “you?”) after the method finishes executing.

 

 

11. Write a method called stutter that accepts an ArrayList of strings as a parameter and that replaces every string with two of that string. For example, if the list stores the values [“how”, “are”, “you?”], after the call it should store [“how”, “how”, “are”, “are”, “you?”, “you?”].

Endret av banansplitt™
Lenke til kommentar

#1: Funksjonen bør ta List, ikke ArrayList. Interfacet som gir oppførselen, ikke den konkrete implementasjonen. Siden alt er dispatched og heap-alloc'd uansett taper du ingenting på det, men tjener på et bedre interface. På den måten fungerer den også for LinkedList og AidsList og gudene vet hva Java har implementert. Du kan også implementere din egen!

 

#2: Herreminfred, ArrayList er en kontinuerlig blokk minne. Altså må den re-alloces og herje. Dessuten er det dårlig stemning at en klasse tar inn en liste OG mutererer den. Objekter bør, så langt det er mulig, kun mutere interne ting. Altså burde listen sendes inn som const eller final eller gudene vet hva sølet bruker. Og heller returnere en ny liste som er modifisert.

 

Som en optimalisering kan man tilby en inplace-variant. Denne kan igjen brukes til å implementere return-stuttered-listen.

  • Liker 1
Lenke til kommentar

Eksempel:

 

Tidligere i boken var det en oppgave der man skulle skrive ut en linje 1000 ganger. Løsningen ble å skrive en metode som skrev ut linjen 10 ganger, for deretter å skrive en metode som skrev ut forestående metode 10 ganger. Senere i boken lærer man om løkker og får samme oppgave om å skrive ut en linje 1000 ganger, denne gangen løser man det med løkker naturligvis.

 

Poenget er; boken er step-by-step og fokuset er problemløsning med what you've got. Jeg er sikker på at jeg etterhvert lærer om List og da får en lignende oppgave som jeg løser med List.

 

Det med mutasjonen kan jeg derimot argumentere for eller imot.

  • Liker 1
Lenke til kommentar

Så utrolig defekte oppgaver. Hvorfor i helvete spesifiserer de "Takes an ArrayList".

 

Ikke rart det skrives mye ræva java-kode.

 

Edit: Enda verre: Hvorfor muterer den input-listen? Og en ArrayList? ARGH

#1: Funksjonen bør ta List, ikke ArrayList. Interfacet som gir oppførselen, ikke den konkrete implementasjonen. Siden alt er dispatched og heap-alloc'd uansett taper du ingenting på det, men tjener på et bedre interface. På den måten fungerer den også for LinkedList og AidsList og gudene vet hva Java har implementert. Du kan også implementere din egen!

 

#2: Herreminfred, ArrayList er en kontinuerlig blokk minne. Altså må den re-alloces og herje. Dessuten er det dårlig stemning at en klasse tar inn en liste OG mutererer den. Objekter bør, så langt det er mulig, kun mutere interne ting. Altså burde listen sendes inn som const eller final eller gudene vet hva sølet bruker. Og heller returnere en ny liste som er modifisert.

 

Som en optimalisering kan man tilby en inplace-variant. Denne kan igjen brukes til å implementere return-stuttered-listen.

 

Nettopp lært deg java eller? Det er en øvingsoppgave fra en bok i grunnleggende programmering, herlighet

 

  • Liker 1
Lenke til kommentar
  • 3 uker senere...

Ja eg har lest Clean Code, boka er ikkje så spesiell som mange skal ha det til. Mykje av det som står der er jo ting som dei fleste utviklarar veit frå før av, det er bare at boka bekreftar deira tankar.

 

Skal du skrive fin kode, så er ein god IDE med godt analyseverktøy mykje mykje betre.

Lenke til kommentar

Ja eg har lest Clean Code, boka er ikkje så spesiell som mange skal ha det til. Mykje av det som står der er jo ting som dei fleste utviklarar veit frå før av, det er bare at boka bekreftar deira tankar.

 

Skal du skrive fin kode, så er ein god IDE med godt analyseverktøy mykje mykje betre.

Synes ikke de to tingene har noe med hverandre å gjøre. Et IDE, et analyseverktøy eller egentlig hva som helst vil aldri kunne gjøre dårlig kode til fin kode. Et IDE kan derimot ofte hjelpe til med å refaktorere koden, men da basert på programmererens valg.

 

Boka skriver hva mange "vet", men kanskje ikke har tenkt nok over. Det er også forskjell på å vite hvordan noe *bør* se ut og gjøres, og på å faktisk *gjøre* det riktig.

Lenke til kommentar

Tøv. Et IDE tilføyer såpass mye nyttige verktøy at dette vil jeg kalle rent sprøyt.

Estetikk. :-------)

 

edit: IDE refactor gjør mye mer enn search replace da den forstår semantikken i koden din.

Utdyp, er du snill, for dette betyr ca. ingenting.

edit: jeg kan ikke være noe dårligere her selv. Ok, la oss anta den forstår semantikken i koden; hvordan kan den bruke dette? Nøyaktig hva er det den får til som gjør at det blir refactor?

Endret av Lycantrophe
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...