{"id":729,"date":"2015-05-08T09:17:55","date_gmt":"2015-05-08T08:17:55","guid":{"rendered":"http:\/\/www.turazlab.com\/?p=729"},"modified":"2015-05-08T09:17:55","modified_gmt":"2015-05-08T08:17:55","slug":"zucchero-sintattico","status":"publish","type":"post","link":"https:\/\/www.turazlab.com\/?p=729","title":{"rendered":"Zucchero sintattico"},"content":{"rendered":"<blockquote><p>In computer science, <b>syntactic sugar<\/b> is syntax within a programming language that is designed to make things easier to read or to express. It makes the language &#8220;sweeter&#8221; for human use: things can be expressed more clearly, more concisely, or in an alternative style that some may prefer.<br \/>\nFonte:\u00a0<a href=\"http:\/\/en.wikipedia.org\/wiki\/Syntactic_sugar\" target=\"_blank\">Syntactic Sugar su Wikipedia<\/a><\/p><\/blockquote>\n<p>Quando si riprende in mano del codice dopo anni che \u00e8 stato scritto o quando si lavora in team \u00e8 veramente importante che la sintassi usata sia la pi\u00f9 &#8220;zuccherata&#8221; possibile.<\/p>\n<p>Spesso nel mio lavoro perdo una quantit\u00e0 considerevole di tempo a cercare di capire cosa fa una porzione di codice perch\u00e9 non \u00e8 stata commentata o perch\u00e9 il programmatore (molto spesso io stesso) ha cercato di scrivere meno linee possibili omettendo parentesi o inserendo due istruzioni sulla stessa riga.<\/p>\n<p>La qualit\u00e0 del codice scritto dovrebbe essere anche valutata in base a quanto risulta semplice riprendere in mano il codice.<\/p>\n<p>Cosa fare quindi?<\/p>\n<p><!--more--><\/p>\n<p>Ecco qualche semplice consiglio:<\/p>\n<h3>Commentare<\/h3>\n<p>L&#8217;uso dei commenti \u00e8 vitale per iniziare a documentare il proprio codice. Avere un documento esterno che descrivere il funzionamento del codice senza avere dei commenti nel codice \u00e8 praticamente inutile.<\/p>\n<p>\/\/ Commento singolo<\/p>\n<p>\/*<br \/>\nCommento su pi\u00f9 righe<br \/>\n*\/<\/p>\n<p>\/**<br \/>\n* Commento in xxxDOC style<br \/>\n*\/<\/p>\n<p>Se, per esempio, abbiamo una funzione e la vogliamo commentare in maniera utile dobbiamo fornire pi\u00f9 informazioni possibili, inoltre alcuni IDE (es: <a href=\"https:\/\/eclipse.org\/\" target=\"_blank\">Eclipse<\/a> ) sono in grado di leggere i commenti scritti in simil JavaDoc per utilizzarli per il code completion facilitando tantissimo il lavoro.<\/p>\n<pre>\/**\r\n* Questa funzione pulisce una stringa\r\n* @param String $input stringa da pulire\r\n* @return String $output stringa pulita\r\n*\/\r\nfunction pulisciStringa( string $input ) {\r\n     $output = '';\r\n     $output = trim($input);\r\n     return $output;\r\n}\r\n<\/pre>\n<h3>Nomi parlanti delle variabili<\/h3>\n<p>Pi\u00f9 volte ho visto variabili con nomi dati a caso o contratti cos\u00ec tanto da non essere pi\u00f9 comprensibili.<\/p>\n<pre>$ems = 12; \/\/ Non si capisce a cosa serva\r\n$etmdstu = 12; \/\/ Ancora non \u00e8 chiaro\r\n\r\n\/\/ In questo caso i dubbi su a cosa serva la variabile \r\n\/\/ sono veramente pochi\r\n$etaMediaStudenti = 12; \r\n<\/pre>\n<h3>Una istruzione una riga<\/h3>\n<p>A meno che non si stia facendo un esercizio di stile (in ogni caso cosa discutibile) \u00e8 meglio usare la regola di 1 istruzione 1 riga.<\/p>\n<pre>\/\/ In caso di revisione del codice, la seconda istruzione potrebbe essere non vista\r\n\r\n$nome = $trim($nome); $nome = ucfirst($nome); \r\n<\/pre>\n<h3>Le parentesi graffe non costano<\/h3>\n<p>Le graffe in molti casi delimitano blocchi di codice. Se il codice delimitato \u00e8 di una sola istruzione allora alcuni linguaggi permettono di ometterle, questo per\u00f2 rende pi\u00f9 complicata la lettura del codice e nel caso il programmatore metta anche pi\u00f9 istruzioni sulla stessa riga rende il tutto un incubo.<\/p>\n<pre>if ( $annoInserito == 2013 ) \r\n    echo \"Nel 2013 sono successe un sacco di cose\"; salva($annoInserito);\r\n<\/pre>\n<p>L&#8217;echo viene eseguita se l&#8217;if scatta, la seconda istruzione sempre.<br \/>\nQuesto leggendo il codice velocemente non \u00e8 subito comprensibile.<br \/>\nInvece:<\/p>\n<pre>if ( $annoInserito == 2013 ) {\r\n    echo \"Nel 2013 sono successe un sacco di cose\"; \r\n}\r\nsalva($annoInserito);\r\n<\/pre>\n<p>In questo ultimo caso \u00e8 chiarissimo.<\/p>\n<h3>Concludendo<\/h3>\n<p>Le cose che ho scritto sono semplici e a molti potrebbero sembrare ovvie, ma vi assicuro che nei miei anni di lavoro ho incontrato diverse difficolt\u00e0 che potevano essere evitate seguendo queste semplici regole.<\/p>\n<p>Non auguro a nessuno di voi di ritrovarsi in una sessione RDP su una VPN &#8220;a manovella&#8221; a dover correggere attraverso notepad.exe del codice in produzione che \u00e8 stato scritto da un programmatore che ha ignorato le regole base della <em>sintassi zuccherina<\/em>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In computer science, syntactic sugar is syntax within a programming language that is designed to make things easier to read or to express. It makes the language &#8220;sweeter&#8221; for human use: things can be expressed more clearly, more concisely, or in an alternative style that some may prefer. Fonte:\u00a0Syntactic Sugar su Wikipedia Quando si riprende [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":739,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[149,151],"tags":[155,152,153,154],"class_list":["post-729","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-coding","category-tips","tag-coding","tag-programmazione","tag-sintassi-zuccherina","tag-syntactic-sugar"],"_links":{"self":[{"href":"https:\/\/www.turazlab.com\/index.php?rest_route=\/wp\/v2\/posts\/729","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.turazlab.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.turazlab.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.turazlab.com\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.turazlab.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=729"}],"version-history":[{"count":9,"href":"https:\/\/www.turazlab.com\/index.php?rest_route=\/wp\/v2\/posts\/729\/revisions"}],"predecessor-version":[{"id":738,"href":"https:\/\/www.turazlab.com\/index.php?rest_route=\/wp\/v2\/posts\/729\/revisions\/738"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.turazlab.com\/index.php?rest_route=\/wp\/v2\/media\/739"}],"wp:attachment":[{"href":"https:\/\/www.turazlab.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=729"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.turazlab.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=729"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.turazlab.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=729"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}