High-quality Microsoft technology samples for Professional Developers
Kódminták gyűjteménye Microsoft technológiákhoz
■ H | K | Sze | Cs | P | Szo | V |
---|---|---|---|---|---|---|
25 | 26 | 27 | 28 | 29 | 30 | 1 |
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 | 1 | 2 | 3 | 4 | 5 |
Látva azt, hogy mostanában
Kiváló példa a minőségre a Skype: a tipikus szoftver, ami minden verzióval csak rosszabb lesz.
Feltételezem, hogy a cégnél egységes minőségpolitika van, azaz minden szoftver fejlesztésénél vannak bizonyos követelmények. Ha a Skype-ból vagy a Windows-ból indulok ki, messze vannak attól, amit minőségnek lehet nevezni.
Ha ez neked annyira fáj,
De neki mindenhová le kell
Oké
Miért nem a hagyományos módon definiálnak belső változókat és metódusokat?
function obj() {
var beallitasok = {};
function beallitas(_tulajdonsag, _ertek) {
if (_ertek === undefined) {
beallitasok[_tulajdonsag] = _ertek;
}
return beallitasok[_tulajdonsag];
}
this.beallitas = beallitas;
}
var Obj = new obj;
obj.beallitas('tulajdonság', 'érték');
</script>
Vagy statikus tagoknál "Type members are often called »static« members, though in JavaScript they are not actually static.".
Ha nincsenek JS-ben statikus tagok, akkor miért nevezzük úgy őket? Ez félrevezető lehet sokak számára.
Miért használnak
.forEach
metódust, amikor egyrészt kevesebbet tud, mint egy hagyományosfor
ciklus (nincs benne abreak
-hez hasonló funkció), valamint akár tízszer lassabb hozzá képest?Kíváncsiságból utánaolvastam a WinJS.Class-ban pár dolognak. A Custom types and WinJS Class oldalon például a következőképp ad új tagot a Robothoz:
get: function () { this.computeModelName(); }
});
Ennek mi az előnye a következőhöz képest?
get: function () { this.computeModelName(); }
};
Vagy vegyük az oldal végén lévő örököltetést. Miben jobb az a következőnél?
this.name = _name;
}
SpaceRobot.prototype = new Robot();
SpaceRobot.prototype.constructor = SpaceRobot;
SpaceRobot.prototype.airSupply = '';
SpaceRobot.prototype.saveSelf = true;
Csak azért kérdem, mert a WinJS.Class.derive oldalán semmilyen információt nem lehet olvasni arról, milyen dolgokat művel a
derive
a kapott paraméterekkel. Aggat rájuk más metódusokat, tagokat? Ha igen, miért nincs leírva? Ha nem, miért használjuk egyáltalán?(Szerkesztve: közben utánaolvastam, hogy a
SpaceRobot.prototype = new Robot();
nem túl szerencsés, ha a konstruktornak vannak mellékhatásai.)Egy kódot néztem, mert nekem
Object.defineProperty(Robot.p
Az az előnye, hogy a
new Robot().modelName
automatikusan meghívja acomputeModelName
metódust, anélkül, hogy neked explicit meg kellene hívni. Ezen kívül a te általad javasolt, egy teljesen más objektum architektúrát eredményez, ahol amodelName
-nek van egyget
metódusa, míg aObject.defineProperty
amodelName
nem listázandó, nem módosítható stb.Így világos, köszönöm, és ez
Semmiben
Az ilyen property-k
Hogyan portolnád a kódot
Hogy kezdetben nem kell
Elsőre nem tűnik túl erős
Pedig az előző hozzászólásod
Az, hogy elfedi a komplexitást, egy ismert velejárója, ilyenkor az adott művelet komplexitása dokumentálható. Ez a bizonytalanság egyébként nyelvi szinten is ismert, a tömbhossz a klasszikus példája, ami általában tulajdonságként érhető el, de legalább egyszer minden programozó elgondolkodik rajta, hogy nem kellene-e tárolni a ciklus előtt.
A mass replace pedig még ha nem is vezet be hibát sehol, akkor is minden hívó újrafordítását eredményezi, míg ha változatlan marad az API, akkor elég az újralinkelés.
Az, hogy elfedi a
Minden függvény elfedi a
Nem, én a setter/getter
Ha nincsenek publikus adattagok, csak függvények, akkor van okod feltételezni, hogy más is történik. Ezért írtam, hogy a setter függvények nem intuitívak, ugyanis ránézésre egy külső adattag írásakor nem tudod megmondani, hogy fog-e egyéb függvény lefutni a háttérben.
Ezért írtam, hogy a setter
Ezt semmilyen függvény hívásakor nem tudod megmondani, miért pont a settereknél hiányolod?
$Objektum->tulajdonsag =
$Objektum->setTulajdonsag(5);
Amikor átnézed a kódot, az elsőnél azt várod, hogy az objektumnak csak a
tulajdonsag
adattagja fog változni, a második esetben viszont bármi történhet, azaz más állapot is megváltozhat. Ekkor nyilvánvaló, hogy asetTulajdonsag
metódusba is bele kell nézni hiba esetén.Az első sorra ránézve nem derül ki, hogy van mögötte setter, ezért írtam, hogy nem intuitív a használata.
Értem, amit mondasz, csak
Visszatekintve jobb lett volna, ha a nyelvek tervezői soha nem különböztetik meg az operátorokat az eljárásoktól, akkor nem zavarna meg az intuíciód.
Így viszont zavar
Best practice: kerülni kell a
A kényelemnek mindig ára van,