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...
Saved in:
Published in | The Journal of systems and software Vol. 203; p. 111731 |
---|---|
Main Authors | , , , , , , , , , |
Format | Journal Article |
Language | English |
Published |
Elsevier Inc
01.09.2023
|
Subjects | |
Online Access | Get full text |
ISSN | 0164-1212 1873-1228 |
DOI | 10.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 |