Program (2mb PDF)

  Invited Speakers
  Research Papers
  Student Research Comp.
  Doctoral Symposium
  Educators' Symposium
  Wiki Symposium
  Dynamic Lang. Symp.
  Practitioner Reports
  Lightning Talks
  Instant Arts School Exp.
Other Events
Resort Map (364kb PDF)
Resort Map (JPG)



view, help

"Effective Interface Design"




  > Tutorials > All Tutorials

 : Monday Morning Tutorials (8:30 - 12:00) : Monday : Programming Techniques

Effective Interface Design

Monday, 8:30, half day



Kevlin Henney, Curbralan Limited

Tutorial number: 25

Seven Recommendations for Improving the Design of Interfaces in Code

Much is made of the pure interface mechanism found in Java, C#, IDLs, and other languages, but this enthusiasm is often not accompanied with advice on effective use. Interfaces are often sold short as a poor relative of abstract classes. How can developers design interfaces that are stable, sufficient, extensible, and sensitive to their context of use, such as callbacks or multithreading?

This talk selects seven recommendations that support effective interface design, whether the interfaces in question are object oriented, procedural, purely abstract, or simply the publicly available methods on a class. The recommendations are drawn from the thirteen recommendations of the Programmer's Dozen, presented at two previous OOPSLA conferences. C, C++, C#, Java, CORBA IDL, and UML are used to illustrate various examples, counterexamples, and principles.

Intermediate: This tutorial is targeted at people who write code for a living, typically using a curly-bracket language (C++, C#, Java, etc.) and are looking for some extra advice on how to partition their code with stable and intentional interfaces.

Kevlin Henney, Curbralan Limited:  Kevlin Henney is an independent consultant and trainer based in the UK. The focus of his work is in programming languages, OO, UML, agile development, patterns, and software architecture. At various times he has been a regular and irregular columnist for C/C++ Users Journal (online), Application Development Advisor (UK), JavaSpektrum (Germany), Java Report, and C++ Report. He is also on committees and advisory boards for various conferences, language standards, and other software-related organizations (always keeping in mind that "a committee is a cul-de-sac down which ideas are lured and then quietly strangled"...), and is a popular speaker at conferences in North America and Europe.