An Investigation of confusing code patterns in JavaScript

Evolving software is particularly challenging when the code has been poorly written or uses confusing idioms and language constructs, which might increase maintenance efforts and impose a significant cognitive load on developers. Previous research has investigated possible sources of confusion in pr...

Full description

Saved in:
Bibliographic Details
Published inThe Journal of systems and software Vol. 203; p. 111731
Main Authors Torres, Adriano, Oliveira, Caio, Okimoto, Márcio, Marcílio, Diego, Queiroga, Pedro, Castor, Fernando, Bonifácio, Rodrigo, Canedo, Edna Dias, Ribeiro, Márcio, Monteiro, Eduardo
Format Journal Article
LanguageEnglish
Published Elsevier Inc 01.09.2023
Subjects
Online AccessGet full text
ISSN0164-1212
1873-1228
DOI10.1016/j.jss.2023.111731

Cover

Abstract Evolving software is particularly challenging when the code has been poorly written or uses confusing idioms and language constructs, which might increase maintenance efforts and impose a significant cognitive load on developers. Previous research has investigated possible sources of confusion in programs, including the impact of small code patterns (hereafter atoms of confusion) that contribute to misunderstanding the source code. Although researchers have explored atoms of confusion in code written in C, C++, and Java, different languages have different features, developer communities, and development cultures. This justifies the exploration of other languages to verify whether they also exhibit confusion-inducing patterns. In this paper we investigate the impact of atoms of confusion on understanding JavaScript code—a dynamically typed language whose popularity is growing in the most diverse application domains. We present the results of a mixed-methods research comprising a mining software repositories (MSR) study, two experiments, and a set of interviews with practitioners. Our MSR effort shows that atom candidates are frequent and used intensively in 72 popular open-source JavaScript projects: four atom candidates appear in 90% of them and two of them occur more than once for every 100 lines of code. This helps motivate the other three studies. The results of both experiments suggest that two code patterns that have been previously observed to confuse C programmers also confuse JavaScript programmers: the comma operator and assignments being used as values. In addition, some code patterns, such as omitted curly braces and change of literal encoding, have caused confusion in participants in one of the experiments. We discover that some JavaScript-specific elements, such as automatic semicolon insertion and object destructuring, also have the potential to cause confusion. For all these cases effect sizes were either medium or high. The interviews we conducted indicate other constructs and idioms that merit investigation in the future. •Our study investigates the impact and prevalence of atoms of confusion in JavaScript.•Some atoms proved to confuse C programmers also confuse JavaScript programmers.•JavaScript-specific atom candidates also have the potential to confuse developers.•Examined code patterns are frequent and used intensively in JavaScript projects.
AbstractList Evolving software is particularly challenging when the code has been poorly written or uses confusing idioms and language constructs, which might increase maintenance efforts and impose a significant cognitive load on developers. Previous research has investigated possible sources of confusion in programs, including the impact of small code patterns (hereafter atoms of confusion) that contribute to misunderstanding the source code. Although researchers have explored atoms of confusion in code written in C, C++, and Java, different languages have different features, developer communities, and development cultures. This justifies the exploration of other languages to verify whether they also exhibit confusion-inducing patterns. In this paper we investigate the impact of atoms of confusion on understanding JavaScript code—a dynamically typed language whose popularity is growing in the most diverse application domains. We present the results of a mixed-methods research comprising a mining software repositories (MSR) study, two experiments, and a set of interviews with practitioners. Our MSR effort shows that atom candidates are frequent and used intensively in 72 popular open-source JavaScript projects: four atom candidates appear in 90% of them and two of them occur more than once for every 100 lines of code. This helps motivate the other three studies. The results of both experiments suggest that two code patterns that have been previously observed to confuse C programmers also confuse JavaScript programmers: the comma operator and assignments being used as values. In addition, some code patterns, such as omitted curly braces and change of literal encoding, have caused confusion in participants in one of the experiments. We discover that some JavaScript-specific elements, such as automatic semicolon insertion and object destructuring, also have the potential to cause confusion. For all these cases effect sizes were either medium or high. The interviews we conducted indicate other constructs and idioms that merit investigation in the future. •Our study investigates the impact and prevalence of atoms of confusion in JavaScript.•Some atoms proved to confuse C programmers also confuse JavaScript programmers.•JavaScript-specific atom candidates also have the potential to confuse developers.•Examined code patterns are frequent and used intensively in JavaScript projects.
ArticleNumber 111731
Author Marcílio, Diego
Monteiro, Eduardo
Oliveira, Caio
Castor, Fernando
Canedo, Edna Dias
Okimoto, Márcio
Torres, Adriano
Bonifácio, Rodrigo
Queiroga, Pedro
Ribeiro, Márcio
Author_xml – sequence: 1
  givenname: Adriano
  orcidid: 0000-0003-3754-029X
  surname: Torres
  fullname: Torres, Adriano
  organization: Computer Science Department, University of Brasília, Brazil
