Intention-revealing function names and small functions to facilitate code comprehension

Code comprehension is by many considered to be one of the most expensive and time-consuming phases of the software life cycle. There are multiple techniques for making code more comprehensible, one of them alleged to be keeping functions small. However, the claim that small functions are superior to...

Full description

Bibliographic Details
Main Authors: Sunnegårdh, Christina, Eserstam, Klara
Format: Others
Language:English
Published: KTH, Skolan för elektroteknik och datavetenskap (EECS) 2019
Subjects:
Online Access:http://urn.kb.se/resolve?urn=urn:nbn:se:kth:diva-255264
id ndltd-UPSALLA1-oai-DiVA.org-kth-255264
record_format oai_dc
spelling ndltd-UPSALLA1-oai-DiVA.org-kth-2552642019-07-30T04:29:11ZIntention-revealing function names and small functions to facilitate code comprehensionengIntentionsavslöjande funktionsnamn och korta funktioner för att underlätta kodförståelseSunnegårdh, ChristinaEserstam, KlaraKTH, Skolan för elektroteknik och datavetenskap (EECS)KTH, Skolan för elektroteknik och datavetenskap (EECS)2019Computer and Information SciencesData- och informationsvetenskapCode comprehension is by many considered to be one of the most expensive and time-consuming phases of the software life cycle. There are multiple techniques for making code more comprehensible, one of them alleged to be keeping functions small. However, the claim that small functions are superior to large functions with regards to code comprehension, are often based upon programming experience and stated without references from research. In these claims the importance of intention-revealing function names to improve codecomprehension is also emphasized. It could therefore be questioned whetherit is keeping functions small or the enabling of intention-revealing functionn ames that underlies the claim of superiority of small functions. This thesis presents previous studies and relevant literature within the area as well as carries out tests using eye tracking. The results of the tests indicated that intention-revealing function names have a significant effect on how fast developers comprehend code. It is also indicated that simply splitting up a function, without using intention-revealing function names, increases the chance for programmers to be able to tell the correct output. To be able to draw reliable conclusions, further studies would be necessary, where the most important improvements would be to provide an unlimited amount of time for each test as well as a larger quantity of test persons. Kodförståelse anses enligt många vara en av de mest tidskrävande faserna i en programvaras livscykel. Det finns flera tekniker för att göra kod mer begriplig, som till exempel att hålla funktioner korta. Påståendet att korta funktioner är överlägsna långa funktioner med avseende på kodförståelse, är ofta baserat på erfarenhet inom programmering och inte grundat i forskning. I dessa påståenden betonas även vikten av att använda intentionsavslöjande funktionsnamn för att främja kodförståelse. Man kan därför fråga sig om det är själva funktionslängden eller möjligheten att använda intentionsavslöjande namn som ligger bakom påståendet att korta funktioner är fördelaktiga. Denna rapport tar upp tidigare studier och relevant litteratur inom området, samt presenterar resultat från tester menade att undersöka denna fråga. Resultaten från testerna pekar på att intentionsavslöjande funktionsnamn har en signifikant betydelse för hur snabbt utvecklare begriper kod. Det finns även en antydan till att endast dela upp en funktion, utan att använda intentionsavslöjande funktionsnamn, ökar sannolikheten att en programmerare förstår vad funktionen gör. För att kunna dra säkra slutsatser bör ytterligare studier genomföras, där testerna utförs utan tidsbegränsning och på fler testpersoner än i denna studie. Student thesisinfo:eu-repo/semantics/bachelorThesistexthttp://urn.kb.se/resolve?urn=urn:nbn:se:kth:diva-255264TRITA-EECS-EX ; 2019:338application/pdfinfo:eu-repo/semantics/openAccess
collection NDLTD
language English
format Others
sources NDLTD
topic Computer and Information Sciences
Data- och informationsvetenskap
spellingShingle Computer and Information Sciences
Data- och informationsvetenskap
Sunnegårdh, Christina
Eserstam, Klara
Intention-revealing function names and small functions to facilitate code comprehension
description Code comprehension is by many considered to be one of the most expensive and time-consuming phases of the software life cycle. There are multiple techniques for making code more comprehensible, one of them alleged to be keeping functions small. However, the claim that small functions are superior to large functions with regards to code comprehension, are often based upon programming experience and stated without references from research. In these claims the importance of intention-revealing function names to improve codecomprehension is also emphasized. It could therefore be questioned whetherit is keeping functions small or the enabling of intention-revealing functionn ames that underlies the claim of superiority of small functions. This thesis presents previous studies and relevant literature within the area as well as carries out tests using eye tracking. The results of the tests indicated that intention-revealing function names have a significant effect on how fast developers comprehend code. It is also indicated that simply splitting up a function, without using intention-revealing function names, increases the chance for programmers to be able to tell the correct output. To be able to draw reliable conclusions, further studies would be necessary, where the most important improvements would be to provide an unlimited amount of time for each test as well as a larger quantity of test persons. === Kodförståelse anses enligt många vara en av de mest tidskrävande faserna i en programvaras livscykel. Det finns flera tekniker för att göra kod mer begriplig, som till exempel att hålla funktioner korta. Påståendet att korta funktioner är överlägsna långa funktioner med avseende på kodförståelse, är ofta baserat på erfarenhet inom programmering och inte grundat i forskning. I dessa påståenden betonas även vikten av att använda intentionsavslöjande funktionsnamn för att främja kodförståelse. Man kan därför fråga sig om det är själva funktionslängden eller möjligheten att använda intentionsavslöjande namn som ligger bakom påståendet att korta funktioner är fördelaktiga. Denna rapport tar upp tidigare studier och relevant litteratur inom området, samt presenterar resultat från tester menade att undersöka denna fråga. Resultaten från testerna pekar på att intentionsavslöjande funktionsnamn har en signifikant betydelse för hur snabbt utvecklare begriper kod. Det finns även en antydan till att endast dela upp en funktion, utan att använda intentionsavslöjande funktionsnamn, ökar sannolikheten att en programmerare förstår vad funktionen gör. För att kunna dra säkra slutsatser bör ytterligare studier genomföras, där testerna utförs utan tidsbegränsning och på fler testpersoner än i denna studie.
author Sunnegårdh, Christina
Eserstam, Klara
author_facet Sunnegårdh, Christina
Eserstam, Klara
author_sort Sunnegårdh, Christina
title Intention-revealing function names and small functions to facilitate code comprehension
title_short Intention-revealing function names and small functions to facilitate code comprehension
title_full Intention-revealing function names and small functions to facilitate code comprehension
title_fullStr Intention-revealing function names and small functions to facilitate code comprehension
title_full_unstemmed Intention-revealing function names and small functions to facilitate code comprehension
title_sort intention-revealing function names and small functions to facilitate code comprehension
publisher KTH, Skolan för elektroteknik och datavetenskap (EECS)
publishDate 2019
url http://urn.kb.se/resolve?urn=urn:nbn:se:kth:diva-255264
work_keys_str_mv AT sunnegardhchristina intentionrevealingfunctionnamesandsmallfunctionstofacilitatecodecomprehension
AT eserstamklara intentionrevealingfunctionnamesandsmallfunctionstofacilitatecodecomprehension
AT sunnegardhchristina intentionsavslojandefunktionsnamnochkortafunktionerforattunderlattakodforstaelse
AT eserstamklara intentionsavslojandefunktionsnamnochkortafunktionerforattunderlattakodforstaelse
_version_ 1719231627155996672