Code Sandwiches

Loading...
Thumbnail Image

Date

Authors

Elder, Matt
Jackson, Steve
Liblit, Ben

Advisors

License

DOI

Type

Technical Report

Journal Title

Journal ISSN

Volume Title

Publisher

University of Wisconsin-Madison Department of Computer Sciences

Grantor

Abstract

A code sandwich consists of before, after, and body code. Typically, the before code makes some change, the body code works in the context of the change, and the after code undoes the change. A code sandwich must guarantee that its after code will execute if its before code has executed, even if exceptions arise. This pattern is common to many programming situations, and most modern languages have some language-level support for expressing it. We survey support for code sandwiches in several programming languages and proposed language extensions. We explain why such support can improve a program, consider related features, and discuss desirable properties that a language can provide its programmers. We relate these properties to Jyro, our code sandwich extension to Java. We examine two large, mature open-source programs, find numerous sandwich-related bugs and readability issues, and demonstrate how they might be avoided using our Jyro implementation.

Description

Keywords

Related Material and Data

Citation

TR1647

Sponsorship

Endorsement

Review

Supplemented By

Referenced By