– sequence: 2
  givenname: Caio
  surname: Oliveira
  fullname: Oliveira, Caio
  organization: Computer Science Department, University of Brasília, Brazil
– sequence: 3
  givenname: Márcio
  surname: Okimoto
  fullname: Okimoto, Márcio
  organization: Computer Science Department, University of Brasília, Brazil
– sequence: 4
  givenname: Diego
  surname: Marcílio
  fullname: Marcílio, Diego
  organization: Universitá Della Svizzera Italiana, Switzerland
– sequence: 5
  givenname: Pedro
  surname: Queiroga
  fullname: Queiroga, Pedro
  organization: Informatics Center, University Federal of Pernambuco, Brazil
– sequence: 6
  givenname: Fernando
  surname: Castor
  fullname: Castor, Fernando
  organization: Informatics Center, University Federal of Pernambuco, Brazil
– sequence: 7
  givenname: Rodrigo
  orcidid: 0000-0002-2380-2829
  surname: Bonifácio
  fullname: Bonifácio, Rodrigo
  email: rbonifacio@unb.br
  organization: Computer Science Department, University of Brasília, Brazil
– sequence: 8
  givenname: Edna Dias
  orcidid: 0000-0002-2159-339X
  surname: Canedo
  fullname: Canedo, Edna Dias
  organization: Computer Science Department, University of Brasília, Brazil
– sequence: 9
  givenname: Márcio
  orcidid: 0000-0002-4293-4261
  surname: Ribeiro
  fullname: Ribeiro, Márcio
  organization: Institute of Computing, Federal University of Alagoas, Brazil
– sequence: 10
  givenname: Eduardo
  orcidid: 0000-0002-8948-9855
  surname: Monteiro
  fullname: Monteiro, Eduardo
  organization: Statistics Department, University of Brasília, Brazil
