{"id":2392,"date":"2018-10-30T14:16:11","date_gmt":"2018-10-30T13:16:11","guid":{"rendered":"https:\/\/www.entropywins.wtf\/blog\/?p=2392"},"modified":"2018-10-30T14:16:11","modified_gmt":"2018-10-30T13:16:11","slug":"readable-functions-do-one-thing","status":"publish","type":"post","link":"https:\/\/www.entropywins.wtf\/blog\/2018\/10\/30\/readable-functions-do-one-thing\/","title":{"rendered":"Readable Functions: Do One Thing"},"content":{"rendered":"<p>Several tricks and heuristics that I apply to write easy to understand functions keep coming up when I look at other people their code. This post outlines the second key principle. The first principle is <a href=\"https:\/\/www.entropywins.wtf\/blog\/2018\/10\/24\/readable-functions-minimize-state\/\">Minimize State<\/a>. Following posts will contain specific tips and tricks, often building on these two principles.<\/p>\n<h3>Do One Thing<\/h3>\n<p>Often functions become less readable because they are doing multiple things. If your function Foo needs to do tasks A, B and C, then create a function for each of the tasks and call those from Foo.<\/p>\n<p><strong>Having small functions is OK<\/strong>. Having just 3 calls to other functions in your function is OK. Don&#8217;t be afraid of &#8220;too simple&#8221; code or of this style making things harder to follow (it does not (unless you are splitting things up stupidly)). And don&#8217;t be afraid of performance. In most programs the amount of function calls have effectively 0 impact on performance. There are exceptions, though unless you know you are dealing with one of these, don&#8217;t mash things together for performance reasons.<\/p>\n<h3>One Level of Abstraction<\/h3>\n<p>Doing one thing includes dealing with a single level of abstraction. For instance, suppose you have a function in which in some cases a message needs to be logged to the file system.<\/p>\n<pre class=\"lang:php decode:true \">function doThing() {\n    if (condition) {\n        low_level_write_api_call('write-mode', $this-&gt;somePath, 'Some error message');\n    }\n}<\/pre>\n<p>Here the details of how the error message is logged are on a lower level of abstraction than the rest of the function. This makes it harder to tell what the function is actually doing, because details that don&#8217;t matter on the higher level of abstraction clutter the high level logic. These details should be in their own function.<\/p>\n<pre class=\"lang:php decode:true\">function doThing() {\n    if (condition) {\n        $this-&gt;log('Some error message');\n    }\n}\n\n\nprivate function log(string $message) {\n    low_level_write_api_call('write-mode', $this-&gt;somePath, $message);\n}<\/pre>\n<h3>See also<\/h3>\n<ul>\n<li><a href=\"https:\/\/www.entropywins.wtf\/blog\/tag\/readable-functions\/\">Readable Functions &#8211; all posts<\/a><\/li>\n<li><a href=\"https:\/\/www.entropywins.wtf\/blog\/2017\/01\/02\/simple-is-not-easy\/\">Simple is not easy<\/a><\/li>\n<li><a href=\"https:\/\/www.entropywins.wtf\/blog\/2017\/09\/06\/the-fallacy-of-dry\/\">The Fallacy of DRY<\/a><\/li>\n<li><a href=\"https:\/\/www.entropywins.wtf\/blog\/2013\/09\/08\/clean-functions\/\">Clean Functions (2013 presentation)<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Several tricks and heuristics that I apply to write easy to understand functions keep coming up when I look at&hellip;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[1],"tags":[328,363,439,455,377,400,459,197,460,316],"class_list":["post-2392","post","type-post","status-publish","format-standard","hentry","category-uncategorized","tag-clean-code","tag-code-quality","tag-complexity","tag-design-principles","tag-functional-programming","tag-functions","tag-immutability","tag-planet-wikimedia","tag-readable-functions","tag-software-design"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.0 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Readable Functions: Do One Thing - Blog of Jeroen De Dauw<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.entropywins.wtf\/blog\/2018\/10\/30\/readable-functions-do-one-thing\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Readable Functions: Do One Thing - Blog of Jeroen De Dauw\" \/>\n<meta property=\"og:description\" content=\"Several tricks and heuristics that I apply to write easy to understand functions keep coming up when I look at&hellip;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.entropywins.wtf\/blog\/2018\/10\/30\/readable-functions-do-one-thing\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog of Jeroen De Dauw\" \/>\n<meta property=\"article:published_time\" content=\"2018-10-30T13:16:11+00:00\" \/>\n<meta name=\"author\" content=\"Jeroen\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@https:\/\/twitter.com\/JeroenDeDauw\" \/>\n<meta name=\"twitter:site\" content=\"@JeroenDeDauw\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Jeroen\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.entropywins.wtf\/blog\/2018\/10\/30\/readable-functions-do-one-thing\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.entropywins.wtf\/blog\/2018\/10\/30\/readable-functions-do-one-thing\/\"},\"author\":{\"name\":\"Jeroen\",\"@id\":\"https:\/\/www.entropywins.wtf\/blog\/#\/schema\/person\/4e2ef14f2ca7dc3a0ac137d1692b66b7\"},\"headline\":\"Readable Functions: Do One Thing\",\"datePublished\":\"2018-10-30T13:16:11+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.entropywins.wtf\/blog\/2018\/10\/30\/readable-functions-do-one-thing\/\"},\"wordCount\":296,\"commentCount\":3,\"publisher\":{\"@id\":\"https:\/\/www.entropywins.wtf\/blog\/#\/schema\/person\/4e2ef14f2ca7dc3a0ac137d1692b66b7\"},\"keywords\":[\"Clean Code\",\"Code Quality\",\"Complexity\",\"Design principles\",\"Functional Programming\",\"Functions\",\"Immutability\",\"Planet Wikimedia\",\"Readable Functions\",\"Software design\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.entropywins.wtf\/blog\/2018\/10\/30\/readable-functions-do-one-thing\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.entropywins.wtf\/blog\/2018\/10\/30\/readable-functions-do-one-thing\/\",\"url\":\"https:\/\/www.entropywins.wtf\/blog\/2018\/10\/30\/readable-functions-do-one-thing\/\",\"name\":\"Readable Functions: Do One Thing - Blog of Jeroen De Dauw\",\"isPartOf\":{\"@id\":\"https:\/\/www.entropywins.wtf\/blog\/#website\"},\"datePublished\":\"2018-10-30T13:16:11+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.entropywins.wtf\/blog\/2018\/10\/30\/readable-functions-do-one-thing\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.entropywins.wtf\/blog\/2018\/10\/30\/readable-functions-do-one-thing\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.entropywins.wtf\/blog\/2018\/10\/30\/readable-functions-do-one-thing\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.entropywins.wtf\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Readable Functions: Do One Thing\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.entropywins.wtf\/blog\/#website\",\"url\":\"https:\/\/www.entropywins.wtf\/blog\/\",\"name\":\"Entropy Wins\",\"description\":\"A blog on Software Architecture, Design and Craftsmanship\",\"publisher\":{\"@id\":\"https:\/\/www.entropywins.wtf\/blog\/#\/schema\/person\/4e2ef14f2ca7dc3a0ac137d1692b66b7\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.entropywins.wtf\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/www.entropywins.wtf\/blog\/#\/schema\/person\/4e2ef14f2ca7dc3a0ac137d1692b66b7\",\"name\":\"Jeroen\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.entropywins.wtf\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/d62e6b5b8e332335cf17854fac850d9c70ba367c4692872613c3110ebd4e009b?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/d62e6b5b8e332335cf17854fac850d9c70ba367c4692872613c3110ebd4e009b?s=96&d=mm&r=g\",\"caption\":\"Jeroen\"},\"logo\":{\"@id\":\"https:\/\/www.entropywins.wtf\/blog\/#\/schema\/person\/image\/\"},\"sameAs\":[\"https:\/\/www.linkedin.com\/in\/jeroendedauw\/\",\"https:\/\/x.com\/https:\/\/twitter.com\/JeroenDeDauw\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Readable Functions: Do One Thing - Blog of Jeroen De Dauw","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.entropywins.wtf\/blog\/2018\/10\/30\/readable-functions-do-one-thing\/","og_locale":"en_US","og_type":"article","og_title":"Readable Functions: Do One Thing - Blog of Jeroen De Dauw","og_description":"Several tricks and heuristics that I apply to write easy to understand functions keep coming up when I look at&hellip;","og_url":"https:\/\/www.entropywins.wtf\/blog\/2018\/10\/30\/readable-functions-do-one-thing\/","og_site_name":"Blog of Jeroen De Dauw","article_published_time":"2018-10-30T13:16:11+00:00","author":"Jeroen","twitter_card":"summary_large_image","twitter_creator":"@https:\/\/twitter.com\/JeroenDeDauw","twitter_site":"@JeroenDeDauw","twitter_misc":{"Written by":"Jeroen","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.entropywins.wtf\/blog\/2018\/10\/30\/readable-functions-do-one-thing\/#article","isPartOf":{"@id":"https:\/\/www.entropywins.wtf\/blog\/2018\/10\/30\/readable-functions-do-one-thing\/"},"author":{"name":"Jeroen","@id":"https:\/\/www.entropywins.wtf\/blog\/#\/schema\/person\/4e2ef14f2ca7dc3a0ac137d1692b66b7"},"headline":"Readable Functions: Do One Thing","datePublished":"2018-10-30T13:16:11+00:00","mainEntityOfPage":{"@id":"https:\/\/www.entropywins.wtf\/blog\/2018\/10\/30\/readable-functions-do-one-thing\/"},"wordCount":296,"commentCount":3,"publisher":{"@id":"https:\/\/www.entropywins.wtf\/blog\/#\/schema\/person\/4e2ef14f2ca7dc3a0ac137d1692b66b7"},"keywords":["Clean Code","Code Quality","Complexity","Design principles","Functional Programming","Functions","Immutability","Planet Wikimedia","Readable Functions","Software design"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.entropywins.wtf\/blog\/2018\/10\/30\/readable-functions-do-one-thing\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.entropywins.wtf\/blog\/2018\/10\/30\/readable-functions-do-one-thing\/","url":"https:\/\/www.entropywins.wtf\/blog\/2018\/10\/30\/readable-functions-do-one-thing\/","name":"Readable Functions: Do One Thing - Blog of Jeroen De Dauw","isPartOf":{"@id":"https:\/\/www.entropywins.wtf\/blog\/#website"},"datePublished":"2018-10-30T13:16:11+00:00","breadcrumb":{"@id":"https:\/\/www.entropywins.wtf\/blog\/2018\/10\/30\/readable-functions-do-one-thing\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.entropywins.wtf\/blog\/2018\/10\/30\/readable-functions-do-one-thing\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.entropywins.wtf\/blog\/2018\/10\/30\/readable-functions-do-one-thing\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.entropywins.wtf\/blog\/"},{"@type":"ListItem","position":2,"name":"Readable Functions: Do One Thing"}]},{"@type":"WebSite","@id":"https:\/\/www.entropywins.wtf\/blog\/#website","url":"https:\/\/www.entropywins.wtf\/blog\/","name":"Entropy Wins","description":"A blog on Software Architecture, Design and Craftsmanship","publisher":{"@id":"https:\/\/www.entropywins.wtf\/blog\/#\/schema\/person\/4e2ef14f2ca7dc3a0ac137d1692b66b7"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.entropywins.wtf\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/www.entropywins.wtf\/blog\/#\/schema\/person\/4e2ef14f2ca7dc3a0ac137d1692b66b7","name":"Jeroen","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.entropywins.wtf\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/d62e6b5b8e332335cf17854fac850d9c70ba367c4692872613c3110ebd4e009b?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/d62e6b5b8e332335cf17854fac850d9c70ba367c4692872613c3110ebd4e009b?s=96&d=mm&r=g","caption":"Jeroen"},"logo":{"@id":"https:\/\/www.entropywins.wtf\/blog\/#\/schema\/person\/image\/"},"sameAs":["https:\/\/www.linkedin.com\/in\/jeroendedauw\/","https:\/\/x.com\/https:\/\/twitter.com\/JeroenDeDauw"]}]}},"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/p74TBF-CA","jetpack-related-posts":[{"id":2374,"url":"https:\/\/www.entropywins.wtf\/blog\/2018\/10\/24\/readable-functions-minimize-state\/","url_meta":{"origin":2392,"position":0},"title":"Readable Functions: Minimize State","author":"Jeroen","date":"2018-10-24","format":false,"excerpt":"Several tricks and heuristics that I apply to write easy to understand functions keep coming up when I look at other peoples code. In this post I share the first of two key principles to writing readable functions. Follow up posts will contain the second key principle and specific tricks,\u2026","rel":"","context":"In &quot;Programming&quot;","block_context":{"text":"Programming","link":"https:\/\/www.entropywins.wtf\/blog\/category\/programming\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":2407,"url":"https:\/\/www.entropywins.wtf\/blog\/2019\/01\/14\/readable-functions-guard-clause\/","url_meta":{"origin":2392,"position":1},"title":"Readable Functions: Guard Clause","author":"Jeroen","date":"2019-01-14","format":false,"excerpt":"Guard Clauses are one of my favorite little tricks that allow simplifying code. A guard clause is an if statement with a return in it. Consider the following code: function doThing() { var $thing = 'default'; if (someCondition()) { $thing = 'special case'; } return $thing; } Using a Guard\u2026","rel":"","context":"In &quot;Programming&quot;","block_context":{"text":"Programming","link":"https:\/\/www.entropywins.wtf\/blog\/category\/programming\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":1582,"url":"https:\/\/www.entropywins.wtf\/blog\/2016\/02\/01\/missing-in-php7-named-parameters\/","url_meta":{"origin":2392,"position":2},"title":"Missing in PHP7: Named parameters","author":"Jeroen","date":"2016-02-01","format":false,"excerpt":"This is the second\u00a0post in my Missing in PHP7 series. The previous one is about\u00a0function references. 2020 update: named parameters will be in PHP 8 since the RFC passed. Readability of code is very important, and this is most certainly not readable: getCatPictures( 10, 0, true ); You can make\u2026","rel":"","context":"In &quot;Programming&quot;","block_context":{"text":"Programming","link":"https:\/\/www.entropywins.wtf\/blog\/category\/programming\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":1131,"url":"https:\/\/www.entropywins.wtf\/blog\/2013\/09\/08\/clean-functions\/","url_meta":{"origin":2392,"position":3},"title":"Clean functions","author":"Jeroen","date":"2013-09-08","format":false,"excerpt":"Last week I gave a presentation titled \u201cClean functions\u201d to my Wikidata colleagues. As the title suggests, this presentation is all about how to create clean functions that are easy to understand and modify. Why did I go with this particular design topic rather then one of the dozens of\u2026","rel":"","context":"In &quot;Software&quot;","block_context":{"text":"Software","link":"https:\/\/www.entropywins.wtf\/blog\/category\/software\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":2877,"url":"https:\/\/www.entropywins.wtf\/blog\/2022\/09\/21\/advice-for-junior-developers\/","url_meta":{"origin":2392,"position":4},"title":"Advice for junior developers","author":"Jeroen","date":"2022-09-21","format":false,"excerpt":"Over the 15+ years of my development career, I have learned several things that significantly increase my effectiveness. In this post, I share those learnings with you. Structure: Generic Advice -- Important context and motivation for the technical advice Technical Advice -- The main course Recommended Reading -- Links to\u2026","rel":"","context":"In &quot;Programming&quot;","block_context":{"text":"Programming","link":"https:\/\/www.entropywins.wtf\/blog\/category\/programming\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2022\/09\/code.jpg?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2022\/09\/code.jpg?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2022\/09\/code.jpg?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2022\/09\/code.jpg?resize=700%2C400&ssl=1 2x, https:\/\/i0.wp.com\/www.entropywins.wtf\/blog\/wp-content\/uploads\/2022\/09\/code.jpg?resize=1050%2C600&ssl=1 3x"},"classes":[]},{"id":1577,"url":"https:\/\/www.entropywins.wtf\/blog\/2016\/01\/30\/missing-in-php7-function-references\/","url_meta":{"origin":2392,"position":5},"title":"Missing in PHP7: function references","author":"Jeroen","date":"2016-01-30","format":false,"excerpt":"This is the first post in my Missing in PHP7 series. Over time, PHP has improved its capabilities with regards to functions.\u00a0As of PHP 5.3 you can create anonymous functions and as of 5.4 you can use the callable type hint. However referencing a function still requires using a string.\u2026","rel":"","context":"In &quot;Programming&quot;","block_context":{"text":"Programming","link":"https:\/\/www.entropywins.wtf\/blog\/category\/programming\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.entropywins.wtf\/blog\/wp-json\/wp\/v2\/posts\/2392","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.entropywins.wtf\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.entropywins.wtf\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.entropywins.wtf\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.entropywins.wtf\/blog\/wp-json\/wp\/v2\/comments?post=2392"}],"version-history":[{"count":1,"href":"https:\/\/www.entropywins.wtf\/blog\/wp-json\/wp\/v2\/posts\/2392\/revisions"}],"predecessor-version":[{"id":2394,"href":"https:\/\/www.entropywins.wtf\/blog\/wp-json\/wp\/v2\/posts\/2392\/revisions\/2394"}],"wp:attachment":[{"href":"https:\/\/www.entropywins.wtf\/blog\/wp-json\/wp\/v2\/media?parent=2392"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.entropywins.wtf\/blog\/wp-json\/wp\/v2\/categories?post=2392"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.entropywins.wtf\/blog\/wp-json\/wp\/v2\/tags?post=2392"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}