{"id":85,"date":"2008-08-29T21:39:26","date_gmt":"2008-08-30T04:39:26","guid":{"rendered":"http:\/\/lookforwardconsulting.com\/wordpress\/?p=85"},"modified":"2025-02-20T13:29:38","modified_gmt":"2025-02-20T13:29:38","slug":"extract-class-the-single-responsibility-principle","status":"publish","type":"post","link":"https:\/\/thescrumacademy.com\/es\/2008\/08\/29\/extract-class-the-single-responsibility-principle\/","title":{"rendered":"Extract Class &#038; the Single Responsibility Principle"},"content":{"rendered":"<p>Last week we talked about\u00a0<a href=\"http:\/\/thescrumacademy.com\/?p=81\">Extract Method<\/a>\u00a0and why it is so important to know and love.\u00a0 This week, we are going to discuss another very important principle in object-oriented design and how Extract Class can help us build and maintain better code.<\/p>\n<p>If you are familiar with\u00a0<a title=\"Robert Martin bio\" href=\"http:\/\/www.objectmentor.com\/omTeam\/martin_r.html\">Robert Martin\u2019s<\/a>\u00a0book\u00a0Agile Software Development: Principles, Patterns and Practices, you will recall he recast a very powerful concept (<a href=\"http:\/\/en.wikipedia.org\/wiki\/Single_responsibility_principle\">the Single-Responsiblity Principle<\/a>\u00a0or SRP) know from the \u201cold days\u201d, aka 1979,:\u00a0<strong>a class should have one, and only one, reason to change.<\/strong>\u00a0Or as I like to add my own spin to it:\u00a0<em>a class should only do one thing.<\/em>\u00a0The reasoning behind the SRP is if your class has two responsibilities, invariably they become coupled (coupled code == bad) and changes in one will impair or inhibit the ability of the class to meet the other responsibilities &#8211; and this is only in the case where you have just two responsibilities.\u00a0 Imagine the confusion when we have three or four responsibilities in a single class!!!<\/p>\n<p>If SRP is so important, then why are talking about Extract Class refactoring?\u00a0 This is the refactoring you use when you want to apply the SRP and applying the SRP is key to writing good code, i.e. code that is testable, decoupled, maintainable, etc., etc.<\/p>\n<blockquote><p><strong>How Do I Find It?:<\/strong>\u00a0You have one class doing the work that should be done by two.<\/p>\n<p><strong>What Do I Do Once I Find It?:\u00a0<\/strong>Create a new class and move the relevant fields and methods from the old class into the new class.<\/p><\/blockquote>\n<p>Any guidelines you care to share?\u00a0 I am glad that you asked because I do have a few tell tale signs that a new class is waiting to bust out of your old one:<\/p>\n<ol>\n<li>Find your big classes -&gt; any class with more than a 1000 lines is probably doing more than one thing.<\/li>\n<li>Classes that have \u201ctoo many\u201d methods or fields\\properties -&gt; if class has more than 10 to 15 methods or fields\\properties, you are probably missing an abstraction.<\/li>\n<li>Methods that don\u2019t belong -&gt; every class has a reason for existence, or a theme, that unifies the method and data.\u00a0 Methods or data that don\u2019t \u201cfit in\u201d with the theme are likely candidates for a new class.<\/li>\n<\/ol>\n<p>In an application I am working on, we have a real simple\u00a0<a href=\"http:\/\/en.wikipedia.org\/wiki\/Bus_(computing)\">Bus<\/a>\u00a0class that shepherds messages between simulated hardware and simulated devices (in our case we are talking about drawers, buttons, LED, etc.).\u00a0 When you examine the class you see it is about 250 lines, has three fields, a number of events around connecting and disconnecting devices and some private methods.\u00a0 Looking further, you can find two methods which stick out and don\u2019t match the theme of the class:<\/p>\n<pre>45  private IBusMessage BytesToBusMessage(byte[] bytes)\r\n46  {\r\n47      \/\/ convert to string\r\n48      string msg = Encoding.ASCII.GetString(bytes, 0, bytes.Length);\r\n49      \/\/ split the msg into address and actual command\r\n50      string[] splits = msg.Split(new char[] { '|' });\r\n51      BusMessage message = new BusMessage();\r\n52      message.Address = long.Parse(splits[0]);\r\n53      message.Message = splits[1];\r\n54      if (splits.Length &gt; 2)\r\n55      {\r\n56          message.SequenceNumber = int.Parse(splits[2]);\r\n57      }\r\n58      return message;\r\n59  }\r\n60\r\n61  public static byte[] BusMessageToBytes(IBusMessage message)\r\n62  {\r\n63      \/\/ form the message\r\n64      string msg = message.Address + \"|\" + message.Message + \"|\" + message.SequenceNumber;\r\n65      return Encoding.ASCII.GetBytes(msg);\r\n66  }\r\n67<\/pre>\n<p>So we have a class which is responsible for event registration\u00a0<strong>AND\u00a0<\/strong>parsing messages.\u00a0 My question is this: why in the world does a class which mostly deals with event registration have anything to do with parsing?\u00a0 Why would this class even care how we parse messages back-and-forth?\u00a0 It sounds like a class doing more than one thing &#8211; that is a violation of the SRP &#8211; and we will use Extract Class to apply the SRP to Bus.<\/p>\n<p>Next week, we will talk about the Move Method refactoring, which is how you extract your class from the old one.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Last week we talked about\u00a0Extract Method\u00a0and why it is so important to know and love.\u00a0 This week, we are going to discuss another very important principle in object-oriented design and  [&#8230;]<\/p>\n","protected":false},"author":1,"featured_media":7487,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_price":"","_stock":"","_tribe_ticket_header":"","_tribe_default_ticket_provider":"","_tribe_ticket_capacity":"0","_ticket_start_date":"","_ticket_end_date":"","_tribe_ticket_show_description":"","_tribe_ticket_show_not_going":false,"_tribe_ticket_use_global_stock":"","_tribe_ticket_global_stock_level":"","_global_stock_mode":"","_global_stock_cap":"","_tribe_rsvp_for_event":"","_tribe_ticket_going_count":"","_tribe_ticket_not_going_count":"","_tribe_tickets_list":"[]","_tribe_ticket_has_attendee_info_fields":false,"footnotes":""},"categories":[208,205,19,10,6,24,206,26,53,36],"tags":[],"class_list":["post-85","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-advanced-practitioners","category-beginners","category-design-excellence","category-developers","category-extreme-programming","category-legacy-code","category-practitioners","category-refactoring","category-simple-design","category-test-driven-development"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.1.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Extract Class &amp; the Single Responsibility Principle - The Scrum Academy<\/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:\/\/thescrumacademy.com\/es\/2008\/08\/29\/extract-class-the-single-responsibility-principle\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Extract Class &amp; the Single Responsibility Principle - The Scrum Academy\" \/>\n<meta property=\"og:description\" content=\"Last week we talked about\u00a0Extract Method\u00a0and why it is so important to know and love.\u00a0 This week, we are going to discuss another very important principle in object-oriented design and [...]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/thescrumacademy.com\/es\/2008\/08\/29\/extract-class-the-single-responsibility-principle\/\" \/>\n<meta property=\"og:site_name\" content=\"The Scrum Academy\" \/>\n<meta property=\"article:published_time\" content=\"2008-08-30T04:39:26+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-02-20T13:29:38+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/thescrumacademy.com\/wp-content\/uploads\/2008\/08\/vecteezy_abstract-modern-tech-of-programming-code-screen-developer_6983338.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"658\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Carlton Nettleton\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Carlton Nettleton\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/thescrumacademy.com\/es\/2008\/08\/29\/extract-class-the-single-responsibility-principle\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/thescrumacademy.com\/es\/2008\/08\/29\/extract-class-the-single-responsibility-principle\/\"},\"author\":{\"name\":\"Carlton Nettleton\",\"@id\":\"https:\/\/thescrumacademy.com\/es\/#\/schema\/person\/2a0fb199044ecd4af3704c734747fc6a\"},\"headline\":\"Extract Class &#038; the Single Responsibility Principle\",\"datePublished\":\"2008-08-30T04:39:26+00:00\",\"dateModified\":\"2025-02-20T13:29:38+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/thescrumacademy.com\/es\/2008\/08\/29\/extract-class-the-single-responsibility-principle\/\"},\"wordCount\":572,\"commentCount\":0,\"image\":{\"@id\":\"https:\/\/thescrumacademy.com\/es\/2008\/08\/29\/extract-class-the-single-responsibility-principle\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/thescrumacademy.com\/wp-content\/uploads\/2008\/08\/vecteezy_abstract-modern-tech-of-programming-code-screen-developer_6983338.jpg\",\"articleSection\":[\"Advanced Practitioners\",\"Beginners\",\"Design Excellence\",\"Developers\",\"Extreme Programming\",\"Legacy Code\",\"Practitioners\",\"Refactoring\",\"Simple Design\",\"Test-Driven Development\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/thescrumacademy.com\/es\/2008\/08\/29\/extract-class-the-single-responsibility-principle\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/thescrumacademy.com\/es\/2008\/08\/29\/extract-class-the-single-responsibility-principle\/\",\"url\":\"https:\/\/thescrumacademy.com\/es\/2008\/08\/29\/extract-class-the-single-responsibility-principle\/\",\"name\":\"Extract Class & the Single Responsibility Principle - The Scrum Academy\",\"isPartOf\":{\"@id\":\"https:\/\/thescrumacademy.com\/es\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/thescrumacademy.com\/es\/2008\/08\/29\/extract-class-the-single-responsibility-principle\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/thescrumacademy.com\/es\/2008\/08\/29\/extract-class-the-single-responsibility-principle\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/thescrumacademy.com\/wp-content\/uploads\/2008\/08\/vecteezy_abstract-modern-tech-of-programming-code-screen-developer_6983338.jpg\",\"datePublished\":\"2008-08-30T04:39:26+00:00\",\"dateModified\":\"2025-02-20T13:29:38+00:00\",\"author\":{\"@id\":\"https:\/\/thescrumacademy.com\/es\/#\/schema\/person\/2a0fb199044ecd4af3704c734747fc6a\"},\"breadcrumb\":{\"@id\":\"https:\/\/thescrumacademy.com\/es\/2008\/08\/29\/extract-class-the-single-responsibility-principle\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/thescrumacademy.com\/es\/2008\/08\/29\/extract-class-the-single-responsibility-principle\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/thescrumacademy.com\/es\/2008\/08\/29\/extract-class-the-single-responsibility-principle\/#primaryimage\",\"url\":\"https:\/\/thescrumacademy.com\/wp-content\/uploads\/2008\/08\/vecteezy_abstract-modern-tech-of-programming-code-screen-developer_6983338.jpg\",\"contentUrl\":\"https:\/\/thescrumacademy.com\/wp-content\/uploads\/2008\/08\/vecteezy_abstract-modern-tech-of-programming-code-screen-developer_6983338.jpg\",\"width\":1200,\"height\":658,\"caption\":\"Abstract Modern tech of Programming code screen developer. C Programming Language of Computer script and Technology background of software.\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/thescrumacademy.com\/es\/2008\/08\/29\/extract-class-the-single-responsibility-principle\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/thescrumacademy.com\/es\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Extract Class &#038; the Single Responsibility Principle\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/thescrumacademy.com\/es\/#website\",\"url\":\"https:\/\/thescrumacademy.com\/es\/\",\"name\":\"The Scrum Academy\",\"description\":\"Everyone anywhere can do better Scrum\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/thescrumacademy.com\/es\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/thescrumacademy.com\/es\/#\/schema\/person\/2a0fb199044ecd4af3704c734747fc6a\",\"name\":\"Carlton Nettleton\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/thescrumacademy.com\/es\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/6d69c37c349230a49a1ec6c77c21c4b35043de9fbcce8a202d61f707025cd537?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/6d69c37c349230a49a1ec6c77c21c4b35043de9fbcce8a202d61f707025cd537?s=96&d=mm&r=g\",\"caption\":\"Carlton Nettleton\"},\"description\":\"My name is Carlton Nettleton and I am the President of Look Forward Consulting. I am an international speaker, trainer and author of the book, Fourteen Observations of Good Scrum Practice and my book has been translated into Spanish. My passion is to share my excitement, enthusiasm and encouragement with teams and organizations as they reach for higher levels of performance and engagement. My business is to help your business grow and flourish.\",\"url\":\"https:\/\/thescrumacademy.com\/es\/author\/admin\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Extract Class & the Single Responsibility Principle - The Scrum Academy","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:\/\/thescrumacademy.com\/es\/2008\/08\/29\/extract-class-the-single-responsibility-principle\/","og_locale":"es_ES","og_type":"article","og_title":"Extract Class & the Single Responsibility Principle - The Scrum Academy","og_description":"Last week we talked about\u00a0Extract Method\u00a0and why it is so important to know and love.\u00a0 This week, we are going to discuss another very important principle in object-oriented design and [...]","og_url":"https:\/\/thescrumacademy.com\/es\/2008\/08\/29\/extract-class-the-single-responsibility-principle\/","og_site_name":"The Scrum Academy","article_published_time":"2008-08-30T04:39:26+00:00","article_modified_time":"2025-02-20T13:29:38+00:00","og_image":[{"width":1200,"height":658,"url":"https:\/\/thescrumacademy.com\/wp-content\/uploads\/2008\/08\/vecteezy_abstract-modern-tech-of-programming-code-screen-developer_6983338.jpg","type":"image\/jpeg"}],"author":"Carlton Nettleton","twitter_card":"summary_large_image","twitter_misc":{"Escrito por":"Carlton Nettleton","Tiempo de lectura":"3 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/thescrumacademy.com\/es\/2008\/08\/29\/extract-class-the-single-responsibility-principle\/#article","isPartOf":{"@id":"https:\/\/thescrumacademy.com\/es\/2008\/08\/29\/extract-class-the-single-responsibility-principle\/"},"author":{"name":"Carlton Nettleton","@id":"https:\/\/thescrumacademy.com\/es\/#\/schema\/person\/2a0fb199044ecd4af3704c734747fc6a"},"headline":"Extract Class &#038; the Single Responsibility Principle","datePublished":"2008-08-30T04:39:26+00:00","dateModified":"2025-02-20T13:29:38+00:00","mainEntityOfPage":{"@id":"https:\/\/thescrumacademy.com\/es\/2008\/08\/29\/extract-class-the-single-responsibility-principle\/"},"wordCount":572,"commentCount":0,"image":{"@id":"https:\/\/thescrumacademy.com\/es\/2008\/08\/29\/extract-class-the-single-responsibility-principle\/#primaryimage"},"thumbnailUrl":"https:\/\/thescrumacademy.com\/wp-content\/uploads\/2008\/08\/vecteezy_abstract-modern-tech-of-programming-code-screen-developer_6983338.jpg","articleSection":["Advanced Practitioners","Beginners","Design Excellence","Developers","Extreme Programming","Legacy Code","Practitioners","Refactoring","Simple Design","Test-Driven Development"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/thescrumacademy.com\/es\/2008\/08\/29\/extract-class-the-single-responsibility-principle\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/thescrumacademy.com\/es\/2008\/08\/29\/extract-class-the-single-responsibility-principle\/","url":"https:\/\/thescrumacademy.com\/es\/2008\/08\/29\/extract-class-the-single-responsibility-principle\/","name":"Extract Class & the Single Responsibility Principle - The Scrum Academy","isPartOf":{"@id":"https:\/\/thescrumacademy.com\/es\/#website"},"primaryImageOfPage":{"@id":"https:\/\/thescrumacademy.com\/es\/2008\/08\/29\/extract-class-the-single-responsibility-principle\/#primaryimage"},"image":{"@id":"https:\/\/thescrumacademy.com\/es\/2008\/08\/29\/extract-class-the-single-responsibility-principle\/#primaryimage"},"thumbnailUrl":"https:\/\/thescrumacademy.com\/wp-content\/uploads\/2008\/08\/vecteezy_abstract-modern-tech-of-programming-code-screen-developer_6983338.jpg","datePublished":"2008-08-30T04:39:26+00:00","dateModified":"2025-02-20T13:29:38+00:00","author":{"@id":"https:\/\/thescrumacademy.com\/es\/#\/schema\/person\/2a0fb199044ecd4af3704c734747fc6a"},"breadcrumb":{"@id":"https:\/\/thescrumacademy.com\/es\/2008\/08\/29\/extract-class-the-single-responsibility-principle\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/thescrumacademy.com\/es\/2008\/08\/29\/extract-class-the-single-responsibility-principle\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/thescrumacademy.com\/es\/2008\/08\/29\/extract-class-the-single-responsibility-principle\/#primaryimage","url":"https:\/\/thescrumacademy.com\/wp-content\/uploads\/2008\/08\/vecteezy_abstract-modern-tech-of-programming-code-screen-developer_6983338.jpg","contentUrl":"https:\/\/thescrumacademy.com\/wp-content\/uploads\/2008\/08\/vecteezy_abstract-modern-tech-of-programming-code-screen-developer_6983338.jpg","width":1200,"height":658,"caption":"Abstract Modern tech of Programming code screen developer. C Programming Language of Computer script and Technology background of software."},{"@type":"BreadcrumbList","@id":"https:\/\/thescrumacademy.com\/es\/2008\/08\/29\/extract-class-the-single-responsibility-principle\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/thescrumacademy.com\/es\/"},{"@type":"ListItem","position":2,"name":"Extract Class &#038; the Single Responsibility Principle"}]},{"@type":"WebSite","@id":"https:\/\/thescrumacademy.com\/es\/#website","url":"https:\/\/thescrumacademy.com\/es\/","name":"The Scrum Academy","description":"Everyone anywhere can do better Scrum","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/thescrumacademy.com\/es\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Person","@id":"https:\/\/thescrumacademy.com\/es\/#\/schema\/person\/2a0fb199044ecd4af3704c734747fc6a","name":"Carlton Nettleton","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/thescrumacademy.com\/es\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/6d69c37c349230a49a1ec6c77c21c4b35043de9fbcce8a202d61f707025cd537?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/6d69c37c349230a49a1ec6c77c21c4b35043de9fbcce8a202d61f707025cd537?s=96&d=mm&r=g","caption":"Carlton Nettleton"},"description":"My name is Carlton Nettleton and I am the President of Look Forward Consulting. I am an international speaker, trainer and author of the book, Fourteen Observations of Good Scrum Practice and my book has been translated into Spanish. My passion is to share my excitement, enthusiasm and encouragement with teams and organizations as they reach for higher levels of performance and engagement. My business is to help your business grow and flourish.","url":"https:\/\/thescrumacademy.com\/es\/author\/admin\/"}]}},"_links":{"self":[{"href":"https:\/\/thescrumacademy.com\/es\/wp-json\/wp\/v2\/posts\/85","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/thescrumacademy.com\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/thescrumacademy.com\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/thescrumacademy.com\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/thescrumacademy.com\/es\/wp-json\/wp\/v2\/comments?post=85"}],"version-history":[{"count":0,"href":"https:\/\/thescrumacademy.com\/es\/wp-json\/wp\/v2\/posts\/85\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/thescrumacademy.com\/es\/wp-json\/wp\/v2\/media\/7487"}],"wp:attachment":[{"href":"https:\/\/thescrumacademy.com\/es\/wp-json\/wp\/v2\/media?parent=85"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/thescrumacademy.com\/es\/wp-json\/wp\/v2\/categories?post=85"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/thescrumacademy.com\/es\/wp-json\/wp\/v2\/tags?post=85"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}