BookMark eNp9kMtOwzAQRS1UJNrCB7DLDyR47CROxKqqeBRVYgGsLccZV46KU9kmEn-PS1mx6Gru4p7RzFmQmRsdEnILtAAK9d1QDCEUjDJeAIDgcEHm0AieA2PNjMxTp0wZ2BVZhDBQSkUqz0m7ctnGTRii3aloR5eNJtOjM1_Bul1KPWYHFSN6FzLrshc1qTft7SFek0uj9gFv_uaSfDw-vK-f8-3r02a92uaatSLmbcdB97SreVW1pitVxbqGmpIaUTccG42VMbTv605QgRrrkrcUgbY9b1SpOF8Scdqr_RiCRyO1jb-nRq_sXgKVRwNykMmAPBqQJwOJhH_kwdtP5b_PMvcnBtNLk0Uvg7boNPbWo46yH-0Z-gcHN3Wd
CitedBy_id crossref_primary_10_5753_jserd_2024_4118
crossref_primary_10_1109_TSE_2024_3453783
Cites_doi 10.1348/000711001159357
10.1007/BF02295996
10.1007/s10664-020-09909-5
10.1007/s10664-018-9666-x
10.1147/sj.331.0110
10.1109/ICPC52881.2021.00012
10.4018/IJPOP.2016010103
10.1080/03610911003650383
10.1093/ajcn/73.5.885
ContentType Journal Article
Copyright 2023 Elsevier Inc.
Copyright_xml – notice: 2023 Elsevier Inc.
DBID AAYXX
CITATION
DOI 10.1016/j.jss.2023.111731
DatabaseName CrossRef
DatabaseTitle CrossRef
DatabaseTitleList
DeliveryMethod fulltext_linktorsrc
Discipline Computer Science
EISSN 1873-1228
ExternalDocumentID 10_1016_j_jss_2023_111731
S0164121223001267
GroupedDBID --K
--M
-~X
.DC
.~1
0R~
1B1
1~.
1~5
29L
4.4
457
4G.
5GY
5VS
7-5
71M
8P~
9JN
9M8
AABNK
AACTN
AAEDT
AAEDW
AAIKJ
AAKOC
AALRI
AAOAW
AAQFI
AAQXK
AAXUO
AAYFN
AAYOK
ABBOA
ABEFU
ABFNM
ABFRF
ABFSI
ABJNI
ABMAC
ABTAH
ABXDB
ABYKQ
ACDAQ
ACGFO
ACGFS
ACGOD
ACNNM
ACRLP
ACZNC
ADBBV
ADEZE
ADHUB
ADJOM
ADMUD
AEBSH
AEFWE
AEKER
AENEX
AFKWA
AFTJW
AGHFR
AGUBO
AGYEJ
AHHHB
AHZHX
AI.
AIALX
AIEXJ
AIKHN
AITUG
AJBFU
AJOXV
ALMA_UNASSIGNED_HOLDINGS
AMFUW
AMRAJ
AOUOD
ASPBG
AVWKF
AXJTR
AZFZN
BKOJK
BKOMP
BLXMC
CS3
DU5
E.L
EBS
EFJIC
EFLBG
EJD
EO8
EO9
EP2
EP3
FDB
FEDTE
FGOYB
FIRID
FNPLU
FYGXN
G-Q
G8K
GBLVA
GBOLZ
HLZ
HVGLF
HZ~
IHE
J1W
KOM
LG9
M41
MO0
MS~
N9A
O-L
O9-
OAUVE
OZT
P-8
P-9
P2P
PC.
PQQKQ
Q38
R2-
RIG
RNS
ROL
RPZ
RXW
SBC
SDF
SDG
SDP
SES
SEW
SPC
SPCBC
SSV
SSZ
T5K
TAE
TN5
TWZ
UHS
UNMZH
VH1
WUQ
XPP
ZMT
ZY4
~G-
AATTM
AAXKI
AAYWO
AAYXX
ABDPE
ABWVN
ACRPL
ACVFH
ADCNI
ADNMO
AEIPS
AEUPX
AFJKZ
AFPUW
AFXIZ
AGCQF
AGQPQ
AGRNS
AIGII
AIIUN
AKBMS
AKRWK
AKYEP
ANKPU
APXCP
BNPGV
CITATION
SSH
ID FETCH-LOGICAL-c297t-9b31cd0b63559fb4a52b80f40f7683e8ce5ff0dd6b707ece64390e109d38a4a33
IEDL.DBID .~1
ISSN 0164-1212
IngestDate Tue Jul 01 03:45:12 EDT 2025
Thu Apr 24 23:06:08 EDT 2025
Fri Feb 23 02:37:04 EST 2024
IsDoiOpenAccess false
IsOpenAccess true
IsPeerReviewed true
IsScholarly true
Keywords Software maintenance
Program comprehension
JavaScript code
Atoms of confusion
Program understanding
Language English
LinkModel DirectLink
MergedId FETCHMERGED-LOGICAL-c297t-9b31cd0b63559fb4a52b80f40f7683e8ce5ff0dd6b707ece64390e109d38a4a33
ORCID 0000-0002-8948-9855
0000-0003-3754-029X
0000-0002-2380-2829
0000-0002-4293-4261
0000-0002-2159-339X
ParticipantIDs crossref_citationtrail_10_1016_j_jss_2023_111731
crossref_primary_10_1016_j_jss_2023_111731
elsevier_sciencedirect_doi_10_1016_j_jss_2023_111731
ProviderPackageCode CITATION
AAYXX
PublicationCentury 2000
PublicationDate September 2023
2023-09-00
PublicationDateYYYYMMDD 2023-09-01
PublicationDate_xml – month: 09
  year: 2023
  text: September 2023
