• No results found

Då resultaten från det kvantitativa och kvalitativa inte är entydiga anser jag att Clean Codes påverkan på kodförståelsen fortfarande är oklar. Men jag tycker att man ur denna studie kan få en fingervisning om att Clean Code har en positiv påverkan på kodförståelsen, eftersom testdeltagarna var så tydligt överens om att de föredrog Clean Code framför Dirty Code.

Avslutningsvis vill jag uppmana till vidare studier inom området Clean Code och kodförståelse, då jag under denna studie har fått känslan av att Clean Code har stor potential vad gäller

förbättrad kodförståelse och produktivitet hos utvecklare. Intressanta uppslag för studier vore t.ex. en långtidsstudie där ett tydligare resultat troligtvis kan uppnås eller att undersöka om det faktiskt är så att utvecklare blir vana vid ett visst sätt att programmera och i så fall hur man ändrar dessa vanor.

Källförteckning

Ammerlaan, E., Veninga, W., & Zaidman, A. (2015). Old Habits Die Hard: Why Refactoring for Understandability Does Not Give Immediate Benefits. 22nd International Conference on Software Analysis, Evolution and Reengineering, (ss. 504-507). Montréal.

Srinivasulu, D. (2013). Evaluation of Software Understandability Using Software Metrics.

Odisha: National Institute of Technology, Rourkela.

Edholm, M., & Rouholamin, Y. (2012). Hur tar man sig över hindren? - En studie kring Clean Codes implementationssvårigheter. Örebro.

Gurnett, A., Caufield, G., Frisch, D., Milburn, C., & Parmar, M. (2012). An Exploration of Clean Code.

Hamm, B., Zochodne, J., & Rafih, L. (2013). Clean Code.

Lerthathairat, P., & Prompoon, N. (2011). An Approach for Soruce Code Classification to Enhance Maintainability. Eighth International Joint Conference on Computer Science and Software Engineering, (ss. 319-324).

Fowler, M., Beck, K., Brant, J., Opdyke, W., & Roberts, D. (2002). Refactoring: Improving The Design of Existing Code.

Martin, R. C. (2008). Clean Code - A Handbook of Agile Software Craftmanshup.

Oates, B. J. (2006). Researching Informaiton Systems and Computing. SAGE Publications Ltd.

Softhouse. (den 1 Maj 2015). Clean Code in five minutes.

Wiktionary. (den 1 Maj 2015). Wiktionary. Hämtat från http://en.wiktionary.org Google. (den 18 Maj 2015). Google Scholar. Hämtat från Google Scholar:

https://scholar.google.se/

Bilagor

Bilaga 1 Matris för litteraturstudier

Datum: 2015:-05-18

Sökord Databas Träffar Sökord Databas Träffar

"Clean Code" Google Scholar 2140 "Clean Code" SUMMON 349 Understandability Google Scholar 36100 Understandability SUMMON 9346

Readability Google Scholar 306000 Readability SUMMON 67798

"Code Comprehension" Google Scholar 1330 "Code Comprehension" SUMMON 194

Refactoring Google Scholar 41400 Refactoring SUMMON 4733

"Software Metrics" Google Scholar 37700 "Software Metrics" SUMMON 4780

"Code Quality" Google Scholar 12600 "Code Quality" SUMMON 1906

"Clean Code" AND

Understandability Google Scholar 354 "Clean Code" AND

Understandability SUMMON 12

"Clean Code" AND

Readability Google Scholar 734 "Clean Code" AND

Readability SUMMON 92

"Software Metrics" AND

Quality Google Scholar 29400 "Software Metrics" AND

Quality SUMMON 3742

"Clean Code" AND

Comprehension Google Scholar 276 "Clean Code" AND

Comprehension SUMMON 32

"Clean Code" AND

Quality Google Scholar 1250 "Clean Code" AND

Quality SUMMON 225

Clean Code AND

"Refactoring" Google Scholar 658 Clean Code AND

"Refactoring" SUMMON 82

Bilaga 2 Intervju 1 (Clean) A

 Kände du igen koden?

Ja, men jag tror inte att det påverkade mig. Jag har ju jobbat i den här koden förut, men kommer inte ihåg några detaljer.

 Vilket kodstycke föredrar du och varför? (Visa båda kodstyckena)

Jag tror att för en person som aldrig har jobbat i det här systemet förut, så är Clean Code versionen lättare att förstå. Men för mig vet jag inte om det spelade så stor roll eftersom jag kan systemet så pass väl.

o Enklast att förstå?

Clean Code

o Vilket tror du är enklast att underhålla?

