- Kiemelkedően csendes ASUS VGA jött a Noctua közreműködésével
- Mini kijelzős SSD-hűtő a Thermalright névjegyével
- Windows: mi történik valójában Leállításkor, Alvó módban és Újraindításkor?
- Gyenge Wi-Fi otthon? – a leggyakoribb hibák és megoldások
- Korábbi vezetője szerint 40 milliárd dollár kell az Intel versenyképességéhez
- Milyen asztali (teljes vagy fél-) gépet vegyek?
- Fujifilm X
- AMD Ryzen 9 / 7 / 5 9***(X) "Zen 5" (AM5)
- Vezeték nélküli fülhallgatók
- Milyen belső merevlemezt vegyek?
- Home server / házi szerver építése
- NVIDIA GeForce RTX 5080 / 5090 (GB203 / 202)
- 3DMark (2013) eredmények
- Mini-ITX
- Házimozi belépő szinten
Hirdetés
-
PROHARDVER!
JavaScript != Java (A JavaScript nem összekeverendő a Javával, két különböző programozási nyelvről van szó!)
Új hozzászólás Aktív témák
-
Jim-Y
veterán
Szia.
Sajnos még mindig nem értek a canvas-hoz, így megint csak a kódodról fogok beszélni.
> Remélem, nem "csúnya" nagyon a kódom.
Nem fogok kertelni, szerintem nem fogod magadra venni, nem is azért írom, de... igen az, sajnos elég csúnya
Na persze ez nem gond! Tényleg nem. Egyrészt mert mindenki kezdi valahol, másrészt meg az látszik, hogy más múltad van. Szépen nem így irunk JavaScript kódot.Ezekkel van probléma benne:
var betolt = function(i,b,a)
{
imageObj[i].onload = function ()
{
ctx.drawImage(imageObj[i], b, 0, d, a);
};
};i, b, a -> ezek a formális változónevek egész egyszerűen rosszak, sosem adunk egybetűs váltzóneveket!
Nem tudni, hogy mit jelölnek. i az vajon index, a b meg a, na erre még tippe sincs az embernek. Nincs overhead akkor sem, ha 1 betű helyett 20 hosszú változó neveket használsz, cserébe értelmes lesz a kód. Ennek azért van jelentősége, mert
1: egy cégnél nem csak te fogod a kódodat olvasni, hanem előbb utóbb más is. És kontextus nélkül ezek a nevek konkrétan hátráltatják más munkáját, az idő pénz, tehát az ilyen nevek használatával pénz deficit keletkezik (lol). Komolyra fordítva a szót, tényleg más is akarja még olvasni a kódod, ne adj isten módosítani, olyankor jól jön ha "self-descriptive" a kódod.
2: JS-ben gyakran végzünk minifikálást, ami az egyik állomása a buildelésnek, így nem kell figyelni arra, hogy minél tömörebb legyen a kód, a végtermék úgyis tömör lesz.
Példa: még ennél a minimalista példánál is látszik, bár mondanom sem kell, hogy értelmesebb kódnál jobban kijön a minifikálás "előnye"Before (tordeltem):
var myOwnImageObject = [];
function imageLoading(indexVar, someOtherVarWhichHasADescriptiveName, anotherFormalParam) {
myOwnImageObject[indexVar].onload = function() {
context.drawImage(
myOwnImageObject[indexVar],
someOtherVarWhichHasADescriptiveName,
0,
wut,
anotherFormalParam
);
};
}After:
function imageLoading(n,a,e){myOwnImageObject[n].onload=function(){context.drawImage(myOwnImageObject[n],a,0,wut,e)}}var myOwnImageObject=[];Tehát nincs igazán érv az egybetűs változónevek mellett.
3:
Nem túl jó kódod stílusa. Gondolom C++-ból jöttél át, legalábbis én úgy tudom, hogy ott szoktak K&R style -t használni. Ez az automatikus pontosvessző , áhh inkább írom angolul úgyis úgy tudsz rákeresni: automatic semicolon insertion miatt nem ajánlott így kódolni JavaScriptben. Nagyon sok verzió létezik, én leginkább az airbnb-hez tartom magam. Számomra ez eredményezi a leginkább olvasható, karbantartható kódot. Tehát ha az airbnb szerint írjuk a kódodat, akkor valahogy így nézne ki (ha én írnám akkor is):var c = document.getElementById("myCanvas"),
ctx = c.getContext("2d"),
files = document.getElementById("files-upload").files,
imageObj = [],
a = (1920 - (files.length - 1)) / (files.length);
function betolt(i, b, a) {
imageObj[i].onload = function() {
ctx.drawImage(imageObj[i], b, 0, d, a);
};
}
for (var i = 0, len = files.length; i < len; ++i) {
b = (a + 1) * i;
imageObj[i] = new Image();
imageObj[i].src = "útvonal" + files[i].name;
betolt(i, b, a);
}4:
Az a változót tudatosan, vagy sem, de globális scope-ba helyezted, ez rossz szokás, abszolút kerülendő.5:
ez inkább jó tanács: JSHint vagy egyéb linter toolok használata javallott. Szinte minden Editorhoz, IDE-hez létezik már plugin.Üdv
Új hozzászólás Aktív témák
- Luck Dragon: Asszociációs játék. :)
- Elektromos autók - motorok
- Tesla topik
- Kertészet, mezőgazdaság topik
- Hat év támogatást csomagolt fém házba a OnePlus Nord 4
- Huawei Mate 10 Pro - mestersége az intelligencia
- Elektromos rásegítésű kerékpárok
- Autós topik
- Samsung Galaxy S22 és S22+ - a kis vagány meg a bátyja
- Google Pixel topik
- További aktív témák...
- BESZÁMÍTÁS! MSI B550M R7 5700X 32GB DDR4 1TB SSD RTX 4070 12GB NZXT H710I Be Quiet 650W
- BESZÁMÍTÁS! MSI B450M R3 3100 16GB DDR4 120GB SSD 1TB HDD GTX 1050 Ti 4GB ZALMAN S2 TG Chieftec 500W
- Új HP VICTUS Gamer Tervező Laptop 15,6" -30% Bivaly i5-12500H 12Mag 16/512 RTX 4050 6GB FHD 144Hz
- BESZÁMÍTÁS! MSI B450M-A R7 2700X 16GB DDR4 512GB SSD GTX 1070 8GB Cooler Master MasterBox Lite5 500W
- BESZÁMÍTÁS! ASROCK B550M R5 5600X 32GB DDR4 1TB SSD RTX 3060 12GB Zalman N5 MF Be Quiet 650W
- Xiaomi Redmi Note 9 Pro 64GB, Kártyafüggetlen, 1 Év Garanciáva
- Legion Pro 7 RTX 4090-es laptop 999.000Ft-ért, HP, DELL, Lenovo dokkolók 12.300Ft-tól
- Windows, Office licencek kedvező áron, egyenesen a Microsoft-tól - Automata kézbesítés utalással is!
- Bomba ár! Dell Latitude E5550 - i3-5GEN I 8GB I 128GB SSD I 15,6" HD I W10 I HDMI I Cam I Gari!
- iPhone 13 mini 128GB Green -1 ÉV GARANCIA - Kártyafüggetlen, MS3088
Állásajánlatok
Cég: FOTC
Város: Budapest