PublicationDecade 2020
PublicationTitle The Journal of systems and software
PublicationYear 2023
Publisher Elsevier Inc
Publisher_xml – name: Elsevier Inc
References de Moor, Sereni, Verbaere, Hajiyev, Avgustinov, Ekman, Ongkingco, Tibble (b7) 2007; vol. 5235
Cabral, Marques (b3) 2007; vol. 4609
Ellis (b12) 2010
Gopstein, Iannacone, Yan, DeLong, Zhuang, Yeh, Cappos (b16) 2017
Hermans (b19) 2021
Weggemans, Zock, Katan (b31) 2001; 73
Castor (b5) 2018; 1
Canedo, Bonifácio, Okimoto, Serebrenik, Pinto, Monteiro (b4) 2020
McNemar (b23) 1947; 12
George, Hunter, Hunter (b14) 2005
Oliveira, Bruno, Madeiral, Castor (b27) 2020
Romano, Kromrey, Coraggio, Skowronek (b29) 2006
Tilley, Smith, Paul (b30) 1996
Alves, Oliveira, Madeiral, Castor (b2) 2022
Feitelson (b13) 2021
Chen, Cohen, Chen (b6) 2010; 39
Eich (b11) 2018
Medeiros, Lima, Amaral, Apel, Kästner, Ribeiro, Gheyi (b24) 2019; 24
Neely (b25) 1991
Ebad, Manzoor (b9) 2016; 5
Keselman, Algina, Kowalchuk (b20) 2001; 54
O’Hare, Troan (b26) 1994; 33
de Oliveira, Ribeiro, da Costa, Gheyi, Amaral, de Mello, Oliveira, Garcia, Bonifácio, Fonseca (b8) 2020
Mangiafico (b22) 2016
Gyimesi, Vancsics, Stocco, Mazinanian, Beszédes, Ferenc, Mesbah (b18) 2019
Gopstein, Zhou, Frankl, Cappos (b17) 2018
Rodriguez-Prieto, Ortin (b28) 2020
Gopstein, Fayard, Apel, Cappos (b15) 2020
Ebert, Castor, Novielli, Serebrenik (b10) 2021; 26
Langhout, C., Aniche, M., 2021. Atoms of Confusion in Java. In: Proceedings of the 29th IEEE/ACM International Conference on Program Comprehension. ICPC ’21, New York, NY, USA.
Ajami, Woodbridge, Feitelson (b1) 2017
Rodriguez-Prieto (10.1016/j.jss.2023.111731_b28) 2020
Gopstein (10.1016/j.jss.2023.111731_b17) 2018
Romano (10.1016/j.jss.2023.111731_b29) 2006
Hermans (10.1016/j.jss.2023.111731_b19) 2021
de Oliveira (10.1016/j.jss.2023.111731_b8) 2020
Ajami (10.1016/j.jss.2023.111731_b1) 2017
Cabral (10.1016/j.jss.2023.111731_b3) 2007; vol. 4609
Ebad (10.1016/j.jss.2023.111731_b9) 2016; 5
Oliveira (10.1016/j.jss.2023.111731_b27) 2020
Ebert (10.1016/j.jss.2023.111731_b10) 2021; 26
Mangiafico (10.1016/j.jss.2023.111731_b22) 2016
Neely (10.1016/j.jss.2023.111731_b25) 1991
Gopstein (10.1016/j.jss.2023.111731_b15) 2020
Tilley (10.1016/j.jss.2023.111731_b30) 1996
Alves (10.1016/j.jss.2023.111731_b2) 2022
Ellis (10.1016/j.jss.2023.111731_b12) 2010
Canedo (10.1016/j.jss.2023.111731_b4) 2020
McNemar (10.1016/j.jss.2023.111731_b23) 1947; 12
Gyimesi (10.1016/j.jss.2023.111731_b18) 2019
Gopstein (10.1016/j.jss.2023.111731_b16) 2017
Medeiros (10.1016/j.jss.2023.111731_b24) 2019; 24
Eich (10.1016/j.jss.2023.111731_b11) 2018
Feitelson (10.1016/j.jss.2023.111731_b13) 2021
Chen (10.1016/j.jss.2023.111731_b6) 2010; 39
Weggemans (10.1016/j.jss.2023.111731_b31) 2001; 73
Castor (10.1016/j.jss.2023.111731_b5) 2018; 1
10.1016/j.jss.2023.111731_b21
O’Hare (10.1016/j.jss.2023.111731_b26) 1994; 33
Keselman (10.1016/j.jss.2023.111731_b20) 2001; 54
de Moor (10.1016/j.jss.2023.111731_b7) 2007; vol. 5235
George (10.1016/j.jss.2023.111731_b14) 2005
References_xml – start-page: 605
  year: 2020
  end-page: 616
  ident: b15
  publication-title: Thinking Aloud about Confusing Code: A Qualitative Investigation of Program Comprehension and Atoms of Confusion
– start-page: 106
  year: 2021
  end-page: 117
  ident: b13
  article-title: Considerations and pitfalls in controlled experiments on code comprehension
  publication-title: 29th IEEE/ACM International Conference on Program Comprehension
– reference: Langhout, C., Aniche, M., 2021. Atoms of Confusion in Java. In: Proceedings of the 29th IEEE/ACM International Conference on Program Comprehension. ICPC ’21, New York, NY, USA.
– year: 2020
  ident: b28
  article-title: An efficient and scalable platform for java source code analysis using overlaid graph representations (support material website)
