Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Merita achizitionat DFSK Fengon 5...

Pret actual invelitoare

Probleme baterie Samsung A54

Schema statie auto Renegade REN 1...
 Magazine IT de incredere

Parere SKODA Octavia 3 2.0TDI 150CP

Achizitie telefon 1000-1200lei

Unde gasesc o lampa buna pe gaz?
 Consulta specialiștii... Und...

Fostul director al Frontex: Comis...

Construire anexa lipita de casa

Ce folositi pentru urina mirosito...
 Socializare in prezenta copiilor

Cont Samsung A32

Hotarare definitiva a instantei, ...

Laptop office 2500 lei
 

Progamare profesionala in JS la marile companii

- - - - -
  • Please log in to reply
28 replies to this topic

#1
PlatonX

PlatonX

    Senior Member

  • Grup: Senior Members
  • Posts: 5,726
  • Înscris: 13.09.2009
Intreb aici poate exista programatori care lucreaza la companii de programare mari cu sute de angajati sau poate au lucrat pentru aceste companii.

Cand vorbim de Apple, Microsoft, Orange chiar si pentru acest site - Softpedia, ma astept ca progamatorii in JS sa fie oameni cu experienta si prin urmare codul sa fie profesional, fac diferenta intre modul in care scrie cod un programator cu incepator cu unul cu 5-10 ani de experienta.
  • De ce numele variabilelor nu este sugestiv ?

  • Mi se pare mie sau este greu de inteles ce face scriptul pentru un programator nou ?

  • Nu ar trebui sa fie totul orientat pe obiect ? Pentru ca se folosesc doar functii - stiu ca in JS functiile sunt obiecte dar de ce nu se folosesc declaratii de obiecte scrise sub forma de JSON ?
    	var numeObiect = {
    		 proprietate1: valoare,
    		 proprietate2: valoare,
    		 Metoda: () => { /*cod metoda*/ }
    	}
    	
    

    In schimb este assa:
    	function n() {
    		 let e = new Proxy(new URLSearchParams(window.location.search),{
    			 get: (e,t)=>e.get(t)
    		 });
    		 var t = {
    			 utm_campaign: e.utm_campaign,
    			 utm_source: e.utm_source,
    			 utm_medium: e.utm_medium
    		 }
    			 , n = a("utmz-global");
    	}
    	
    

    Numele variabilelor si functiilor nu este sugestiv - se noteaza cu litere: functia n, variabila t.
    Variable Naming Best Practices for Clean and Efficient Code:

    Use descriptive and meaningful names. ...
    Keep it short but not too short. ...
    Use camelCase or snake_case. ...
    Avoid using single letters. ...
    Avoid using special characters or spaces. ...
    Avoid using keywords. ...
    Be consistent in naming conventions across the entire project.
    https://javascript.p...de-f5eaaad4f591


    When naming a function, variable or class, you should keep the following things in mind: Choose a word with meaning (provide some context) Avoid generic names (like tmp) Attach additional information to a name (use suffix or prefix)
    https://medium.com/s...es-e962a4ef335b

    Asta inseamna programare profesionista? Intreb pentru ca mie imi este greu sa decifrez ca fac aceste scripturi.

    Asa arata un cod profesinist de Javascript ca in aceste imagini?

Attached Files


Edited by PlatonX, 09 July 2023 - 10:34.


#2
victor29cr

victor29cr

    Senior Member

  • Grup: Senior Members
  • Posts: 2,438
  • Înscris: 04.06.2016
Sunt functii anonime, nu necesita ceea ce tu ceri.

In plus, se intelege codul perfect. Nici macar nu lucrez in JS si tot il inteleg.

Ai impresia gresita despre faptul ca daca lucrezi la o multinationala, lucrurile sunt mai stricte.
In realitate, sunt mai lejere, caci este foarte dificil sa verifici fiecare om si fiecare linie de cod scrisa de el.

Mai este un aspect cand vine vorba de JS si cod incarcat in pagina. Trebuie sa fie cat mai mic posibil.
var c ocupa mult mai putin spatiu decat var mySuperConstructor

