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
Description
Summary: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.