{"id":1592,"date":"2015-06-23T11:00:02","date_gmt":"2015-06-23T10:00:02","guid":{"rendered":"http:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/?p=1592"},"modified":"2015-06-23T09:13:30","modified_gmt":"2015-06-23T08:13:30","slug":"motivos-por-los-que-hacer-clean-code","status":"publish","type":"post","link":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/motivos-por-los-que-hacer-clean-code\/","title":{"rendered":"\u00bfEs la API de SharePoint Clean Code?"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" class=\"alignleft\" src=\"http:\/\/image.slidesharecdn.com\/cleancodedesignpatterns-130923070604-phpapp01\/95\/clean-code-design-patterns-7-638.jpg?cb=1394227832\" alt=\"\" width=\"338\" height=\"279\" \/>Continuando con la serie de art\u00edculos sobre buenas pr\u00e1cticas, vamos a ver un <strong>caso pr\u00e1ctico<\/strong> de porqu\u00e9 nuestro c\u00f3digo debe de ser legible y mantenible con la finalidad de ahorrarnos trabajo y, sobre todo, de ahorrarnos malentendidos sobre el funcionamiento. En este art\u00edculo, vamos a ver un caso en el que <strong>escribir c\u00f3digo de forma incorrecta\u00a0hace m\u00e1s dif\u00edcil el desarrollo<\/strong> y puede ocasionar posibles bugs.<\/p>\n<h2>\u00bfQu\u00e9 es Clean Code?<!--more--><\/h2>\n<p>La lectura del c\u00f3digo es una de las actividades a la que m\u00e1s tiempo dedicamos, incluso para escribir nuevo c\u00f3digo tenemos que leer lo que ya hay \u00a0implementado. <strong>La diferencia entre un buen y un mal c\u00f3digo\u00a0<\/strong>no es el tiempo que se tarda en realizarlo, sino el pensamiento sobre el mismo. Un mal c\u00f3digo puede dificultar las modificaciones y alarga los plazos de entrega. Muchos desarrolladores no tienen este concepto generalizado y unas veces por desconocimiento y otras por formaci\u00f3n, no son conscientes de que su c\u00f3digo no es del todo \u00ablimpio\u00bb. Pero&#8230;\u00a0<strong>\u00bfqu\u00e9 es c\u00f3digo limpio?<\/strong><\/p>\n<p>Seg\u00fan varios autores conocidos, las <strong>caracter\u00edsticas<\/strong> del c\u00f3digo limpio son:<\/p>\n<ul>\n<li>F\u00e1cil de leer, expresivo y sencillo<\/li>\n<li>Probado mediante tests autom\u00e1ticos<\/li>\n<li>Hace una \u00fanica cosa<\/li>\n<li>No existe duplicidad en \u00e9l<\/li>\n<li>Utiliza el menor n\u00famero de elementos posibles<\/li>\n<li>Realiza abstracciones de elementos similares<\/li>\n<\/ul>\n<p>El c\u00f3digo limpio <strong>no se genera la primera vez que escribimos<\/strong>, sino que <strong>se va mejorando y refactorizando<\/strong> a medida que vamos avanzando. \u00c9ste es el proceso de mejora continua que va sufriendo nuestro c\u00f3digo desde el momento que se crea y como va evolucionando. En este caso se conoce como la<strong> regla de los Boy Scouts:<\/strong>\u00a0<em>\u201cHay que dejar el c\u00f3digo mejor de c\u00f3mo lo encontraste\u201d<\/em>.<\/p>\n<h2>C\u00f3digo que no es Clean Code:\u00a0la API de SharePoint<\/h2>\n<p>Muchas veces ponemos ejemplos de c\u00f3digo que hemos implementado nosotros, pero incluso en c\u00f3digo \u00abprofesional\u00bb nos damos cuenta de que no cumple este objetivo. En teor\u00eda, <strong>el c\u00f3digo de una API profesional<\/strong> debe de ser lo suficientemente descriptivo para que cualquier desarrollador con el intellisense, pueda ser capaz de llamar al m\u00e9todo necesario. Ahora bien, vamos a repasar algunos <strong>ejemplos<\/strong> en los que tenemos ciertas <strong>confusi\u00f3n.<\/strong><\/p>\n<h3><span style=\"color: #000000;\">Caso de Estudio<\/span><\/h3>\n<p>Tenemos que implementar un <strong>WebPart<\/strong> que, dado si un usuario pertenece a un grupo o no, puede realizar unas acciones u otras. Ahora bien, el grupo se va a definir a nivel de la colecci\u00f3n de sitio de forma que est\u00e9 centralizada esta acci\u00f3n.<\/p>\n<h3>Supuesto<\/h3>\n<ul>\n<li>Elevamos los privilegios para garantizarnos que se pueden consultar los miembros de los usuarios.<\/li>\n<li>El Objeto SPWeb es el sitio ra\u00edz.<\/li>\n<\/ul>\n<h3>Opci\u00f3n 1:<\/h3>\n<p>Dentro del Objeto SPWeb.SiteGroups consultamos la informaci\u00f3n de los miembros del grupo.<\/p>\n<h3>Opci\u00f3n 2:<\/h3>\n<p>Dentro del Objeto SPWeb.Groups consultamos la informaci\u00f3n de los miembros del grupo.<\/p>\n<h3><span style=\"color: #000000;\">\u00bfCu\u00e1l es la opci\u00f3n buena y por qu\u00e9?<\/span><\/h3>\n<p>Si seguimos las pr\u00e1cticas para escribir buen c\u00f3digo,<strong> los nombres de las funciones deben ser lo suficientemente expl\u00edcitos<\/strong> para que <strong>cualquier persona sepa lo que hace esa funci\u00f3n<\/strong> y no tenga que ir a la documentaci\u00f3n o al propio c\u00f3digo (en caso de que se tuviera \u00e9ste).<\/p>\n<p>En estos casos concretos, la opci\u00f3n 1 devolver\u00eda los Grupos del Sitio y en la opci\u00f3n 2 devolver\u00eda los Grupos del Web (que en este caso es el mismo que el del sitio). Por lo que a primera vista ambas opciones son igualmente validas, \u00bfno? Pues como supongo que hab\u00e9is deducido, hay truco. En algunos ocasiones, la Opci\u00f3n 2 no funciona.<\/p>\n<h3>\u00bfPor qu\u00e9 no funciona?<\/h3>\n<p>La <strong>funci\u00f3n Groups nos devuelve los grupos que est\u00e1n activos en ese SPWeb<\/strong>. Con lo cual, si nos creamos un grupo espec\u00edfico para nuestro desarrollo y s\u00f3lo lo utilizamos para ello, este grupo nunca existir\u00e1 dentro de Groups. Aqu\u00ed est\u00e1 claro que <strong>el nombre deber\u00eda ser GroupsActive<\/strong>. Para saber su\u00a0<strong>correcto funcionamiento<\/strong>, est\u00e1 claro que tenemos que echar un <a href=\"https:\/\/msdn.microsoft.com\/en-us\/library\/microsoft.sharepoint.spweb.groups.aspx\" target=\"_blank\">vistazo a la MSDN<\/a><\/p>\n<h2>Conclusi\u00f3n<\/h2>\n<p>Hay mucha gente que tiende a <strong>restarle importancia al Clean Code<\/strong>, hasta que se encuentra con un c\u00f3digo que no es suyo (como en este ejemplo). Muchas veces decimos que <strong>hacerlo bien y hacerlo mal, cuesta lo mismo<\/strong> y es verdad. \u00bfCu\u00e1nto tiempo m\u00e1s hubiera tardado la persona que implement\u00f3 el m\u00e9todo Groups en ponerle GroupsActive?<\/p>\n<p><strong>Escribir c\u00f3digo legible y mantenible<\/strong> es una opci\u00f3n que todo desarrollador debe de tener en mente. En primer lugar, por su capacidad profesional y, en segundo lugar, por el beneficio del propio equipo.<\/p>\n<!-- AddThis Advanced Settings generic via filter on the_content --><!-- AddThis Share Buttons generic via filter on the_content --><span class=\"et_bloom_bottom_trigger\"><\/span>","protected":false},"excerpt":{"rendered":"<p>Continuando con la serie de art\u00edculos sobre buenas pr\u00e1cticas, vamos a ver un caso pr\u00e1ctico de porqu\u00e9 nuestro c\u00f3digo debe de ser legible y mantenible con la finalidad de ahorrarnos trabajo y, sobre todo, de ahorrarnos malentendidos sobre el funcionamiento. &hellip; <a href=\"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/motivos-por-los-que-hacer-clean-code\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><!-- AddThis Advanced Settings generic via filter on get_the_excerpt --><!-- AddThis Share Buttons generic via filter on get_the_excerpt --><\/p>\n","protected":false},"author":8,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2],"tags":[],"class_list":["post-1592","post","type-post","status-publish","format-standard","hentry","category-buenas-practicas"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v18.2.1 (Yoast SEO v28.3) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>\u00bfEs la API de SharePoint Clean Code? - Desarrollando sobre SharePoint<\/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:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/motivos-por-los-que-hacer-clean-code\/\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:title\" content=\"\u00bfEs la API de SharePoint Clean Code? - Desarrollando sobre SharePoint\" \/>\n<meta name=\"twitter:description\" content=\"Continuando con la serie de art\u00edculos sobre buenas pr\u00e1cticas, vamos a ver un caso pr\u00e1ctico de porqu\u00e9 nuestro c\u00f3digo debe de ser legible y mantenible con la finalidad de ahorrarnos trabajo y, sobre todo, de ahorrarnos malentendidos sobre el funcionamiento. &hellip; Continue reading &rarr;\" \/>\n<meta name=\"twitter:image\" content=\"http:\/\/image.slidesharecdn.com\/cleancodedesignpatterns-130923070604-phpapp01\/95\/clean-code-design-patterns-7-638.jpg?cb=1394227832\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Adri\u00e1n D\u00edaz\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/motivos-por-los-que-hacer-clean-code\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/motivos-por-los-que-hacer-clean-code\\\/\"},\"author\":{\"name\":\"Adri\u00e1n D\u00edaz\",\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/#\\\/schema\\\/person\\\/c9bfaede1bfba9564bb7f500788782bb\"},\"headline\":\"\u00bfEs la API de SharePoint Clean Code?\",\"datePublished\":\"2015-06-23T10:00:02+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/motivos-por-los-que-hacer-clean-code\\\/\"},\"wordCount\":792,\"commentCount\":1,\"image\":{\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/motivos-por-los-que-hacer-clean-code\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/image.slidesharecdn.com\\\/cleancodedesignpatterns-130923070604-phpapp01\\\/95\\\/clean-code-design-patterns-7-638.jpg?cb=1394227832\",\"articleSection\":[\"buenas practicas\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/motivos-por-los-que-hacer-clean-code\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/motivos-por-los-que-hacer-clean-code\\\/\",\"url\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/motivos-por-los-que-hacer-clean-code\\\/\",\"name\":\"\u00bfEs la API de SharePoint Clean Code? - Desarrollando sobre SharePoint\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/motivos-por-los-que-hacer-clean-code\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/motivos-por-los-que-hacer-clean-code\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/image.slidesharecdn.com\\\/cleancodedesignpatterns-130923070604-phpapp01\\\/95\\\/clean-code-design-patterns-7-638.jpg?cb=1394227832\",\"datePublished\":\"2015-06-23T10:00:02+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/#\\\/schema\\\/person\\\/c9bfaede1bfba9564bb7f500788782bb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/motivos-por-los-que-hacer-clean-code\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/motivos-por-los-que-hacer-clean-code\\\/#primaryimage\",\"url\":\"http:\\\/\\\/image.slidesharecdn.com\\\/cleancodedesignpatterns-130923070604-phpapp01\\\/95\\\/clean-code-design-patterns-7-638.jpg?cb=1394227832\",\"contentUrl\":\"http:\\\/\\\/image.slidesharecdn.com\\\/cleancodedesignpatterns-130923070604-phpapp01\\\/95\\\/clean-code-design-patterns-7-638.jpg?cb=1394227832\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/#website\",\"url\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/\",\"name\":\"Desarrollando sobre SharePoint\",\"description\":\"Arquitectura, buenas pr\u00e1cticas y desarrollo sobre la nueva herramienta de Microsoft SharePoint 2016\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/#\\\/schema\\\/person\\\/c9bfaede1bfba9564bb7f500788782bb\",\"name\":\"Adri\u00e1n D\u00edaz\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/fe10b9eaf8ce4565ec75fba5a0d121c16186696e515cad2bedd42f6cf54e2007?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/fe10b9eaf8ce4565ec75fba5a0d121c16186696e515cad2bedd42f6cf54e2007?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/fe10b9eaf8ce4565ec75fba5a0d121c16186696e515cad2bedd42f6cf54e2007?s=96&d=mm&r=g\",\"caption\":\"Adri\u00e1n D\u00edaz\"},\"description\":\"Adri\u00e1n D\u00edaz es Ingeniero Inform\u00e1tico por la Universidad Polit\u00e9cnica de Valencia. Es MVP de Microsoft en la categor\u00eda Office Development desde 2014, MCPD de SharePoint 2010, Microsoft Active Profesional y Microsoft Comunity Contribuitor 2012. Cofundador del grupo de usuarios de SharePoint de Levante LevaPoint. Lleva desarrollando con tecnolog\u00edas Microsoft m\u00e1s de 10 a\u00f1os y desde hace 3 a\u00f1os est\u00e1 centrado en el desarrollo sobre SharePoint. Actualmente es Software &amp; Cloud Architect Lead en ENCAMINA.\",\"url\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/author\\\/desarrollandosobresharepoint\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"\u00bfEs la API de SharePoint Clean Code? - Desarrollando sobre SharePoint","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:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/motivos-por-los-que-hacer-clean-code\/","twitter_card":"summary_large_image","twitter_title":"\u00bfEs la API de SharePoint Clean Code? - Desarrollando sobre SharePoint","twitter_description":"Continuando con la serie de art\u00edculos sobre buenas pr\u00e1cticas, vamos a ver un caso pr\u00e1ctico de porqu\u00e9 nuestro c\u00f3digo debe de ser legible y mantenible con la finalidad de ahorrarnos trabajo y, sobre todo, de ahorrarnos malentendidos sobre el funcionamiento. &hellip; Continue reading &rarr;","twitter_image":"http:\/\/image.slidesharecdn.com\/cleancodedesignpatterns-130923070604-phpapp01\/95\/clean-code-design-patterns-7-638.jpg?cb=1394227832","twitter_misc":{"Escrito por":"Adri\u00e1n D\u00edaz","Tiempo de lectura":"4 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/motivos-por-los-que-hacer-clean-code\/#article","isPartOf":{"@id":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/motivos-por-los-que-hacer-clean-code\/"},"author":{"name":"Adri\u00e1n D\u00edaz","@id":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/#\/schema\/person\/c9bfaede1bfba9564bb7f500788782bb"},"headline":"\u00bfEs la API de SharePoint Clean Code?","datePublished":"2015-06-23T10:00:02+00:00","mainEntityOfPage":{"@id":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/motivos-por-los-que-hacer-clean-code\/"},"wordCount":792,"commentCount":1,"image":{"@id":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/motivos-por-los-que-hacer-clean-code\/#primaryimage"},"thumbnailUrl":"http:\/\/image.slidesharecdn.com\/cleancodedesignpatterns-130923070604-phpapp01\/95\/clean-code-design-patterns-7-638.jpg?cb=1394227832","articleSection":["buenas practicas"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/motivos-por-los-que-hacer-clean-code\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/motivos-por-los-que-hacer-clean-code\/","url":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/motivos-por-los-que-hacer-clean-code\/","name":"\u00bfEs la API de SharePoint Clean Code? - Desarrollando sobre SharePoint","isPartOf":{"@id":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/#website"},"primaryImageOfPage":{"@id":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/motivos-por-los-que-hacer-clean-code\/#primaryimage"},"image":{"@id":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/motivos-por-los-que-hacer-clean-code\/#primaryimage"},"thumbnailUrl":"http:\/\/image.slidesharecdn.com\/cleancodedesignpatterns-130923070604-phpapp01\/95\/clean-code-design-patterns-7-638.jpg?cb=1394227832","datePublished":"2015-06-23T10:00:02+00:00","author":{"@id":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/#\/schema\/person\/c9bfaede1bfba9564bb7f500788782bb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/motivos-por-los-que-hacer-clean-code\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/motivos-por-los-que-hacer-clean-code\/#primaryimage","url":"http:\/\/image.slidesharecdn.com\/cleancodedesignpatterns-130923070604-phpapp01\/95\/clean-code-design-patterns-7-638.jpg?cb=1394227832","contentUrl":"http:\/\/image.slidesharecdn.com\/cleancodedesignpatterns-130923070604-phpapp01\/95\/clean-code-design-patterns-7-638.jpg?cb=1394227832"},{"@type":"WebSite","@id":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/#website","url":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/","name":"Desarrollando sobre SharePoint","description":"Arquitectura, buenas pr\u00e1cticas y desarrollo sobre la nueva herramienta de Microsoft SharePoint 2016","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Person","@id":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/#\/schema\/person\/c9bfaede1bfba9564bb7f500788782bb","name":"Adri\u00e1n D\u00edaz","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/secure.gravatar.com\/avatar\/fe10b9eaf8ce4565ec75fba5a0d121c16186696e515cad2bedd42f6cf54e2007?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/fe10b9eaf8ce4565ec75fba5a0d121c16186696e515cad2bedd42f6cf54e2007?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/fe10b9eaf8ce4565ec75fba5a0d121c16186696e515cad2bedd42f6cf54e2007?s=96&d=mm&r=g","caption":"Adri\u00e1n D\u00edaz"},"description":"Adri\u00e1n D\u00edaz es Ingeniero Inform\u00e1tico por la Universidad Polit\u00e9cnica de Valencia. Es MVP de Microsoft en la categor\u00eda Office Development desde 2014, MCPD de SharePoint 2010, Microsoft Active Profesional y Microsoft Comunity Contribuitor 2012. Cofundador del grupo de usuarios de SharePoint de Levante LevaPoint. Lleva desarrollando con tecnolog\u00edas Microsoft m\u00e1s de 10 a\u00f1os y desde hace 3 a\u00f1os est\u00e1 centrado en el desarrollo sobre SharePoint. Actualmente es Software &amp; Cloud Architect Lead en ENCAMINA.","url":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/author\/desarrollandosobresharepoint\/"}]}},"_links":{"self":[{"href":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-json\/wp\/v2\/posts\/1592","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-json\/wp\/v2\/users\/8"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-json\/wp\/v2\/comments?post=1592"}],"version-history":[{"count":0,"href":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-json\/wp\/v2\/posts\/1592\/revisions"}],"wp:attachment":[{"href":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-json\/wp\/v2\/media?parent=1592"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-json\/wp\/v2\/categories?post=1592"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-json\/wp\/v2\/tags?post=1592"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}