{"id":992,"date":"2015-04-08T00:41:47","date_gmt":"2015-04-07T21:41:47","guid":{"rendered":"http:\/\/facemsoft.ro\/?p=992"},"modified":"2020-08-17T18:08:01","modified_gmt":"2020-08-17T15:08:01","slug":"clean-code-episodul-3","status":"publish","type":"post","link":"https:\/\/facemsoft.ro\/en\/tutoriale-video\/clean-code\/clean-code-episodul-3\/","title":{"rendered":"Clean Code &#8211; Episodul 3"},"content":{"rendered":"<div data-elementor-type=\"wp-post\" data-elementor-id=\"992\" class=\"elementor elementor-992\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-tz6c73i elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"tz6c73i\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-620cf0u\" data-id=\"620cf0u\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-qtdrt8n elementor-widget elementor-widget-video\" data-id=\"qtdrt8n\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;show_image_overlay&quot;:&quot;yes&quot;,&quot;image_overlay&quot;:{&quot;url&quot;:&quot;https:\\\/\\\/facemsoft.ro\\\/wp-content\\\/uploads\\\/2015\\\/04\\\/CleanCode3.png&quot;,&quot;id&quot;:993,&quot;size&quot;:&quot;&quot;},&quot;lightbox&quot;:&quot;yes&quot;,&quot;youtube_url&quot;:&quot;https:\\\/\\\/www.youtube.com\\\/watch?v=Ylt1etoO0VU&quot;,&quot;video_type&quot;:&quot;youtube&quot;,&quot;controls&quot;:&quot;yes&quot;}\" data-widget_type=\"video.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-wrapper elementor-open-lightbox\">\n\t\t\t\t\t\t\t<div class=\"elementor-custom-embed-image-overlay\" data-elementor-open-lightbox=\"yes\" data-elementor-lightbox=\"{&quot;type&quot;:&quot;video&quot;,&quot;videoType&quot;:&quot;youtube&quot;,&quot;url&quot;:&quot;https:\\\/\\\/www.youtube.com\\\/embed\\\/Ylt1etoO0VU?feature=oembed&amp;start&amp;end&amp;wmode=opaque&amp;loop=0&amp;controls=1&amp;mute=0&amp;rel=0&amp;cc_load_policy=0&quot;,&quot;autoplay&quot;:&quot;&quot;,&quot;modalOptions&quot;:{&quot;id&quot;:&quot;elementor-lightbox-qtdrt8n&quot;,&quot;entranceAnimation&quot;:&quot;&quot;,&quot;entranceAnimation_tablet&quot;:&quot;&quot;,&quot;entranceAnimation_mobile&quot;:&quot;&quot;,&quot;videoAspectRatio&quot;:&quot;169&quot;}}\" data-e-action-hash=\"#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJ0eXBlIjoidmlkZW8iLCJ2aWRlb1R5cGUiOiJ5b3V0dWJlIiwidXJsIjoiaHR0cHM6XC9cL3d3dy55b3V0dWJlLmNvbVwvZW1iZWRcL1lsdDFldG9PMFZVP2ZlYXR1cmU9b2VtYmVkJnN0YXJ0JmVuZCZ3bW9kZT1vcGFxdWUmbG9vcD0wJmNvbnRyb2xzPTEmbXV0ZT0wJnJlbD0wJmNjX2xvYWRfcG9saWN5PTAiLCJhdXRvcGxheSI6IiIsIm1vZGFsT3B0aW9ucyI6eyJpZCI6ImVsZW1lbnRvci1saWdodGJveC1xdGRydDhuIiwiZW50cmFuY2VBbmltYXRpb24iOiIiLCJlbnRyYW5jZUFuaW1hdGlvbl90YWJsZXQiOiIiLCJlbnRyYW5jZUFuaW1hdGlvbl9tb2JpbGUiOiIiLCJ2aWRlb0FzcGVjdFJhdGlvIjoiMTY5In19\">\n\t\t\t\t\t\t\t\t\t\t\t<img fetchpriority=\"high\" decoding=\"async\" width=\"755\" height=\"510\" src=\"https:\/\/i0.wp.com\/facemsoft.ro\/wp-content\/uploads\/2015\/04\/CleanCode3.png?fit=755%2C510&amp;ssl=1\" class=\"attachment-full size-full wp-image-993\" alt=\"Clean Code curs 3\" srcset=\"https:\/\/i0.wp.com\/facemsoft.ro\/wp-content\/uploads\/2015\/04\/CleanCode3.png?w=755&amp;ssl=1 755w, https:\/\/i0.wp.com\/facemsoft.ro\/wp-content\/uploads\/2015\/04\/CleanCode3.png?resize=300%2C203&amp;ssl=1 300w\" sizes=\"(max-width: 750px) 100vw, 750px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"elementor-custom-embed-play\" role=\"button\" aria-label=\"Play Video\" tabindex=\"0\" data-no-translation-aria-label=\"\">\n\t\t\t\t\t\t\t<i aria-hidden=\"true\" class=\"eicon-play\"><\/i>\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-389975a elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"389975a\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-b31b4c6\" data-id=\"b31b4c6\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-31470df elementor-widget elementor-widget-spacer\" data-id=\"31470df\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-9af84c2 elementor-widget elementor-widget-heading\" data-id=\"9af84c2\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">Transcriere<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-5c19c8c elementor-widget elementor-widget-text-editor\" data-id=\"5c19c8c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<h3><span>Ce p\u0103rere ave\u021bi despre codul de mai jos? Cum vi se pare la o simpl\u0103 citire? \u00cen primul r\u00e2nd e scris \u00een Java, deci dac\u0103 problema aparent\u0103 e cu acoladele acest lucru se datoreaz\u0103 limbajului Java, acolo a\u0219a se prefer\u0103. Programatorii de Java prefer\u0103 s\u0103 pun\u0103 acoladele dup\u0103 denumirea func\u021biilor, respectiv dup\u0103 structurile de programare, gen dup\u0103 for. Doar din punct de vedere al cur\u0103\u021beniei, observ\u0103m mai multe probleme \u0219i o s\u0103 vi le enum\u0103r aici pentru c\u0103 nu pute\u021bi r\u0103spunde, poate doar \u00een zona de comentarii.&nbsp;<\/span><\/h3>\n<h3><span>Prima problem\u0103 e cu numele acestei func\u021bii. Ea se nume\u0219te Calculeaz\u0103, dar nu \u0219tim ce calculeaz\u0103. Ar putea s\u0103 calculeze orice. Dac\u0103 st\u0103m bine &nbsp;\u0219i analiz\u0103m codul, dar asta presupune s\u0103 ne petrecem foarte mult timp analiz\u00e2ndu-l, realiz\u0103m c\u0103 aceast\u0103 func\u021bie face de fapt suma elementelor unui ArrayList. Dar, acest lucru ar fi trebuit s\u0103 fie \u0219tiut \u00eenc\u0103 de la \u00eenceput, adic\u0103 aprioric din denumirea metodei. Vedem c\u0103 nu am ales nicio conven\u021bie de nume pentru variabile avem un x, un y. Nu \u0219tim cine sunt acest x \u0219i acest y, nu \u0219tim cine e l-ul. Adic\u0103 v\u0103d c\u0103 l-am declarat ArrayList, dar apoi, 3 r\u00e2nduri mai jos, dac\u0103 fac l.add(), nici nu \u0219tiu cine este acest l. Nu \u0219tiu cine e m. Poate trebuia s\u0103 se numeasc\u0103 sum\u0103, nu?<\/span><\/h3>\n<h3><span>Ok. Hai s\u0103 vedem ce reguli aplic\u0103m ca s\u0103 facem din acest cod, un cod curat. \u00cen primul r\u00e2nd spuneam c\u0103 trebuie s\u0103 folosim conven\u021bii de nume. Acestea sunt conven\u021biile de nume principale, toate celelalte sunt derivate din acestea. Prima conven\u021bie e UpperCamelCase, asta presupune scrierea numelor de variabile, respectiv atribute \u0219i clase exact cum e scris UpperCamelCase. Adic\u0103, primul substantiv din denumire cu liter\u0103 mare, urmat de al doilea cuv\u00e2nt tot cu liter\u0103 mare, urmat de al treilea cuv\u00e2nt, legat, tot cu liter\u0103 mare \u0219i a\u0219a mai departe. De exemplu dac\u0103 am clasa \u201ecard bancar\u201d pot s\u0103 scriu CardBancar, legat, cu \u201eC\u201d mare \u0219i \u201eB\u201d mare. Asta \u00eenseamn\u0103 UpperCamelCase. Lower camel case, presupune aceea\u0219i scriere doar c\u0103 \u00eencep cu litera mic\u0103. Deci dac\u0103 am un atribut \u00eentr-o clas\u0103 numit \u201ecard bancar\u201d, acel atribut va fi scris card cu \u201ec\u201d mic, \u201ebancar\u201d legat, dar cu \u201eB\u201d mare. \u0102sta e lowerCamelCase. \u00cen practic\u0103, \u0219i v\u0103 dau un exemplu despre cum folosesc eu, voi pute\u021bi s\u0103 folosi\u021bi oricum, asta e doar o conven\u021bie stabilit\u0103. Pentru UpperCamelCase se folose\u0219te \u00een general pentru clase \u0219i pentru o anumit\u0103 categorie de metode, dac\u0103 vre\u021bi. Eu o folosesc pentru metodele publice. Metodele publice le pun cu UpperCamelCase. Lower camel case, \u00eel folosesc pentru atributele din clas\u0103 \u0219i pentru metodele private.<\/span><\/h3>\n<h3><span>Mai exist\u0103 totodat\u0103 System Hungarian Notation \u0219i Apps Hungarian Notation. La ce se refer\u0103 aceste nota\u021bii ungare? Nota\u021bia ungar\u0103 presupune ca, \u0219i acum ne referim la system hungarian notation, presupune ca \u00eenaintea unui denumiri de variabil\u0103 s\u0103 punem \u0219i tipul ei. De exemplu avem un \u00eentreg numarCarduri, scriem iNumarCarduri, unde \u201en\u201d cu \u201eN\u201d mare, \u201ec\u201d cu \u201eC\u201d mare, folosind totodat\u0103 nota\u021bia camelCase. Ca s\u0103 spunem c\u0103 acest i e \u00eentreg. Am un \u0219ir de caractere \u201etitular card\u201d pot s\u0103 scriu strTitularCard, totul scris legat. \u0102sta va fi un system hungarian notation pentru un string. Acum, \u00een practic\u0103, system hungarian notation se folose\u0219te doar \u00een limbajele \u201eloose type\u201d sau \u201eloosely typed\u201d, limbajele care nu au tipuri de date concrete. Adic\u0103 declar\u0103 variabile generale \u0219i acele \u00een acele variabile pot pune orice fel de dat\u0103. E cazul JavaScript, PHP, \u00een care declar o variabil\u0103 \u0219i \u00een ce apare acolo pot pune \u0219i \u00eentreg, pot pune \u0219ir de caractere \u0219i ea ia tipul valorii puse \u00een ea. Ei, ca s\u0103 pot s\u0103 for\u021bez s\u0103 fac din acest tip, din acest limbaj loose type, s\u0103 fac un strong type, atunci pun \u00een fa\u021ba variabilei respective tipul \u0219i atunci voi \u0219ti clar c\u0103 de exemplu \u00eentr-un iNumarCard am voie s\u0103 salvez doar un \u00eentreg, n-am voie s\u0103 pun un \u0219ir de caractere, \u00eentr-un strTitularCard am voie s\u0103 pun doar un \u0219ir de caractere, nu am voie s\u0103 pun un \u00eentreg.<\/span><\/h3>\n<h3><span>Pentru limbajele folosite \u00een mod curent \u0219i anume C#, Java, C++, care sunt strong type, se prefer\u0103 mai degrab\u0103 Apps Hungarian Notation. Ce presupune acesta? Presupune s\u0103 pun o liter\u0103 care \u00eemi spune ori vizibilitatea, ori tipul datei respective. \u0218i eu de exemplu, prefer s\u0103 pun un m \u00een fa\u021ba membrilor (atributelor) clasei. De ce? Atributelor private, aten\u021bie. De ce? Ca s\u0103 \u0219tiu c\u0103 sunt membri, m de la member. Sunt membri \u00een acea clas\u0103, nu pot fi v\u0103zu\u021bi din exterior, a\u0219a c\u0103 pun un m. \u00cen fa\u021ba variabilelor statice prefer s\u0103 pun un s, de la static, \u00een fa\u021ba constantelor prefer s\u0103 pun un c \u0219i a\u0219a mai departe. De exemplu dac\u0103 am o constant\u0103 \u00een clasa mea, care spune, nu \u0219tiu, codulBancii, o s\u0103 am c mic codul b\u0103ncii cu \u201eC\u201d mare, \u201eB\u201d mare \u0219i scris legat. \u0102sta e apps hungarian notation pentru constante.&nbsp;<\/span><\/h3>\n<h3><span>O s\u0103 g\u0103si\u021bi \u00een practic\u0103, \u00een func\u021bie de firma pentru care lucra\u021bi, \u00een func\u021bie de proiectul pe care lucra\u021bi sau de ce v\u0103 impune, de exemplu, o solu\u021bie sau un instrument de cur\u0103\u021bare a codului, despre care o s\u0103 vorbim pu\u021bin mai t\u00e2rziu. \u00cen func\u021bie de ce v\u0103 e impus de unul dintre ace\u0219ti factori, o s\u0103 g\u0103si\u021bi ori exact aceste conven\u021bii, a\u0219a cum le-am explicat, ori combina\u021bii \u00eentre acestea.&nbsp;<\/span><\/h3>\n<h3><span>Ok, acum c\u0103 am stabilit exact cum denumim variabile, atributele, func\u021biile \u0219i clasele, hai s\u0103 vedem cum aplic\u0103m aceste conven\u021bii de nume pe fiecare \u00een parte. La clase, mare aten\u021bie la ce denumire alegem pentru clase. Denumirea trebuie s\u0103 fie sugestiv\u0103, dac\u0103 cineva cite\u0219te denumirea acelei clase, trebuie s\u0103 \u00ee\u0219i dea seama exact c\u0103 acea clas\u0103 face un anumit lucru. Apoi, trebuie s\u0103 alegem cu aten\u021bie o denumire pentru clas\u0103 pentru c\u0103 numele prost alese sunt un magnet pentru programatorii lene\u0219i. Adic\u0103, e vineri seara, nu am chef s\u0103 scriu, adic\u0103 scriu cu sil\u0103 oricum ultima func\u021bie care s\u0103 fac\u0103 nu \u0219tiu ce, nu \u0219tiu unde s\u0103 o pun, o tr\u00e2ntesc \u00eentr-o clas\u0103 care se cheam\u0103 UtilityManager sau Utils, parc\u0103 merge acolo. O tr\u00e2ntesc acolo \u0219i nu mai \u0219tie nimeni de ea. C\u00e2nd va fi vorba de modificat clasa Utils, o s\u0103 m\u0103 minunez de ce g\u0103sesc pe acolo.<\/span><\/h3>\n<h3><span>Apoi, un nume de clas\u0103 trebuie s\u0103 fie compus dintr-un substantiv specific, f\u0103r\u0103 prefixe sau sufixe inutile. Deci, nu UtilityManager, nu UserInfo. User \u0219i at\u00e2t, Utility \u0219i at\u00e2t. Dar Utility am zis deja ca nu e recomandat. Dar nu am de ce s\u0103 am UserInfo \u0219i alte chestii. User e suficient. Apoi, nu trebuie s\u0103 uit\u0103m de principiul Single Responsability. Adic\u0103 o clas\u0103 trebuie s\u0103 fac\u0103 un singur lucru \u0219i numai unul. Adic\u0103 nu face\u021bi clase care fac ghiveci. Prelucreaz\u0103 \u0219i anumite chestii \u0219i alte chestii \u0219i tot ce vrei.&nbsp;<\/span><\/h3>\n<h3><span>Ok. Legat de conven\u021biile de nume \u00een metode. Un nume corect ales de metod\u0103 trebuie s\u0103 descrie clar ce face acea metod\u0103. Uita\u021bi-v\u0103 la exemplul de mai devreme cu acel calculeaz\u0103, \u00een primul r\u00e2nd ar fi trebuit s\u0103 primeasc\u0103 ca \u0219i parametru o list\u0103 sau un ArrayList de obiecte da, de \u00eentregi, pe care s\u0103 \u00eel prelucreze. \u0218i numele corect era sumaElementeArrayList, de exemplu, scris legat, folosind camelCase, chiar UpperCamelCase. Deci scriam SumaElementeLista \u0219i gata. Asta f\u0103cea. Dac\u0103 era o list\u0103 specific\u0103, noi am folosit un ArrayList care poate s\u0103 primeasc\u0103 orice obiect. Object are ca \u0219i element. Dar, dac\u0103 ar fi fost s\u0103 folosesc o list\u0103, din Generics, care are un tip specific, atunci puteam s\u0103 scriu direct. Dac\u0103 primea ca \u0219i parametru o list\u0103 de studen\u021bi, puteam s\u0103 fac sumaNoteStudenti.<\/span><\/h3>\n<h3><span>Exist\u0103 situa\u021bii \u00eentr-adev\u0103r c\u00e2nd numele prost alese nu pot fi evitate. Ele sunt generate automat de mediu. \u00cen acest caz e indicat ca \u00een interiorul acestora s\u0103 fie doar apeluri de alte metode. \u0218i aici m\u0103 refer \u00een general, de exemplu s\u0103 luam C#-ul, cu Windows Forms. Putem discuta la fel de bine de Android. Deci, la C#, la Windows Forms \u0219ti\u021bi c\u0103 ave\u021bi, de exemplu, evenimentul de load pe formulare &#8211; onLoad. Nu am cum s\u0103 schimb, s\u0103 nu am numele formular underscore onLoad ca \u0219i nume de metod\u0103. Dac\u0103 scriu, n-o s\u0103 mai func\u021bioneze programul pentru c\u0103 e \u00eenglobat\u0103 \u00een limbajul de programare. La fel cum la Android pe buton de exemplu am onClick \u0219i a\u0219a mai departe. Unde nu pot evita aceast\u0103 denumire generat\u0103 de sistem, voi alege ca \u00een func\u021bia respectiv\u0103 s\u0103 fac doar apel de metod\u0103. \u0218i de exemplu, s\u0103 zicem c\u0103, nu \u0219tiu, la \u00eenc\u0103rcarea unui formular, la Form1_OnLoad, vreau s\u0103 \u00eencarc datele \u0219i s\u0103 validezi formularul. Voi apela o func\u021bie incarcaDate, o func\u021bie valideazaFormular \u0219i at\u00e2t voi face \u00een metoda onLoad. \u0218i codul e considerat clean. Apoi, aten\u021bie, am spus o func\u021bie care \u00eencarc\u0103 date \u0219i o func\u021bie care valideaz\u0103. Niciodat\u0103 o func\u021bie care \u0219i \u00eencarc\u0103 \u0219i valideaz\u0103. De ce? Ori de c\u00e2te ori numele unei metode con\u021bine o conjunc\u021bie (\u0219i, sau, ori), e ok s\u0103 fac din ea dou\u0103 metode sau chiar e indicat s\u0103 fac din ea dou\u0103 metode. Deci am, unde am VerificaSiTrimiteMail, ValideazaUtilizatorSiInsereaza. Nu, am ValideazaUtilizator \u0219i InsereazaUtilizator. VerificaUtilizator, TrimiteMail. Nu am metode compuse.&nbsp;<\/span><\/h3>\n<h3><span>Apoi, nu abrevia\u021bi denumirile metodelor. De la asta venea chestia asta, \u201enu abr den met\u201d. Limbajele curente, calculatoarele, de fapt, curente au stiva sistem destul de mare, au suficient de multe, de mult spa\u021biu de memorie. Nu am de ce s\u0103 abreviez denumirile metodelor. Am nevoie de o propozi\u021bie \u00eentreag\u0103 ca s\u0103 descriu ce face acea metod\u0103, e mai indicat s\u0103 folosesc o propozi\u021bie \u00eentreag\u0103 dec\u00e2t s\u0103 abreviez chestii. De exemplu, hai s\u0103 luam o metod\u0103, s\u0103 spunem c\u0103 TrimiteMail. Nu trtMail, nu ValideazaUtilizator &#8211; ValidUsr. ValideazaUtilizator, e suficient. Sau ValidUser, nu VldUsr. C\u0103 nu \u0219tiu, poate, echipa \u00een care lucrez \u0219i pentru care scriu cod e multiregional\u0103, fiecare are cultura proprie, poate \u00een nu \u0219tiu ce limb\u0103 usr \u00eenseamn\u0103 cu totul altceva \u0219i acel coleg \u00een\u021belege c\u0103 func\u021bia face cu totul altceva.<\/span><\/h3>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>","protected":false},"excerpt":{"rendered":"<p>Transcriere Ce p\u0103rere ave\u021bi despre codul de mai jos? Cum vi se pare la o simpl\u0103 citire? \u00cen primul r\u00e2nd e scris \u00een Java, deci dac\u0103 problema aparent\u0103 e cu acoladele acest lucru se datoreaz\u0103 limbajului Java, acolo a\u0219a se prefer\u0103. Programatorii de Java prefer\u0103 s\u0103 pun\u0103 acoladele dup\u0103 denumirea [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":3084,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[158,172],"tags":[159,162,164,24],"class_list":["post-992","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-clean-code","category-tutoriale-video","tag-clean-code","tag-cod-bine-scris","tag-conventii-de-nume","tag-java"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Clean Code - Episodul 3 - Facem Soft<\/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:\/\/facemsoft.ro\/en\/tutoriale-video\/clean-code\/clean-code-episodul-3\/\" \/>\n<meta property=\"og:locale\" content=\"en_GB\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Clean Code - Episodul 3 - Facem Soft\" \/>\n<meta property=\"og:description\" content=\"Transcriere Ce p\u0103rere ave\u021bi despre codul de mai jos? Cum vi se pare la o simpl\u0103 citire? \u00cen primul r\u00e2nd e scris \u00een Java, deci dac\u0103 problema aparent\u0103 e cu acoladele acest lucru se datoreaz\u0103 limbajului Java, acolo a\u0219a se prefer\u0103. Programatorii de Java prefer\u0103 s\u0103 pun\u0103 acoladele dup\u0103 denumirea [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/facemsoft.ro\/en\/tutoriale-video\/clean-code\/clean-code-episodul-3\/\" \/>\n<meta property=\"og:site_name\" content=\"Facem Soft\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/facemsoft\" \/>\n<meta property=\"article:published_time\" content=\"2015-04-07T21:41:47+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2020-08-17T15:08:01+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/i0.wp.com\/facemsoft.ro\/wp-content\/uploads\/2017\/09\/clean_code.png?fit=1200%2C589&ssl=1\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"589\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Bogdan Iancu\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Bogdan Iancu\" \/>\n\t<meta name=\"twitter:label2\" content=\"Estimated reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"9 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/facemsoft.ro\\\/en\\\/tutoriale-video\\\/clean-code\\\/clean-code-episodul-3\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/facemsoft.ro\\\/en\\\/tutoriale-video\\\/clean-code\\\/clean-code-episodul-3\\\/\"},\"author\":{\"name\":\"Bogdan Iancu\",\"@id\":\"https:\\\/\\\/facemsoft.ro\\\/#\\\/schema\\\/person\\\/f2cca604e1acf812e3f40c8cc8a82190\"},\"headline\":\"Clean Code &#8211; Episodul 3\",\"datePublished\":\"2015-04-07T21:41:47+00:00\",\"dateModified\":\"2020-08-17T15:08:01+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/facemsoft.ro\\\/en\\\/tutoriale-video\\\/clean-code\\\/clean-code-episodul-3\\\/\"},\"wordCount\":1777,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/facemsoft.ro\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/facemsoft.ro\\\/en\\\/tutoriale-video\\\/clean-code\\\/clean-code-episodul-3\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/i0.wp.com\\\/facemsoft.ro\\\/wp-content\\\/uploads\\\/2017\\\/09\\\/clean_code.png?fit=1200%2C589&ssl=1\",\"keywords\":[\"clean code\",\"cod bine scris\",\"conventii de nume\",\"Java\"],\"articleSection\":[\"Clean Code\",\"Tutoriale video\"],\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/facemsoft.ro\\\/en\\\/tutoriale-video\\\/clean-code\\\/clean-code-episodul-3\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/facemsoft.ro\\\/en\\\/tutoriale-video\\\/clean-code\\\/clean-code-episodul-3\\\/\",\"url\":\"https:\\\/\\\/facemsoft.ro\\\/en\\\/tutoriale-video\\\/clean-code\\\/clean-code-episodul-3\\\/\",\"name\":\"Clean Code - Episodul 3 - Facem Soft\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/facemsoft.ro\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/facemsoft.ro\\\/en\\\/tutoriale-video\\\/clean-code\\\/clean-code-episodul-3\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/facemsoft.ro\\\/en\\\/tutoriale-video\\\/clean-code\\\/clean-code-episodul-3\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/i0.wp.com\\\/facemsoft.ro\\\/wp-content\\\/uploads\\\/2017\\\/09\\\/clean_code.png?fit=1200%2C589&ssl=1\",\"datePublished\":\"2015-04-07T21:41:47+00:00\",\"dateModified\":\"2020-08-17T15:08:01+00:00\",\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/facemsoft.ro\\\/en\\\/tutoriale-video\\\/clean-code\\\/clean-code-episodul-3\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\\\/\\\/facemsoft.ro\\\/en\\\/tutoriale-video\\\/clean-code\\\/clean-code-episodul-3\\\/#primaryimage\",\"url\":\"https:\\\/\\\/i0.wp.com\\\/facemsoft.ro\\\/wp-content\\\/uploads\\\/2017\\\/09\\\/clean_code.png?fit=1200%2C589&ssl=1\",\"contentUrl\":\"https:\\\/\\\/i0.wp.com\\\/facemsoft.ro\\\/wp-content\\\/uploads\\\/2017\\\/09\\\/clean_code.png?fit=1200%2C589&ssl=1\",\"width\":\"1200\",\"height\":\"589\",\"caption\":\"Clean Code\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/facemsoft.ro\\\/#website\",\"url\":\"https:\\\/\\\/facemsoft.ro\\\/\",\"name\":\"Facem Soft\",\"description\":\"Cursuri IT livrate din pasiune pentru programare\",\"publisher\":{\"@id\":\"https:\\\/\\\/facemsoft.ro\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/facemsoft.ro\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-GB\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/facemsoft.ro\\\/#organization\",\"name\":\"S.C. Facem Soft - Training & Consulting S.R.L.\",\"url\":\"https:\\\/\\\/facemsoft.ro\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\\\/\\\/facemsoft.ro\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/i0.wp.com\\\/facemsoft.ro\\\/wp-content\\\/uploads\\\/2017\\\/09\\\/logo_site_v3.png?fit=3333%2C2500&ssl=1\",\"contentUrl\":\"https:\\\/\\\/i0.wp.com\\\/facemsoft.ro\\\/wp-content\\\/uploads\\\/2017\\\/09\\\/logo_site_v3.png?fit=3333%2C2500&ssl=1\",\"width\":3333,\"height\":2500,\"caption\":\"S.C. Facem Soft - Training & Consulting S.R.L.\"},\"image\":{\"@id\":\"https:\\\/\\\/facemsoft.ro\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/facemsoft\",\"https:\\\/\\\/www.instagram.com\\\/bogdaniancu88\\\/\",\"https:\\\/\\\/www.linkedin.com\\\/in\\\/bogdaniancu88\\\/\",\"https:\\\/\\\/www.youtube.com\\\/FacemSoft\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/facemsoft.ro\\\/#\\\/schema\\\/person\\\/f2cca604e1acf812e3f40c8cc8a82190\",\"name\":\"Bogdan Iancu\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\\\/\\\/facemsoft.ro\\\/wp-content\\\/wphb-cache\\\/gravatar\\\/d91\\\/d916ae63d2921531d15dbaa2880e93bfx96.jpg\",\"url\":\"https:\\\/\\\/facemsoft.ro\\\/wp-content\\\/wphb-cache\\\/gravatar\\\/d91\\\/d916ae63d2921531d15dbaa2880e93bfx96.jpg\",\"contentUrl\":\"https:\\\/\\\/facemsoft.ro\\\/wp-content\\\/wphb-cache\\\/gravatar\\\/d91\\\/d916ae63d2921531d15dbaa2880e93bfx96.jpg\",\"caption\":\"Bogdan Iancu\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Clean Code - Episodul 3 - Facem Soft","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:\/\/facemsoft.ro\/en\/tutoriale-video\/clean-code\/clean-code-episodul-3\/","og_locale":"en_GB","og_type":"article","og_title":"Clean Code - Episodul 3 - Facem Soft","og_description":"Transcriere Ce p\u0103rere ave\u021bi despre codul de mai jos? Cum vi se pare la o simpl\u0103 citire? \u00cen primul r\u00e2nd e scris \u00een Java, deci dac\u0103 problema aparent\u0103 e cu acoladele acest lucru se datoreaz\u0103 limbajului Java, acolo a\u0219a se prefer\u0103. Programatorii de Java prefer\u0103 s\u0103 pun\u0103 acoladele dup\u0103 denumirea [&hellip;]","og_url":"https:\/\/facemsoft.ro\/en\/tutoriale-video\/clean-code\/clean-code-episodul-3\/","og_site_name":"Facem Soft","article_publisher":"https:\/\/www.facebook.com\/facemsoft","article_published_time":"2015-04-07T21:41:47+00:00","article_modified_time":"2020-08-17T15:08:01+00:00","og_image":[{"width":1200,"height":589,"url":"https:\/\/i0.wp.com\/facemsoft.ro\/wp-content\/uploads\/2017\/09\/clean_code.png?fit=1200%2C589&ssl=1","type":"image\/png"}],"author":"Bogdan Iancu","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Bogdan Iancu","Estimated reading time":"9 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/facemsoft.ro\/en\/tutoriale-video\/clean-code\/clean-code-episodul-3\/#article","isPartOf":{"@id":"https:\/\/facemsoft.ro\/en\/tutoriale-video\/clean-code\/clean-code-episodul-3\/"},"author":{"name":"Bogdan Iancu","@id":"https:\/\/facemsoft.ro\/#\/schema\/person\/f2cca604e1acf812e3f40c8cc8a82190"},"headline":"Clean Code &#8211; Episodul 3","datePublished":"2015-04-07T21:41:47+00:00","dateModified":"2020-08-17T15:08:01+00:00","mainEntityOfPage":{"@id":"https:\/\/facemsoft.ro\/en\/tutoriale-video\/clean-code\/clean-code-episodul-3\/"},"wordCount":1777,"commentCount":0,"publisher":{"@id":"https:\/\/facemsoft.ro\/#organization"},"image":{"@id":"https:\/\/facemsoft.ro\/en\/tutoriale-video\/clean-code\/clean-code-episodul-3\/#primaryimage"},"thumbnailUrl":"https:\/\/i0.wp.com\/facemsoft.ro\/wp-content\/uploads\/2017\/09\/clean_code.png?fit=1200%2C589&ssl=1","keywords":["clean code","cod bine scris","conventii de nume","Java"],"articleSection":["Clean Code","Tutoriale video"],"inLanguage":"en-GB","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/facemsoft.ro\/en\/tutoriale-video\/clean-code\/clean-code-episodul-3\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/facemsoft.ro\/en\/tutoriale-video\/clean-code\/clean-code-episodul-3\/","url":"https:\/\/facemsoft.ro\/en\/tutoriale-video\/clean-code\/clean-code-episodul-3\/","name":"Clean Code - Episodul 3 - Facem Soft","isPartOf":{"@id":"https:\/\/facemsoft.ro\/#website"},"primaryImageOfPage":{"@id":"https:\/\/facemsoft.ro\/en\/tutoriale-video\/clean-code\/clean-code-episodul-3\/#primaryimage"},"image":{"@id":"https:\/\/facemsoft.ro\/en\/tutoriale-video\/clean-code\/clean-code-episodul-3\/#primaryimage"},"thumbnailUrl":"https:\/\/i0.wp.com\/facemsoft.ro\/wp-content\/uploads\/2017\/09\/clean_code.png?fit=1200%2C589&ssl=1","datePublished":"2015-04-07T21:41:47+00:00","dateModified":"2020-08-17T15:08:01+00:00","inLanguage":"en-GB","potentialAction":[{"@type":"ReadAction","target":["https:\/\/facemsoft.ro\/en\/tutoriale-video\/clean-code\/clean-code-episodul-3\/"]}]},{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/facemsoft.ro\/en\/tutoriale-video\/clean-code\/clean-code-episodul-3\/#primaryimage","url":"https:\/\/i0.wp.com\/facemsoft.ro\/wp-content\/uploads\/2017\/09\/clean_code.png?fit=1200%2C589&ssl=1","contentUrl":"https:\/\/i0.wp.com\/facemsoft.ro\/wp-content\/uploads\/2017\/09\/clean_code.png?fit=1200%2C589&ssl=1","width":"1200","height":"589","caption":"Clean Code"},{"@type":"WebSite","@id":"https:\/\/facemsoft.ro\/#website","url":"https:\/\/facemsoft.ro\/","name":"Facem Soft","description":"Cursuri IT livrate din pasiune pentru programare","publisher":{"@id":"https:\/\/facemsoft.ro\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/facemsoft.ro\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-GB"},{"@type":"Organization","@id":"https:\/\/facemsoft.ro\/#organization","name":"S.C. Facem Soft - Training & Consulting S.R.L.","url":"https:\/\/facemsoft.ro\/","logo":{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/facemsoft.ro\/#\/schema\/logo\/image\/","url":"https:\/\/i0.wp.com\/facemsoft.ro\/wp-content\/uploads\/2017\/09\/logo_site_v3.png?fit=3333%2C2500&ssl=1","contentUrl":"https:\/\/i0.wp.com\/facemsoft.ro\/wp-content\/uploads\/2017\/09\/logo_site_v3.png?fit=3333%2C2500&ssl=1","width":3333,"height":2500,"caption":"S.C. Facem Soft - Training & Consulting S.R.L."},"image":{"@id":"https:\/\/facemsoft.ro\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/facemsoft","https:\/\/www.instagram.com\/bogdaniancu88\/","https:\/\/www.linkedin.com\/in\/bogdaniancu88\/","https:\/\/www.youtube.com\/FacemSoft"]},{"@type":"Person","@id":"https:\/\/facemsoft.ro\/#\/schema\/person\/f2cca604e1acf812e3f40c8cc8a82190","name":"Bogdan Iancu","image":{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/facemsoft.ro\/wp-content\/wphb-cache\/gravatar\/d91\/d916ae63d2921531d15dbaa2880e93bfx96.jpg","url":"https:\/\/facemsoft.ro\/wp-content\/wphb-cache\/gravatar\/d91\/d916ae63d2921531d15dbaa2880e93bfx96.jpg","contentUrl":"https:\/\/facemsoft.ro\/wp-content\/wphb-cache\/gravatar\/d91\/d916ae63d2921531d15dbaa2880e93bfx96.jpg","caption":"Bogdan Iancu"}}]}},"jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/i0.wp.com\/facemsoft.ro\/wp-content\/uploads\/2017\/09\/clean_code.png?fit=1200%2C589&ssl=1","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p81Qbo-g0","_links":{"self":[{"href":"https:\/\/facemsoft.ro\/en\/wp-json\/wp\/v2\/posts\/992","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/facemsoft.ro\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/facemsoft.ro\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/facemsoft.ro\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/facemsoft.ro\/en\/wp-json\/wp\/v2\/comments?post=992"}],"version-history":[{"count":0,"href":"https:\/\/facemsoft.ro\/en\/wp-json\/wp\/v2\/posts\/992\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/facemsoft.ro\/en\/wp-json\/wp\/v2\/media\/3084"}],"wp:attachment":[{"href":"https:\/\/facemsoft.ro\/en\/wp-json\/wp\/v2\/media?parent=992"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/facemsoft.ro\/en\/wp-json\/wp\/v2\/categories?post=992"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/facemsoft.ro\/en\/wp-json\/wp\/v2\/tags?post=992"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}