Clean Code

 Hur upplevde du att jobba med koden?

Jag tycker överlag att den var lätt att förstå, då det fanns bra namngivna metoder med tydliga syften.

o Upplevde du att någon del av koden var svårare att förstå?

Nej, det gick överlag ganska bra.

o Upplevde du att någon del av koden var enklare att förstå?

Små metoder med tydliga namn och syften och några kommentarer som hjälpte till.

o Hur upplevde du metoderna? (Antal parametrar, längt och syfte) o Hur upplevde du namngivningen? (Tydligt och lätta att tolka) o Hur upplevde du kodstrukturen? .

.

Bilaga 3 Intervju 2 (Dirty) A

 Vilket kodstycke föredrar du och varför?

Jag jobbar nog helst med den refaktoriserade versionen, men då detta program är väldigt simpelt så vet jag inte om det spelade så stor roll eftersom jag ganska enkelt kunde förstå koden trots dåliga namn. Men i ett mer komplicerat program så är det klart att goda namn förenklar förståelsen.

Goda namn underlättar förståelsen.

 Hur upplevde du att jobba med koden?

o Upplevde du att någon del av koden var svårare att förstå?

Namnen var otydliga

o Upplevde du att någon del av koden var enklare att förstå?

Nej, men programmet var så pass simpelt, så det gick bra ändå.

Bilaga 4 Intervju 3 (Dirty) D

 Kände du igen koden?

Litegrann, man har varit i programmet och tittat några gånger. Men inte så att jag tror det påverkade mig tror jag.

 Vilket kodstycke föredrar du och varför? (Visa båda kodstyckena)

Jag hade helst jobbat med den refaktoriserade versionen där koden är uppdelade i flera mindre metoder med isolerade och tydliga syften, istället för att all kod ligger i en metod som gör flera olika saker. Att ha en stor metod leder ofta till att folk fortsätter lätta till små extra saker som den metoden ska göra och det blir bara rörigare och rörigare.

o Enklast att förstå?

Clean Code

o Vilket tror du är enklast att underhålla?

Clean Code

 Hur upplevde du att jobba med koden?

o Upplevde du att någon del av koden var svårare att förstå?

När många saker sker i en metod, på flera stället, i många varianter så är risken alltid stor att man missar något. Jag såg direkt där det färgläggs att vi är inne i en if-sats, på en hög nivå som täcker in hundratals rader. Då direkt så förstår man att det finns en else också, och där gör den kanske samma sak en gång till. Då ställs man inför valet att ska man bryta ut och göra snyggt, eller ska man låta det vara och göra som alla andra. Många låter det troligtvis vara då man han en begränsad tidsram. Utvecklare påverkas troligtvis också av hur koden man jobbar med ser ut. Är koden redan en röra så är det mer troligt att framtid lösningar blir mindre noggranna då man ger upp.

o Upplevde du att någon del av koden var enklare att förstå?

o Hur upplevde du metoderna? (Antal parametrar, längt och syfte) a

Beskrivning och dokumentationen av de metoder som jag såg sa inte mig så mycket.

o Hur upplevde du namngivningen? (Tydligt och lätta att tolka) Namnen kände jag igen p.g.a. systemvana.

o Hur upplevde du kodstrukturen?

Rörigt med en massa nästlade if-satser.

Bilaga 5 Intervju 4 (Clean) D

 Kände du igen koden?

 Vilket kodstycke föredrar du och varför? (Visa båda kodstyckena) -

Namnen i den icke-refaktoriserade versionen är ju totalt obegripliga, man vill inte ta i det.

Man verkar inte ha tänkt alls här. Skulle man bara titta på bara koden här så blir det ett svårt att förstå vad som gör vad. Bra namn har betydelse och i större och mer komplexa program blir det till slut ohållbart och man inte bra namn.

o Enklast att förstå?

Clean Code

o Vilket tror du är enklast att underhålla?

Clean Code

 Hur upplevde du att jobba med koden?

o Upplevde du att någon del av koden var svårare att förstå?

Nej, man förstod ganska enkelt. Ett simpelt program

Upplevde du att någon del av koden var enklare att förstå?

Inga jätte metoder som gör allt. Bra med uppdelningar i små metoder som gör en sak.

o Hur upplevde du metoderna? (Antal parametrar, längt och syfte)

Inga jätte metoder som gör allt. Bra med uppdelningar i små metoder som gör en sak.

o Hur upplevde du namngivningen? (Tydligt och lätta att tolka)

Namnen var tydliga och lätta att förstå. I vissa fall höll jag inte med om valet, men jag förstod ju.

