@inproceedings{83824e2beb7f45dbbe9f6ac1005246db,
title = "Where to Start: Studying Type Annotation Practices in Python",
abstract = "Dynamic programming languages have been embracing gradual typing, which supports optional type annotations in source code. Type-annotating a complex and long-lasting codebase is indeed a gradual and expensive process, where two issues have troubled developers. First, there is few guidance about how to implement type annotations due to the existence of non-trivial type practices; second, there is few guidance about which portion of a codebase should be type-annotated first. To address these issues, this paper investigates the patterns of non-trivial type-annotation practices and features of type-annotated code files. Our study detected six patterns of type-annotation practices, which involve recovering and expressing design concerns. Moreover, we revealed three complementary features of type-annotated files. Besides, we implemented a tool for studying optional typing practice. We suggest that: 1) design concerns should be considered to improve type annotation implementation by following at least six patterns; 2) files critical to software architecture could be type-annotated in priority. We believe these guidelines would promote a better type annotation practice for dynamic languages.",
keywords = "Dynamic languages, Type annotation",
author = "Wuxia Jin and Dinghong Zhong and Zifan Ding and Ming Fan and Ting Liu",
note = "Publisher Copyright: {\textcopyright} 2021 IEEE.; 36th IEEE/ACM International Conference on Automated Software Engineering, ASE 2021 ; Conference date: 15-11-2021 Through 19-11-2021",
year = "2021",
doi = "10.1109/ASE51524.2021.9678947",
language = "英语",
series = "Proceedings - 2021 36th IEEE/ACM International Conference on Automated Software Engineering, ASE 2021",
publisher = "Institute of Electrical and Electronics Engineers Inc.",
pages = "529--541",
booktitle = "Proceedings - 2021 36th IEEE/ACM International Conference on Automated Software Engineering, ASE 2021",
}