Cargando…

Ten simple rules on writing clean and reliable open-source scientific software

Functional, usable, and maintainable open-source software is increasingly essential to scientific research, but there is a large variation in formal training for software development and maintainability. Here, we propose 10 “rules” centered on 2 best practice components: clean code and testing. Thes...

Descripción completa

Detalles Bibliográficos
Autores principales: Hunter-Zinck, Haley, de Siqueira, Alexandre Fioravante, Vásquez, Váleri N., Barnes, Richard, Martinez, Ciera C.
Formato: Online Artículo Texto
Lenguaje:English
Publicado: Public Library of Science 2021
Materias:
Acceso en línea:https://www.ncbi.nlm.nih.gov/pmc/articles/PMC8584773/
https://www.ncbi.nlm.nih.gov/pubmed/34762641
http://dx.doi.org/10.1371/journal.pcbi.1009481
_version_ 1784597530526351360
author Hunter-Zinck, Haley
de Siqueira, Alexandre Fioravante
Vásquez, Váleri N.
Barnes, Richard
Martinez, Ciera C.
author_facet Hunter-Zinck, Haley
de Siqueira, Alexandre Fioravante
Vásquez, Váleri N.
Barnes, Richard
Martinez, Ciera C.
author_sort Hunter-Zinck, Haley
collection PubMed
description Functional, usable, and maintainable open-source software is increasingly essential to scientific research, but there is a large variation in formal training for software development and maintainability. Here, we propose 10 “rules” centered on 2 best practice components: clean code and testing. These 2 areas are relatively straightforward and provide substantial utility relative to the learning investment. Adopting clean code practices helps to standardize and organize software code in order to enhance readability and reduce cognitive load for both the initial developer and subsequent contributors; this allows developers to concentrate on core functionality and reduce errors. Clean coding styles make software code more amenable to testing, including unit tests that work best with modular and consistent software code. Unit tests interrogate specific and isolated coding behavior to reduce coding errors and ensure intended functionality, especially as code increases in complexity; unit tests also implicitly provide example usages of code. Other forms of testing are geared to discover erroneous behavior arising from unexpected inputs or emerging from the interaction of complex codebases. Although conforming to coding styles and designing tests can add time to the software development project in the short term, these foundational tools can help to improve the correctness, quality, usability, and maintainability of open-source scientific software code. They also advance the principal point of scientific research: producing accurate results in a reproducible way. In addition to suggesting several tips for getting started with clean code and testing practices, we recommend numerous tools for the popular open-source scientific software languages Python, R, and Julia.
format Online
Article
Text
id pubmed-8584773
institution National Center for Biotechnology Information
language English
publishDate 2021
publisher Public Library of Science
record_format MEDLINE/PubMed
spelling pubmed-85847732021-11-12 Ten simple rules on writing clean and reliable open-source scientific software Hunter-Zinck, Haley de Siqueira, Alexandre Fioravante Vásquez, Váleri N. Barnes, Richard Martinez, Ciera C. PLoS Comput Biol Editorial Functional, usable, and maintainable open-source software is increasingly essential to scientific research, but there is a large variation in formal training for software development and maintainability. Here, we propose 10 “rules” centered on 2 best practice components: clean code and testing. These 2 areas are relatively straightforward and provide substantial utility relative to the learning investment. Adopting clean code practices helps to standardize and organize software code in order to enhance readability and reduce cognitive load for both the initial developer and subsequent contributors; this allows developers to concentrate on core functionality and reduce errors. Clean coding styles make software code more amenable to testing, including unit tests that work best with modular and consistent software code. Unit tests interrogate specific and isolated coding behavior to reduce coding errors and ensure intended functionality, especially as code increases in complexity; unit tests also implicitly provide example usages of code. Other forms of testing are geared to discover erroneous behavior arising from unexpected inputs or emerging from the interaction of complex codebases. Although conforming to coding styles and designing tests can add time to the software development project in the short term, these foundational tools can help to improve the correctness, quality, usability, and maintainability of open-source scientific software code. They also advance the principal point of scientific research: producing accurate results in a reproducible way. In addition to suggesting several tips for getting started with clean code and testing practices, we recommend numerous tools for the popular open-source scientific software languages Python, R, and Julia. Public Library of Science 2021-11-11 /pmc/articles/PMC8584773/ /pubmed/34762641 http://dx.doi.org/10.1371/journal.pcbi.1009481 Text en © 2021 Hunter-Zinck et al https://creativecommons.org/licenses/by/4.0/This is an open access article distributed under the terms of the Creative Commons Attribution License (https://creativecommons.org/licenses/by/4.0/) , which permits unrestricted use, distribution, and reproduction in any medium, provided the original author and source are credited.
spellingShingle Editorial
Hunter-Zinck, Haley
de Siqueira, Alexandre Fioravante
Vásquez, Váleri N.
Barnes, Richard
Martinez, Ciera C.
Ten simple rules on writing clean and reliable open-source scientific software
title Ten simple rules on writing clean and reliable open-source scientific software
title_full Ten simple rules on writing clean and reliable open-source scientific software
title_fullStr Ten simple rules on writing clean and reliable open-source scientific software
title_full_unstemmed Ten simple rules on writing clean and reliable open-source scientific software
title_short Ten simple rules on writing clean and reliable open-source scientific software
title_sort ten simple rules on writing clean and reliable open-source scientific software
topic Editorial
url https://www.ncbi.nlm.nih.gov/pmc/articles/PMC8584773/
https://www.ncbi.nlm.nih.gov/pubmed/34762641
http://dx.doi.org/10.1371/journal.pcbi.1009481
work_keys_str_mv AT hunterzinckhaley tensimplerulesonwritingcleanandreliableopensourcescientificsoftware
AT desiqueiraalexandrefioravante tensimplerulesonwritingcleanandreliableopensourcescientificsoftware
AT vasquezvalerin tensimplerulesonwritingcleanandreliableopensourcescientificsoftware
AT barnesrichard tensimplerulesonwritingcleanandreliableopensourcescientificsoftware
AT martinezcierac tensimplerulesonwritingcleanandreliableopensourcescientificsoftware