– start-page: 90
  year: 2019
  end-page: 101
  ident: b18
  article-title: Bugsjs: A benchmark of javascript bugs
  publication-title: 2019 12th IEEE Conference on Software Testing, Validation and Verification (ICST)
– volume: 26
  start-page: 12
  year: 2021
  ident: b10
  article-title: An exploratory study on confusion in code reviews
  publication-title: Empir. Softw. Eng.
– year: 2016
  ident: b22
  article-title: Summary and Analysis of Extension Program Evaluation in R
– volume: 73
  start-page: 885
  year: 2001
  end-page: 891
  ident: b31
  article-title: Dietary cholesterol from eggs increases the ratio of total cholesterol to high-density lipoprotein cholesterol in humans: a meta-analysis
  publication-title: Am. J. Clin. Nutr.
– year: 2022
  ident: b2
  article-title: On the bug-proneness of structures inspired by functional programming in JavaScript projects
– start-page: 19
  year: 1996
  ident: b30
  article-title: Towards a framework for program understanding
  publication-title: WPC
– start-page: 129
  year: 2017
  end-page: 139
  ident: b16
  article-title: Understanding misunderstandings in source code
  publication-title: ESEC/SIGSOFT FSE
– volume: 24
  start-page: 1693
  year: 2019
  end-page: 1726
  ident: b24
  article-title: An investigation of misunderstanding code patterns in C open-source software projects
  publication-title: Empir. Softw. Eng.
– volume: 54
  start-page: 1
  year: 2001
  end-page: 20
  ident: b20
  article-title: The analysis of repeated measures designs: A review
  publication-title: Br. J. Math. Stat. Psychol.
– start-page: 66
  year: 2017
  end-page: 76
  ident: b1
  article-title: Syntax, predicates, idioms: what really affects code complexity?
  publication-title: Proceedings of the 25th International Conference on Program Comprehension, ICPC
– volume: 5
  start-page: 39
  year: 2016
  end-page: 60
  ident: b9
  article-title: An empirical comparison of Java and C# programs in following naming conventions
  publication-title: Int. J. People Orient. Program.
– year: 2005
  ident: b14
  article-title: Statistics for Experimenters: Design, Innovation, and Discovery
– year: 2021
  ident: b19
  article-title: The Programmer’s Brain: What Every Programmer Needs to Know About Cognition
– start-page: 26:1
  year: 2020
  end-page: 26:11
  ident: b4
  article-title: Work practices and perceptions from women core developers in OSS communities
  publication-title: ESEM ’20: ACM / IEEE International Symposium on Empirical Software Engineering and Measurement, Bari, Italy, October 5-7, 2020
– volume: vol. 4609
  start-page: 151
  year: 2007
  end-page: 175
  ident: b3
  article-title: Exception handling: A field study in Java and .NET
  publication-title: ECOOP 2007 - Object-Oriented Programming, 21st European Conference, Berlin, Germany, July 30 - August 3, 2007, Proceedings
– start-page: 281
  year: 2018
  end-page: 291
  ident: b17
  article-title: Prevalence of confusing code in software projects: atoms of confusion in the wild
  publication-title: MSR
– volume: 12
  start-page: 153
  year: 1947
  end-page: -157
  ident: b23
  article-title: Note on the sampling error of the difference between correlated proportions or percentages
  publication-title: Psychometrika
– start-page: 1
  year: 2006
  end-page: 3
  ident: b29
  article-title: Appropriate statistics for ordinal level data: Should we really be using t-test and Cohen’sd for evaluating group differences on the NSSE and other surveys?
  publication-title: Proceedings of the Annual Meeting of the Florida Association of Institutional Research
– start-page: 243
  year: 2020
  end-page: 252
  ident: b8
  article-title: Atoms of confusion: The eyes do not Lie
  publication-title: Proceedings of the 34th Brazilian Symposium on Software Engineering
– start-page: 264
  year: 1991
  end-page: 336
  ident: b25
  article-title: Semantic priming effects in visual word recognition: A selective review of current findings and theories
  publication-title: Basic Processes in Reading: Visual Word Recognition
– volume: 39
  start-page: 860
  year: 2010
  end-page: 864
  ident: b6
  article-title: How big is a big odds ratio? Interpreting the magnitudes of odds ratios in epidemiological studies
  publication-title: Comm. Statist. Simulation Comput.
– start-page: 348
  year: 2020
  end-page: 359
  ident: b27
  article-title: Evaluating code readability and legibility: An examination of human-centric studies
  publication-title: Proceedings of the IEEE International Conference on Software Maintenance and Evolution
