The Little Manual of API Design

Dec 17, 2009 16:01

Рекомендуется к прочтению: http://chaos.troll.no/~shausman/api-design/api-design.pdf тем, кто еще не читал. :)

This manual gathers together the key insights into API design that were discovered through many years of software development on the Qt application ( Read more... )

qt, api, design, floss

Leave a comment

Comments 4

vitus_wagner December 17 2009, 14:12:22 UTC
А-А-А! HIG для интерфейсов разработчика.

Reply

abbra December 17 2009, 14:46:52 UTC
Примерно год назад я прошелся по VAPI файлам для GTK+ и обнаружил, что практически везде идеи в API довольно хорошо прослеживаются и не противоречат принципам, подобным описанию в The Little Manual of API Design. При этом если смотреть на представление того же API в C, для некоторых нетривиальных вещей глаз просто отказывается эти идеи парсить.

В этом смысле интересным продуктивным подходом было бы целенаправленное планирование API на некотором нереальном языке, без практического использования, а потом последовательное уменьшение получающегося вывода на целевой язык программирования. Интересно, насколько такую задачу минимакса можно автоматизировать?

Reply

vitus_wagner December 17 2009, 15:08:48 UTC
Ну это, всяких IDL уже наизобретали. По-моему, идея реализации отдельного языка описания интерфейсов на примере всяких Corba и прочих Active-X давно и надежно показала свою бесперспективность.

По-моему, куда более правильным подходом является использование для описания сложных API вполне реального языка. Но не С или C++, а чего-нибудь вроде Python. Где есть необязательные паркметры, ключевые параметры, списки, tuple и прочее и прочее.

Reply

abbra December 17 2009, 15:17:59 UTC
Не, большинство этих IDL рассчитаны на отражение API в какой-нибудь протокол передачи данных, вроде ASN.1 или подобных осложнений. В результате, IDL получается описывающим структуры данных, а не семантические реляции между методами и данными.

Использование реального языка предполагает, что прогнозируемое API будет изначально учитывать семантические особенности этого реального языка. Вот такого хотелось бы избежать.

Reply


Leave a comment

Up