+ mai mereu exista documentatii in spate scrise pt acele functii, mai ales daca sunt importante.

#3
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,137
  • Înscris: 24.02.2007
Fiindca codul ce-l vezi nu e codul scris de programatori. A fost procesat pentru a-i reduce dimensiunile si a-l face mai greu de furat.

https://www.cloudfla...avascript-code/

#4
TamtamTicaticaPiupiu

TamtamTicaticaPiupiu

    Senior Member

  • Grup: Senior Members
  • Posts: 2,479
  • Înscris: 05.04.2023
Omiti o mare prostie a unora, indiferent de limbajul folosit, lipsa comentariilor

// ce avem noi aici


Desi folosesti denumiri sugestive, e destul de greu sa revii dupa o perioada de timp asupra unui cod si sa deslusesti ceea ai incercat sa faci.
Plus ca si colaborarile sunt ingreunate fara comentariile de rigoare, cei care lucreaza cu acel cod isi vor prinde urechile sau o vor lua repede prin porumb dand cu presupusul in mod gresit.

#5
robert23mg

robert23mg

    Member

  • Grup: Members
  • Posts: 498
  • Înscris: 18.06.2017
Problema ta pe care vrei sa o rezolvi fiind care?

Codul este scris dupa niste standarde pe care si le seteaza intern fiecare companie.
Cu siguranta au proiectul organizat in multiple fisiere, cu nume relevante, si la variabile la fel.
In productie la profesionisti, codul este uratit (uglify) si minimizat si unit intr-un singur fisier de obicei, depinde.
Amatorii isi urca codul direct asa cum este el

Sa dam un exemplu.
Programatorii lucreaza pe cod de forma

function adunareTreiNumere(numar1, numar2, numar3){
  return numar1 + numar2 + numar3;
}

Iar in productie, adica ce vezi tu, ajunge
function a(b,c,d) { return b+c+d }

Cand inspectezi codul si vezi ceva ce seamana cu ultima parte, ai dat de un profesionist, cand inspectezi si vezi prima parte, e mana de amator.

#6
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,137
  • Înscris: 24.02.2007
Exemple de cod scris la marile corporatii lideri in domeniu (nu outsourcing SRL): https://github.com/angular/angular https://github.com/facebook/react

Edited by dani.user, 09 July 2023 - 11:17.


#7
TamtamTicaticaPiupiu

TamtamTicaticaPiupiu

    Senior Member

  • Grup: Senior Members
  • Posts: 2,479
  • Înscris: 05.04.2023

View Postrobert23mg, on 09 iulie 2023 - 11:16, said:

function a(b,c,d) { return b+c+d }

Cand inspectezi codul si vezi ceva ce seamana cu ultima parte, ai dat de un profesionist

Sau de o rutina de optimizare :D Nu faci debugging pe ce a intrat in productie, ci pe ce ajunge la stadiul de conformitate.

#8
PlatonX

PlatonX

    Senior Member

  • Grup: Senior Members
  • Posts: 5,726
  • Înscris: 13.09.2009

View Postdani.user, on 09 iulie 2023 - 11:16, said:

Exemple de cod scris la marile corporatii lideri in domeniu (nu outsourcing SRL): https://github.com/angular/angular https://github.com/facebook/react

Exemplul acesta este cum am spus eu la inceput ca ar trebui sa fie, in contarst cu ce am dat eu la inceput din Orange, Apple si Microsoft.

function getComments(path) {
const allComments = path.hub.file.ast.comments;
if (path.node.leadingComments) {
// Babel AST includes comments.
return path.node.leadingComments;
}
// In Hermes AST we need to find the comments by range.
const comments = [];
let line = path.node.loc.start.line;
let i = allComments.length - 1;
while (i >= 0 && allComments[i].loc.end.line >= line) {
i--;
}
while (i >= 0 && allComments[i].loc.end.line === line - 1) {
line = allComments[i].loc.start.line;
comments.unshift(allComments[i]);
i--;
}
return comments;
}
module.exports = getComments;