– volume: 1
  start-page: 1
  year: 2018
  end-page: 8
  ident: b5
  article-title: Identifying confusing code in swift programs
  publication-title: In Proceedings of the VI CBSoft Workshop on Visualization, Evolution, and Maintenance
– volume: vol. 5235
  start-page: 78
  year: 2007
  end-page: 133
  ident: b7
  article-title: .QL: Object-oriented queries made easy
  publication-title: Generative and Transformational Techniques in Software Engineering II, International Summer School, GTTSE 2007, Braga, Portugal, July 2-7, 2007. Revised Papers
– year: 2018
  ident: b11
  article-title: A brief history of JavaScript
– year: 2010
  ident: b12
  article-title: The Essential Guide to Effect Sizes: Statistical Power, Meta-Analysis, and the Interpretation of Research Results
– volume: 33
  start-page: 110
  year: 1994
  end-page: 130
  ident: b26
  article-title: RE-analyzer: From source code to structured analysis
  publication-title: IBM Syst. J.
– year: 2016
  ident: 10.1016/j.jss.2023.111731_b22
– start-page: 243
  year: 2020
  ident: 10.1016/j.jss.2023.111731_b8
  article-title: Atoms of confusion: The eyes do not Lie
– start-page: 90
  year: 2019
  ident: 10.1016/j.jss.2023.111731_b18
  article-title: Bugsjs: A benchmark of javascript bugs
– volume: 54
  start-page: 1
  issue: 1
  year: 2001
  ident: 10.1016/j.jss.2023.111731_b20
  article-title: The analysis of repeated measures designs: A review
  publication-title: Br. J. Math. Stat. Psychol.
  doi: 10.1348/000711001159357
– start-page: 281
  year: 2018
  ident: 10.1016/j.jss.2023.111731_b17
  article-title: Prevalence of confusing code in software projects: atoms of confusion in the wild
– volume: 12
  start-page: 153
  year: 1947
  ident: 10.1016/j.jss.2023.111731_b23
  article-title: Note on the sampling error of the difference between correlated proportions or percentages
  publication-title: Psychometrika
  doi: 10.1007/BF02295996
– volume: 26
  start-page: 12
  issue: 1
  year: 2021
  ident: 10.1016/j.jss.2023.111731_b10
  article-title: An exploratory study on confusion in code reviews
  publication-title: Empir. Softw. Eng.
  doi: 10.1007/s10664-020-09909-5
– year: 2010
  ident: 10.1016/j.jss.2023.111731_b12
– volume: 24
  start-page: 1693
  issue: 4
  year: 2019
  ident: 10.1016/j.jss.2023.111731_b24
  article-title: An investigation of misunderstanding code patterns in C open-source software projects
  publication-title: Empir. Softw. Eng.
  doi: 10.1007/s10664-018-9666-x
– start-page: 66
  year: 2017
  ident: 10.1016/j.jss.2023.111731_b1
  article-title: Syntax, predicates, idioms: what really affects code complexity?
– year: 2018
  ident: 10.1016/j.jss.2023.111731_b11
– volume: 33
  start-page: 110
  issue: 1
  year: 1994
  ident: 10.1016/j.jss.2023.111731_b26
  article-title: RE-analyzer: From source code to structured analysis
  publication-title: IBM Syst. J.
  doi: 10.1147/sj.331.0110
– year: 2022
  ident: 10.1016/j.jss.2023.111731_b2
– start-page: 26:1
  year: 2020
  ident: 10.1016/j.jss.2023.111731_b4
  article-title: Work practices and perceptions from women core developers in OSS communities
– volume: vol. 4609
  start-page: 151
  year: 2007
  ident: 10.1016/j.jss.2023.111731_b3
  article-title: Exception handling: A field study in Java and .NET
– ident: 10.1016/j.jss.2023.111731_b21
  doi: 10.1109/ICPC52881.2021.00012
– start-page: 605
  year: 2020
  ident: 10.1016/j.jss.2023.111731_b15
– volume: 5
  start-page: 39
  issue: 1
  year: 2016
  ident: 10.1016/j.jss.2023.111731_b9
  article-title: An empirical comparison of Java and C# programs in following naming conventions
  publication-title: Int. J. People Orient. Program.
  doi: 10.4018/IJPOP.2016010103
– start-page: 106
  year: 2021
  ident: 10.1016/j.jss.2023.111731_b13
  article-title: Considerations and pitfalls in controlled experiments on code comprehension
– year: 2005
  ident: 10.1016/j.jss.2023.111731_b14