o Hur upplevde du kodstrukturen?

Kodstrukturen var OK, det är ett simpelt program som sagt.

Bilaga 6 Intervju 5 (Dirty) B

 Kände du igen koden?

Inte just den här biten. Den har jag nog lyckats undvika

 Vilket kodstycke föredrar du och varför? (Visa båda kodstyckena)

Om man tittar på den refaktoriserade koden så är det så här man ska skriva kod, i alla fall enligt mig. Det känns som den gamla har bara byggts på, det är ingen som har taigt tag i någontig och gåt in och refaktoriserat något. Enklare att jobba med och förstå

o Enklast att förstå?

Clean Code

o Vilket tror du är enklast att underhålla?

Clean Code

 Hur upplevde du att jobba med koden?

o Upplevde du att någon del av koden var svårare att förstå?

Svårt att identifiera villkoren för att komma till delen av koden som jag behövde modifiera. Det jag gjorde var att prova mig fram genom att slänga in kod där det ser ut att vara rätt och sedan se om det fungerar. Det fanns inget sätt att avgöra med lätthet om det kommer att fungera. Det var rörigt med en massa nästlade if-satset.

Man bör försöka hålla ner detta. Helt klart för mycket som sker på ett ställe.

o Upplevde du att någon del av koden var enklare att förstå?

Det fanns en stor if-else-sats på en hög nivå, som man tydligt kunde avgöra om det var ett mätvärde eller fynd. Annars var det gissning

o Hur upplevde du metoderna? (Antal parametrar, längt och syfte)

Det enda jag noterade var en metod för att avgöra om värde skulle med utpå svar.

Den hade ju ett tydligt namn, men annars var det mest rörigt och få metod anrop o Hur upplevde du namngivningen? (Tydligt och lätta att tolka)

Mycket förkortningar, det underlättar inte jämt. Jag tycker att man hellre skriver ettlångt variabelnamn om det behövs. Man blandar även engelska och svenska, vilket försvårar.

o Hur upplevde du kodstrukturen?

Dålig struktur, då det syns att koden bara byggts på och byggts på. Svårt att förstå, man skulle helst vilja göra om den från början.

Bilaga 7 Intervju 6 (Clean) B

 Vilket kodstycke föredrar du och varför? (Visa båda kodstyckena)

Även om programmet är relativt simpelt så föredrar jag koden med ordentliga namn. Det underlättar med namn då jag enkelt kan söka i programmet efter det jag söker. I ett mer komplext program så hade det givetvis haft än ännu större påverkan och kunnat göra det nästintill omöjligt att förstå i värsta fall.

Jag tror att folk är rädda att använda långa namn. Ett tänk som kvar från när

kompilatorerna satte begränsningar. Bra funktionsnamn kan ersätta kommentarer i koden.

o Enklast att förstå?

Clean Code

o Vilket tror du är enklast att underhålla?

Clean Code

 Hur upplevde du att jobba med koden?

o Upplevde du att någon del av koden var svårare att förstå?

o Upplevde du att någon del av koden var enklare att förstå? Nej

Det var tydlig namngivning och jag förstod ganska direkt vad allt var och dess syfte.

o Hur upplevde du kodstrukturen?

Jag vet inte, det var en del ställer där man vart fundersam på hur utvecklaren tänkt, där t.ex. man tydligt såg fall där programmet skulle krascha vid felaktig inmatning.

Bilaga 8 Intervju 7 (Dirty) F

 Kände du igen koden?

Nej. Har aldrig jobbat i detta program.

 Vilket kodstycke föredrar du och varför? (Visa båda kodstyckena) Jag hade hellre jobbat med den refaktoriserade versionen.

o Enklast att förstå?

Clean Code, som faktiskt innehåller någons sorts beskrivning av vad allt är och vad det gör. Den andra säger ingenting, utan man får gissa eller så måste man gå in i databasen och andra klasser för att försöka förstå vad allt gör. Den andra icke refaktoriserade koden var totalt oläsbar.

o Vilket tror du är enklast att underhålla?

Clean Code

 Hur upplevde du att jobba med koden?

Svårt att veta vad som var vad i koden.

Värdelöst. Metoden var alldeles för lång.

Svårt att förstå flödet med en massa nästlade if-satser.

Koden försöker göra flera olika saker, och dessa saker är otydliga.

o Upplevde du att någon del av koden var svårare att förstå?

Alla direkt anrop mot databasen med hjälp av strängar som är förkortningar. Det saknas kontext och beskrivning för vad det är.