'use strict';
const {esNextPaths} = require('./scripts/shared/pathsByLanguageVersion');
module.exports = {
bracketSpacing: false,
singleQuote: true,
jsxBracketSameLine: true,
trailingComma: 'es5',
printWidth: 80,
parser: 'flow',
arrowParens: 'avoid',
overrides: [
{
	 files: esNextPaths,
	 options: {
	 trailingComma: 'all',
	 },
},
],
};


Organizat fumos pe obiecte declarate ca JSON, nume la functie getComments, cu verb in numele functiei, nume sugestiv la variabile.

Deci nu inteleg pana la urma daca acesta este un exemplu pe care il dai de urmat sau nu, avand in vedere contrastul cu exemplele mele de la inceput.

View Postdani.user, on 09 iulie 2023 - 10:54, said:

Fiindca codul ce-l vezi nu e codul scris de programatori. A fost procesat pentru a-i reduce dimensiunile si a-l face mai greu de furat.

https://www.cloudfla...avascript-code/
De ce ai avea functii in functii?
!function() {
return function t(e, i, n) {
function r(s, a){}
}
}

De ce ai avea declaratie de var in interiorul unei functii ?
Avand in vedere ca var este accesibil din exterior de ce sa il declari in functie ?

View Postvictor29cr, on 09 iulie 2023 - 10:44, said:

Sunt functii anonime, nu necesita ceea ce tu ceri.
Daca este un proiect mare, va fi foarte greu de inteles cum se influentiaza intre ele aplelarea acestor functii daca nu au nume sugestive si daca nu sunt parte din obiecte. Cu cat creste in complexitate cu atat va fi mai greu de modificat un proiect daca nu este doar procedural.

View Postvictor29cr, on 09 iulie 2023 - 10:44, said:

In plus, se intelege codul perfect. Nici macar nu lucrez in JS si tot il inteleg.

Ce inseamna asta:
var c = "function" typeof requre && require;

Sincer, eu nu inteleg.

Edited by PlatonX, 09 July 2023 - 11:48.


#9
krtyna

krtyna

    Member

  • Grup: Members
  • Posts: 547
  • Înscris: 07.04.2021
Este cod transpilat din ts in js, de aceea arata asa, apoi,minificat,obfuscat etc.
Codul sursa original in ts nu il vezi decat daca iti da cineva acces la el.
Eu lucrez pentru o companie mare ca si consultant (zeci de mii de angajati) si te asigur ca peste 90% din programatori scriu cod cu picioarele si nu au pus comentarii in cod in viata lor. Conventiile se respecta de obicei orbeste si daca ai norocul sa ai unul bun in echipa ceilalti respecta conventiile impuse de el.
De obicei codul bun este in open-source,daca vrei sa vezi cum ar trebui sa programezi in js,uita-te la cateva proiecte mari open-source

#10
sftpdt

sftpdt

    Senior Member

  • Grup: Senior Members
  • Posts: 3,630
  • Înscris: 29.08.2013

View PostPlatonX, on 09 iulie 2023 - 11:45, said:

Ce inseamna asta:
var c = "function" typeof requre && require;

Sincer, eu nu inteleg.

Probabil era
var c = "function" == typeof require && require;

Care face mai mult sens Posted Image (diff).

Edited by sftpdt, 09 July 2023 - 11:56.


#11
krtyna

krtyna

    Member

  • Grup: Members
  • Posts: 547
  • Înscris: 07.04.2021

View PostPlatonX, on 09 iulie 2023 - 11:45, said:

Ce inseamna asta:
var c = "function" typeof requre && require;

Sincer, eu nu inteleg.

este var c= typeof require == "function" && require, si inseamna ca daca require este functie il atribui la c. Dar e cod auto-generat,nu iti fa griji. Nimeni nu scrie asa ceva.Vezi proiecte open-source care au codul sursa la vedere si poti invata din el, nu te uita la cod transpilat din codul sursa ascus de pe la diferite companii care si daca ar fi la vedere ar fi inutil ca aia oricum sunt praf la programare.