– start-page: 19
  year: 1996
  ident: 10.1016/j.jss.2023.111731_b30
  article-title: Towards a framework for program understanding
– volume: 39
  start-page: 860
  issue: 4
  year: 2010
  ident: 10.1016/j.jss.2023.111731_b6
  article-title: How big is a big odds ratio? Interpreting the magnitudes of odds ratios in epidemiological studies
  publication-title: Comm. Statist. Simulation Comput.
  doi: 10.1080/03610911003650383
– year: 2020
  ident: 10.1016/j.jss.2023.111731_b28
– start-page: 264
  year: 1991
  ident: 10.1016/j.jss.2023.111731_b25
  article-title: Semantic priming effects in visual word recognition: A selective review of current findings and theories
– volume: 73
  start-page: 885
  issue: 5
  year: 2001
  ident: 10.1016/j.jss.2023.111731_b31
  article-title: Dietary cholesterol from eggs increases the ratio of total cholesterol to high-density lipoprotein cholesterol in humans: a meta-analysis
  publication-title: Am. J. Clin. Nutr.
  doi: 10.1093/ajcn/73.5.885
– start-page: 348
  year: 2020
  ident: 10.1016/j.jss.2023.111731_b27
  article-title: Evaluating code readability and legibility: An examination of human-centric studies
– volume: 1
  start-page: 1
  issue: 6
  year: 2018
  ident: 10.1016/j.jss.2023.111731_b5
  article-title: Identifying confusing code in swift programs
  publication-title: In Proceedings of the VI CBSoft Workshop on Visualization, Evolution, and Maintenance
– year: 2021
  ident: 10.1016/j.jss.2023.111731_b19
– start-page: 129
  year: 2017
  ident: 10.1016/j.jss.2023.111731_b16
  article-title: Understanding misunderstandings in source code
– volume: vol. 5235
  start-page: 78
  year: 2007
  ident: 10.1016/j.jss.2023.111731_b7
  article-title: .QL: Object-oriented queries made easy
– start-page: 1
  year: 2006
  ident: 10.1016/j.jss.2023.111731_b29
  article-title: Appropriate statistics for ordinal level data: Should we really be using t-test and Cohen’sd for evaluating group differences on the NSSE and other surveys?
SSID ssj0007202
Score 2.3944764
Snippet Evolving software is particularly challenging when the code has been poorly written or uses confusing idioms and language constructs, which might increase...
SourceID crossref
elsevier
SourceType Enrichment Source
Index Database
Publisher
StartPage 111731
SubjectTerms Atoms of confusion
JavaScript code
Program comprehension
Program understanding
Software maintenance
Title An Investigation of confusing code patterns in JavaScript
URI https://dx.doi.org/10.1016/j.jss.2023.111731
Volume 203
hasFullText 1
inHoldings 1
isFullTextHit
isPrint
journalDatabaseRights – providerCode: PRVESC
  databaseName: Baden-Württemberg Complete Freedom Collection (Elsevier)
  customDbUrl:
  eissn: 1873-1228
  dateEnd: 99991231
  omitProxy: true
  ssIdentifier: ssj0007202
  issn: 0164-1212
  databaseCode: GBLVA
  dateStart: 20110101
  isFulltext: true
  titleUrlDefault: https://www.sciencedirect.com
  providerName: Elsevier
– providerCode: PRVESC
  databaseName: Elsevier ScienceDirect
  customDbUrl:
  eissn: 1873-1228
  dateEnd: 99991231
  omitProxy: true
  ssIdentifier: ssj0007202
  issn: 0164-1212
  databaseCode: .~1
  dateStart: 19950101
  isFulltext: true
  titleUrlDefault: https://www.sciencedirect.com
  providerName: Elsevier
– providerCode: PRVESC
  databaseName: Elsevier SD Complete Freedom Collection [SCCMFC]
  customDbUrl:
  eissn: 1873-1228
  dateEnd: 99991231
  omitProxy: true
  ssIdentifier: ssj0007202
  issn: 0164-1212
  databaseCode: ACRLP
  dateStart: 19950101
  isFulltext: true
  titleUrlDefault: https://www.sciencedirect.com
  providerName: Elsevier
– providerCode: PRVESC
  databaseName: Elsevier SD Freedom Collection Journals [SCFCJ]
  customDbUrl:
  eissn: 1873-1228
  dateEnd: 99991231
  omitProxy: true
  ssIdentifier: ssj0007202
  issn: 0164-1212
  databaseCode: AIKHN
  dateStart: 19950101
  isFulltext: true
  titleUrlDefault: https://www.sciencedirect.com
  providerName: Elsevier