o Upplevde du att någon del av koden var enklare att förstå?

o Hur upplevde du metoderna? (Antal parametrar, längt och syfte)

Alldelles för långa metoder. Man får skrolla igenom flera hundra rader och det blir svårt att få en överblick av vad som sker. Otydligt syfte också.

o Hur upplevde du namngivningen? (Tydligt och lätta att tolka)

Otydligt. För många förkortningar. Man kan kosta på sig att skriva ett längre och mer beskrivande namn.

o Hur upplevde du kodstrukturen?

Dålig struktur. Men det är det minsta problemet och inget som spelar så stor roll tror jag.

Bilaga 9 Intervju 8 (Clean) F

 Vilket kodstycke föredrar du och varför? (Visa båda kodstyckena)

Det är ju ett simpelt program, så man förstår ganska snabbt hur det fungerar, så det skillnaden är inte så stor på de två versionerna. Men i ett mer komplicerat program tror jag det skulle ha väldigt stor betydelse. Har man dåliga namn måste man hela tiden sitta och gissa hur saker och ting hänger ihop och fungerar.

o Enklast att förstå?

Clean Code

o Vilket tror du är enklast att underhålla?

Clean Code

 Hur upplevde du att jobba med koden?

o Upplevde du att någon del av koden var svårare att förstå?

Nej, tyckte det gick snabbt att hitta det jag behövde veta. Så tittade inte på så mycket annan kod.

o Upplevde du att någon del av koden var enklare att förstå?

Se ovan.

o Hur upplevde du metoderna? (Antal parametrar, längt och syfte) Metoderna vad små och lätta att förstå.

o Hur upplevde du namngivningen? (Tydligt och lätta att tolka) Tydligt syfte, man förstod vad de används till.

o Hur upplevde du kodstrukturen?

Det lilla jag såg var ju bra. Jag hade kanske gjort det annorlunda, men jag förstod ju.

Bilaga 10 Intervju 9 (Clean) E

 Kände du igen koden?

Jag kände igen koden eftersom jag vanligtvis inte jobbar med detta program.

 Vilket kodstycke föredrar du och varför? (Visa båda kodstyckena) Jag föredrar den refaktoriserade versionen då jag tror det är enklare att utföra

förändringar på den, eftersom den är mycket bättre uppdelar i många mindre metoder.

Detta resulterar i bättre förståelse och enklare underhålla tror jag.

o Enklast att förstå?

Clean Code

o Vilket tror du är enklast att underhålla?

Clean Code

 Hur upplevde du att jobba med koden?

Jag blev ju inte helt färdig då jag fastnade på att försöka förstå hur man identifierar ett fynd och ett mätvärde. Jag försökte hitta en metod för detta men lyckades inte. Då jag inte jobbar i detta program vanligtvis så är jag inte van med vissa termer och hur man skiljer ett fynd från ett mätvärde. Jag tycker även att det saknas tillräckliga

kommentarer.

o Upplevde du att någon del av koden var svårare att förstå?

Svårast att förstå var hur man idenetiferar fynd+mätvärde. Hade gärna haft en metod för detta + att ja var ovan med IDEn.

o Upplevde du att någon del av koden var enklare att förstå?

o Hur upplevde du metoderna? (Antal parametrar, längt och syfte)

Det fanns många och korta metoder med tydliga syften vilket förenklade förståelsen av koden.

o Hur upplevde du namngivningen? (Tydligt och lätta att tolka)

Det fanns många förkortningar som jag inte alls tycker om. Det är svårt att förstå ibland, och jag tycker att man kan kosta på sig ett längre mer beskrivande namn.

Annars bra och tydliga namn.

Dåliga namn kan göra ett enkelt problem svårt.

Bilaga 11 Intervju 10 (Dirty) E

 Vilket kodstycke föredrar du och varför? (Visa båda kodstyckena)

Jobbar helst med versionen med bra namngivning. Är själv väldigt noggrann med namngivning. Det är svårt men namngivning och man får ofta tänka till en längre stund ibland för att hitta rätt. Bra namngivning förenkalr mer en bara kodsturkturen. Du kan få förståelse på en helt annan nivå då du ser hur koden hänger ihop och fungerar.

Underlättar även i framtiden eftersom man troligtvis i framtiden namnger på ett liknande sätt om resten av koden är döpt på ett visst sätt. Annars riskerar man att alla gör på sitt egna sätt.

På stora program har namngivning mycket större påverkan. Namn som t.ex.

”Calculation5” säger ju ingenting. Det blir enklare att identifera fel o med bra namn.

