Permalink
Cannot retrieve contributors at this time
Name already in use
A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
2018-web/data/talks/PC-52797.yaml
Go to fileThis commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
39 lines (25 sloc)
1.74 KB
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # Talk details are specified in YAML files | |
| # YAML was selected because we can use multi-line strings and add | |
| # comments in the file. | |
| speaker_name: "Paul Ganssle" | |
| talk_title: "Gathering Related Functionality: Patterns for Clean API Design" | |
| # At least 1 tag is necessary!! | |
| talk_tags: | |
| - "library" | |
| - "api design" | |
| - "clean code" | |
| talk_abstract: "This talk will arm you with some tools to design a library that 'just works', but also has obvious escape hatches to handle corner cases. It covers several patterns for cleanly organizing related and overlapping functionality in a way that statisfies both humans and static analysis tools." | |
| talk_details: | | |
| What do you do when you have to choose between designing your function for one of two common use cases? | |
| How about when the same logical operations (say, multiplication or concatenation) need to have different implementations depending on the type of the arguments they are applied to? | |
| These kinds of questions can be vexing when trying to design a clean, well-scoped API. | |
| This talk will cover several strategies for grouping related functionality in a way that presents a logically clean interface to both humans and static analysis tools like type checkers and document generators. | |
| This talk covers: | |
| - Alternate constructors with `@classmethod` | |
| - Inheritance with ``@staticmethod`` and `@classmethod` | |
| - Dispatch by type | |
| - A new convention for namespacing functions: `variants` | |
| # Markdown is supported | |
| about_author: 'Paul Ganssle is a software developer at Bloomberg and a maintainer of several open source libraries including `dateutil` and `setuptools`, and a contributor to many other FOSS projects.' | |
| # web link will only show if about_author section is present | |
| author_website: 'https://ganssle.io' |