– providerCode: PRVLSH
  databaseName: Elsevier Journals
  customDbUrl:
  mediaType: online
  eissn: 1873-1228
  dateEnd: 99991231
  omitProxy: true
  ssIdentifier: ssj0007202
  issn: 0164-1212
  databaseCode: AKRWK
  dateStart: 19950101
  isFulltext: true
  providerName: Library Specific Holdings
link http://utb.summon.serialssolutions.com/2.0.0/link/0/eLvHCXMwnV1LSwMxEB5KvXjxLdZHycGTsDbZZF_HUiy1Qi-10NuSZBNpkW2xq0d_u5l9aAX14HGXGVhms1--Yb_5AnCdMSVC6zpVHSvhiSDhXiIE90JtrNIsc4BYun1OwtFMjOfBvAWDZhYGZZU19leYXqJ1fadXV7O3Xix6UzSHYg55HYl2KBviRDm6f7k1ffv-JfOI_FJ3iMEeRjd_NkuN13KDjt0-R-CIOPt5b9rab4YHsFcTRdKvnuUQWiY_gv3mEAZSf5PHkPRzsmWWscrJyhLX5FpUtD8RHFkn69JEM9-QRU7G8k1OS6g4gdnw7nEw8urzEDztJ1HhJYoznVGFHCGxSsjAVzG1glrXM3ATaxNYS7MsVBGNjDZINqhhNMl4LIXk_BTa-So3Z0C4UNYyHWSMGsGkcSxQUyNlxK0WoYw6QJtKpLo2C8czK57TRhW2TF3xUixeWhWvAzefKevKKeOvYNGUN_32ulOH5L-nnf8v7QJ28aqShl1Cu3h5NVeOSxSqWy6WLuz07x9Gkw84NMdc
linkProvider Elsevier
linkToHtml http://utb.summon.serialssolutions.com/2.0.0/link/0/eLvHCXMwnV07T8MwGPxU2gEW3ojy9MCEFNWunTgZq4oqfdClrdQtsh0btUJpRQu_HzsPVCRgYE38SdHFOZ-V830ADymRLDB2p6pCyTzmR9SLGKNeoLSRiqSWEPO0z3EQz9hg7s9r0K3OwjhbZcn9BafnbF1eaZVottaLRWviwqGIZV4roi3LBnwPGsy3nFyHRqc_jMdfhMzbufXQjfdcQfVzM7d5LTcutLtNHXdwSn5ennaWnN4xHJZaEXWKxzmBms5O4ajqw4DKz_IMok6GdvIyVhlaGWT3ucaZ2l-QO7WO1nmOZrZBiwwNxIeY5GxxDrPe07Qbe2VLBE-1I771IkmJSrF0MiEykgm_LUNsGDZ220B1qLRvDE7TQHLMtdJOb2BNcJTSUDBB6QXUs1WmLwFRJo0hyk8J1owIbYWgwloITo1igeBNwBUSiSrzwl3bitekMoYtEwte4sBLCvCa8PhVsi7CMv4azCp4k29vPLFk_nvZ1f_K7mE_nj6PklF_PLyGA3encIrdQH379q5vrbTYyrty6nwCFxjKBw
openUrl ctx_ver=Z39.88-2004&ctx_enc=info%3Aofi%2Fenc%3AUTF-8&rfr_id=info%3Asid%2Fsummon.serialssolutions.com&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=article&rft.atitle=An+Investigation+of+confusing+code+patterns+in+JavaScript&rft.jtitle=The+Journal+of+systems+and+software&rft.au=Torres%2C+Adriano&rft.au=Oliveira%2C+Caio&rft.au=Okimoto%2C+M%C3%A1rcio&rft.au=Marc%C3%ADlio%2C+Diego&rft.date=2023-09-01&rft.issn=0164-1212&rft.volume=203&rft.spage=111731&rft_id=info:doi/10.1016%2Fj.jss.2023.111731&rft.externalDBID=n%2Fa&rft.externalDocID=10_1016_j_jss_2023_111731
thumbnail_l http://covers-cdn.summon.serialssolutions.com/index.aspx?isbn=/lc.gif&issn=0164-1212&client=summon
thumbnail_m http://covers-cdn.summon.serialssolutions.com/index.aspx?isbn=/mc.gif&issn=0164-1212&client=summon
thumbnail_s http://covers-cdn.summon.serialssolutions.com/index.aspx?isbn=/sc.gif&issn=0164-1212&client=summon