Hungarian notation

Hungarian notation

Modul ăsta de definire a variabilelor este extrem de intereant și pare a fi foarte util în limbajele weak typed: prefixezi numele variabilei cu tipul ei: b_foo și știi că valoarea e de tip boolean. i_bar este, ai ghicit, integer.

Altfel spus, îi permite programatorului să își dea seama de tipul unei variabile rapid, în orice punct dintr-un bloc de cod, mai ales dacă vorbim de un limbaj weak typed: PHP, JS, Python, Ruby.

Darrrr… dacă tipul variabilei nu este neapărat necesar (în special în cazul în care scrii cod scurt), variabilele care țin în ele conținut special, de genul $usFoo pentru conținut unsafe, sunt altă treabă.

Iar treaba asta cred că o voi adopta și eu.

11 Comentarii

Gigel Anonimu' a scris

Am incercat la un moment dat – e messy treaba si face codul mai greu de citit. Plus ca daca-ti citeste altcineva codul trebuie sa fie familiarizat cu ce conventii anume folosesti.

Ptr. JS mai curand as folosi JsDOC, ptr. php nu stiu – exista o alternativa similara?

Gigel Anonimu' a scris

@Ionuț Staicu: Well, cine nu foloseste un IDE in ziua de azi? Mai ales ptr. proiecte serioase.
Dar pe de o parte sunt de acord – eu am folosit jsDoc doar ptr. functii, nicioadata ptr. variable – prea multa bataie de cap sa scrii un comment jsdoc ptr. o variabila. Deci da – ar fi mai simplu sa folosesti Hungarian notation.

Da’ tot cred ca ar face codul mai greu de citit….probabil pana te inveti sa ignori automat notatiile de la inceput. Da’ o sa fie nashpa cand o sa citesti alt cod care nu foloseste Hung. Notation – n-o sa te mai poti baza pe acelasi workflow mental.

Gigel Anonimu' a scris

Ah, si inca ceva. In exemplul de mai sus
„$usFoo”, „us” duce cu gandul la US sau Us decat la Unsafe. Eu unul as folosi mai curand o notatie mai agresiva si usor de recunoscut, mai ales daca e ptr. cateva variabile speciale. Gen
„$uns_foo” sau chiar „$unsafe_foo”. Underline-ul imi spune din prima ca-i ceva special la mijloc spre deosebire de camel case.

Paul a scris

O sa fiu hater, dar daca iti trebuie un sistem prin care sa tii minte tipul unei variabile, nu mai bine…faci variabila aia sa aiba tip explicit?

Stiu ca nu e tot timpul o optiune, stiu ca sunt hater, dar mi se pare ca limbajele dynamically typed sunt prea des considerate magic bullets, ca apoi sa se ajunga la concluzia ca trebuie workarounds.

Hating over. :D

alescx a scris

deci nu vrei sa te obisnuiesti cu un ide pt ca….. nush de ce. n-am nici cea mai mica idee.
dar vrei sa adaptezi hungarian notation. care necestita mult mai mult efort, care-i mai greu de citi si pe care nu l-am mai vazut folosit in webdev dinainte de php5.

Ionuț Staicu a scris

@alescx: da, sunt perfect conștient că e o chestie irațională, dar sunt convins că și tu folosești anumite unelte (sau folosești un anumit flow) în ciuda faptului că ai putea găsi altele mai bune.

Omul e un animal mânat de obiceiuri și tabieturi și cu greu putem trece peste ele. Ar trebui să mă obișnuiesc cu shortcuts noi, cu plugins noi, cu funcționalități ușor diferite șamd. Momentan raportul efort/beneficii nu mi se pare justificat. Cel mai probabil nu am maturitatea profesională necesară pentru asta (s-a mai întâmplat și cu alte unelte, e.g. version control).

Alex a scris

Este o diferenta intre „weak typing” si „dynamic typing”. Python spre exemplu are dynamic typing, dar este si strong la tipurile de date (e.g. nu aduni ‘foo’ cu numarul 5).

Dar apropo de Hungarian notation, citisem mai demult o pledoarie cum ca el este folosit gresit. Nu conteaza tipul variabilei exprimat in termenii limbajului de programare (storage type), asta e stupid: poti sa-ti cam dai seama ce contine o variabila (int, float, string etc) doar citind codul — in special daca ai bunul simt sa tii functiile de dimensiuni rezonabile.

Ideea la notatia maghiara este sa reprezinti distinctii *semantice*. De exemplu: acest rezultat vine de la o functie externa care uneori da erori, deci pun prefix unsafe_result, pentru ca mai tirziu sa nu fiu bou si sa folosesc acel unsafe_result fara sa fac verificari aditionale asupra lui. Cam asta-i povestea.

Cu un usor google, am gasit si articolul explicativ: https://blogs.msdn.microsoft.com/ericlippert/2003/09/12/whats-up-with-hungarian-notation/

Adaugă un comentariurăspuns pentru

Link-urile în context sunt binevenite. Comentariile fără nume/email valid sunt șterse.
PS: Comentariul NU este editabil.

Acest sit folosește Akismet pentru a reduce spamul. Află cum sunt procesate datele comentariilor tale.

Site-ul blog.iamntz.com utilizează cookie-uri. Continuarea navigării presupune acceptarea lor. Mai multe informații.

windows apple dropbox facebook twitter