#12
PlatonX

PlatonX

    Senior Member

  • Grup: Senior Members
  • Posts: 5,726
  • Înscris: 13.09.2009

View Postsftpdt, on 09 iulie 2023 - 11:56, said:

Probabil era
var c = "function" == typeof require && require;

Care face mai mult sens Posted Image (diff).

Si ce inseamna asta ?
var c = "function" == typeof require && require;


Nu exista if, nu exista paranteze, de ce de doua ori require ?
Eu nu am mai intalnit sintaxa asta.

View Postkrtyna, on 09 iulie 2023 - 11:51, said:

Codul sursa original in ts nu il vezi decat daca iti da cineva acces la el.
Browserele stiu sa ruleze cod TypeScript.

Edited by PlatonX, 09 July 2023 - 12:03.


#13
TamtamTicaticaPiupiu

TamtamTicaticaPiupiu

    Senior Member

  • Grup: Senior Members
  • Posts: 2,479
  • Înscris: 05.04.2023

View PostPlatonX, on 09 iulie 2023 - 11:45, said:

De ce ai avea declaratie de var in interiorul unei functii ?
Avand in vedere ca var este accesibil din exterior de ce sa il declari in functie ?

Singleton?

#14
krtyna

krtyna

    Member

  • Grup: Members
  • Posts: 547
  • Înscris: 07.04.2021
nu e nici o singleton. e pui si simplu o declaratie de variabila. la cod transpilat se foloseste js cat mai vechi ptr compatibilitate,de aceea vezi var in loc de let,const..
var a = c && b, este echivalent cu if© a = b;
in js nou se poate scrie mai strict a = c ?? b;

#15
sftpdt

sftpdt

    Senior Member

  • Grup: Senior Members
  • Posts: 3,630
  • Înscris: 29.08.2013

View PostPlatonX, on 09 iulie 2023 - 11:59, said:

Nu exista if, nu exista paranteze, de ce de doua ori require ?
Eu nu am mai intalnit sintaxa asta.

Pentru ca ... Javascript Posted Image. Nu-i tocmai cel mai usor limbaj cu care sa lucrezi.

https://mariusschulz...s-in-javascript

Quote

Using Logical Operators with Non-Boolean Values
  • A && B returns the value A if A can be coerced into false; otherwise, it returns B.
  • A || B returns the value A if A can be coerced into true; otherwise, it returns B.

Edited by sftpdt, 09 July 2023 - 12:09.


#16
PlatonX

PlatonX

    Senior Member

  • Grup: Senior Members
  • Posts: 5,726
  • Înscris: 13.09.2009

View Postrobert23mg, on 09 iulie 2023 - 11:16, said:

Problema ta pe care vrei sa o rezolvi fiind care?

Eu inteleg ca exista best practices in progamare si nu le vad in acele exemple de la inceput.
Inteleg ca un cod profesionist este simplu si clar dar ce am gasit eu este greu de descifrat.

Credeam ca un programator profesionist scrie un cod pe care un alt programator il va intelege usor si repede.

#17
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,137
  • Înscris: 24.02.2007
Inca n-ai inteles ca acel cod pe care il dai exemplu nu e scris de un programator? Posted Image

#18
MarianG

MarianG

    be that as it may

  • Grup: Moderators
  • Posts: 31,320
  • Înscris: 10.08.2005

View PostPlatonX, on 09 iulie 2023 - 12:43, said:

Eu inteleg ca exista best practices in progamare si nu le vad in acele exemple de la inceput.
Inteleg ca un cod profesionist este simplu si clar dar ce am gasit eu este greu de descifrat.
Credeam ca un programator profesionist scrie un cod pe care un alt programator il va intelege usor si repede.
strict pe cod, tie chiar iti place acel if intre doua declarari de constante ?
const allComments = path.hub.file.ast.comments;
if (path.node.leadingComments) {
// Babel AST includes comments.
return path.node.leadingComments;
}
// In Hermes AST we need to find the comments by range.
const comments = [];


Anunturi

Bun venit pe Forumul Softpedia!

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate