Write a Blog >>
MSR 2018
Mon 28 - Tue 29 May 2018 Gothenburg, Sweden
co-located with * ICSE 2018 *
Mon 28 May 2018 14:34 - 14:51 at E3 room - Programming Practice Chair(s): Romain Robbes

Swift is a new programming language developed by Apple as a replacement to Objective-C. It features a sophisticated error handling (EH) mechanism that provides the kind of separation of concerns afforded by exception handling mechanisms in other languages, while also including constructs to improve safety and maintainability. However, Swift also inherits a software development culture stemming from Objective-C being the de-facto standard program- ming language for Apple platforms for the last 15 years. It is, therefore, a priori unclear whether Swift developers embrace the novel EH mechanisms of the programming language or still rely on the old EH culture of Objective-C even working in Swift. In this paper, we study to what extent developers adhere to good practices exemplified by EH guidelines and tutorials, and what are the common bad EH practices particularly relevant to Swift code. Furthermore, we investigate whether perception of these practices differs between novices and experienced Swift developers. To answer these questions we employ a mixed-methods approach and combine 10 semi-structured interviews with Swift developers and quantitative analysis of 78,760 Swift 4 files extracted from 2,733 open-source GitHub repositories. Our findings indicate that there is ample opportunity to improve the way Swift developers use error handling mechanisms. For instance, some recommendations derived in this work are not well spread in the corpus of studied Swift projects. For example, generic catch handlers are common in Swift (even though it is not uncommon for them to share space with their counterparts: non empty catch handlers), custom, developer-defined error types are rare, and developers are mostly reactive when it comes to error handling, using Swift’s constructs mostly to handle errors thrown by libraries, instead of throwing and handling application-specific errors.

Mon 28 May
Times are displayed in time zone: (GMT+02:00) Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna change

14:00 - 15:30: Technical Papers - Programming Practice at E3 room
Chair(s): Romain RobbesFree University of Bozen-Bolzano
msr-2018-papers14:00 - 14:17
msr-2018-papers14:17 - 14:34
DOI Pre-print Media Attached
msr-2018-papers14:34 - 14:51
Nathan Cassee , Gustavo PintoUFPA, Fernando CastorUFPE, Alexander SerebrenikEindhoven University of Technology
msr-2018-papers14:51 - 15:08
Stefanos GeorgiouAthens University of Economics and Business, Maria KechagiaDelft University of Technology, Panos Louridas , Diomidis SpinellisAthens University of Economics and Business
DOI Pre-print
msr-2018-papers15:08 - 15:15
Asher TrockmanUniversity of Evansville, Keenen Cates , Mark Mozina , Tuan Nguyen , Christian KästnerCarnegie Mellon University, Bogdan VasilescuCarnegie Mellon University
Pre-print Media Attached
msr-2018-papers15:15 - 15:30