o Enklast att förstå?

Clean Code.

o Vilket tror du är enklast att underhålla?

Clean Code

 Hur upplevde du att jobba med koden?

Simpelt program så jag kunde ganska snabbt koppla bort den dåliga namngivning och bara skanna efter koden jag ska rätta. Påverkade nog inte så mycket i detta fall. De flesta hade nog inte märkt någon större skillnad i dethär fallet. Är nock dock inte så ofta man har så här enkla buggar. Blir giventvis vikgitgare då med bra namngivning.

o Upplevde du att någon del av koden var svårare att förstå?

Tittade inte på så många stället. Men om jag ser över koden nu så tror jag att det kan vara svårt att se vad som sker vart i koden. Det är ju ganska rörigt.

o Upplevde du att någon del av koden var enklare att förstå?

För simpelt

o Hur upplevde du metoderna? (Antal parametrar, längt och syfte) o Hur upplevde du namngivningen? (Tydligt och lätta att tolka) -

Förkortningar ogillar jag. Är väldigt hård på sånt. Blir svårtolkat.

o Hur upplevde du kodstrukturen?

Inte superbra struktur. Det känns som att koden inte är uttänkt/planerad.

Bilaga 12 Intervju 11 (Clean) C

 Kände du igen koden?

Jobbar inte i detta så ofta. Så jag kände inte igen koden.

 Vilket kodstycke föredrar du och varför? (Visa båda kodstyckena)

Föredrar kod med uppdelade metoder då det mer lättförståeligt. Man kan ju få en ledtråd genom namnen om dessa är bra.

o Enklast att förstå?

Clean Code

o Vilket tror du är enklast att underhålla?

Clean Code

 Hur upplevde du att jobba med koden?

o Upplevde du att någon del av koden var svårare att förstå? .

Det var några metoder jag tyckte gjorde samma sak, en ritade en gul rektangel och en annan ritade en vit rektangel. Jag förstod inte skillnaden och hade föredragit en metod som ritade ut en rektangel och tog en färg som argument.

o Upplevde du att någon del av koden var enklare att förstå?

Gillade att det fanns specifika metoder med bra namn som beskrev vad den gör. Då kunde jag snabbt hitta vart i koden jag skulle vara. Hann dock inte få en tillräcklig överblick.

o Hur upplevde du metoderna? (Antal parametrar, längt och syfte)

Jag fick en ganska bra humm om vad metoderna gjorde, men fick kanske inte alla detaljer. Men jag tror inte att jag behövde det heller, utan det räcker med att ha ett hum om vad metoden gör. Metoderna hade bra längd tycker jag, överskådliga.

o Hur upplevde du namngivningen? (Tydligt och lätta att tolka)

Bra och beskrivande metodnamn. Hade inte skadat med mer kommentrarer tycker jag.

o Hur upplevde du kodstrukturen?

Jag vet inte riktigt, svårt att säga.

Bilaga 13 Intervju 12 (Dirty) C

 Vilket kodstycke föredrar du och varför? (Visa båda kodstyckena)

Tycker inte att någon speciellt snygg. Men det är ju bättre namn på den ena. Ett ganska simpelt exempel också. Men på ett mer komplext program så har det givetvis mycket större påverkan.

Föredrar namn som är självbeskrivande.

Ett program med dålig namngivning kan resultera att man antingen inte förstår när man ska modifiera eller i värsta fall till och med misstolkar vilket kan få ännu större påverkan.

Får långa namn kan också vara ett problem. Typ namn på över 80 tecken kan ju bli svåra att förstå.

o Enklast att förstå?

Clean Code

o Vilket tror du är enklast att underhålla?

Clean Code

 Hur upplevde du att jobba med koden?

o Upplevde du att någon del av koden var svårare att förstå? .

Lätt att förstå tanken med koden. Men namnen var inte så bra tycker jag, vilket gjorde mig osäker på vilken parameter som var vilken i metoden. Det var även mycket repetition av kod, samma sak gjordes i flera metoder och hade kunnat brytas ut tycker.

o Upplevde du att någon del av koden var enklare att förstå?

Var inte så avancerat. Så reagerade inte på att någonting speciellt o Hur upplevde du metoderna? (Antal parametrar, längt och syfte) o Hur upplevde du namngivningen? (Tydligt och lätta att tolka) -

Tycker att namnen var dåliga, med otydliga namn. Kunde inte förstå syftet på en gång utan fick undersöka i layoutvyn vad allting var.

o Hur upplevde du kodstrukturen?

Koden var inte speciellt lätt att överskåda.

Related documents