Diskuze: Má OOP vliv na chyby?

Tvůrce

Zobrazeno 26 zpráv z 26.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
Větší aplikace se v OOP programují. A když v tom dělají jen profíci, tak větší aplikace budou bez chyb, jelikož si na tohle dávají pozor.
Jakožto profesionál
tě můžu ujistit, že ani OOP, ani "profíci" v týmu, dokonce ani žádný
podobný další faktor, nemají absolutně žádný vliv na počet chyb v
kódu. To, že je aplikace bez chyb, souvisí jen a pouze s testováním. Čím
více testů a čím vyšší kvalita testů, tím nižší je
pravděpodobnost výskytu chyb. Neexistuje totiž aplikace,
která by byla bez chyb. Viz Murphyho zákon, který mám moc rád: "Počet chyb
v programu rovná se tronásobku počtu chyb objevených." Když se nad tím
zamyslíš, tak říká, že oprava libovolné chyby zavede do programu další
tři chyby.
Já neříkám, že takové programy jsou bez chyb. Říkám, že je menší pravděpodobnost, že tam nějaká chyb bude. Narozdíl od někoho, kdo programuje poprvé a tohle neřeší.
Ve skutečnosti jsi řekl přesně, "A když v tom dělají jen profíci, tak větší aplikace budou bez chyb, jelikož si na tohle dávají pozor." Nicméně chápu, co se teď snažíš říct a je to stejný omyl. Pravděpodobnost chyby v programu je úplně stejná u "profesionála" i u začátečníka. Stále platí, že jediný faktor, který má vliv na počet chyb, je testování.
Mluvím i o testování. Profíci vědí, co je potřeba pro vývoj, jak efektivně programovat, jak testovat. Neříkám profíci nedělají chyby, říkám, že je pravděpodobnější, že si to správně zkontrolují a opraví.
Profík by neměl mít potřebu kontrolovat se a opravovat. Jinak je to amatér. Profík si to rozmyslí dopředu.
Diskuze o OOP, bug a profesionálech byla přesunuta: http://www.itnetwork.cz/…3ff86e3c4125
Chceš tím říct, že profík si promyslí dopředu, jak bude program vypadat a pak to z fleku napíše všechno správně?
A já se ti snažím sundat ty růžové brýle, abys pochopil, že to tak není. Problém ale je, že si meleš svou a nejsi ochotný si pečlivě přečíst, co jsem ti napsal.
Důslednost, pečlivost, spolehlivost a osobní odpovědnost jsou důležité prvky profesionality, ale v reálném životě takových lidí najdeš velmi málo bez ohledu na profesi. O to smutnější fakt, že tohle jsou vlastnosti, nikoliv znalosti. Nedá se to naučit ani vytrénovat. Programátoři, kteří to nemají na začátku, to nebudou mít nikdy.
Profíci, které popisuješ (nebo si je alespoň takhle představuješ), mají většinou tendence, o kterých mluví 1Pupik1989 - jsou příliš dobří, než aby se kontrolovali a opravovali. A právě to je nejčastější příčina chyb. Skuteční profesionálové se neustále kontrolují a opravují, nechávají se kontrolovat ostatními, protože vědí, že pravděpodobnost, že udělali chybu, je naprosto stejná, jako když začínali.
Ale vy to nechápete. Já jen reagoval na toto :
"Pracovat se soubory umí v C# začátečník, v JavaScriptu jen profesionál
(nehledě na to, že to ani příliš nejde). programovat objektově umí v C#
taky relativně začátečník, ale v JavaScriptu jen profík."
To znamená, že bude méně nekvalitního kódu, když to neumí každý.
Ale musíme se tu určitě hádat, že ?
"To znamená, že bude méně nekvalitního kódu, když to neumí každý." - proč mám takový pocit, že realita je přesně opačná? Přece když to umí jen malé množství lidí tak zbytek potřebných míst zaberou lidi, kteří to pořádně neumějí, ne?
ta zamotaná diskuze o začátečnících, což se rozšířilo na OOP a kvalita kódu je zmatená proto že si nerozumíme kdo je to začátečník a kam se začátečník může dostat. každý jednou začínal, Coells, já, Madara, prostě všichni jsem jednou začínali a byli začátečníci. Neuměli jsem pracovat se soubory ani v C# ani JavaScriptu. Já jsem to že v C# se soubory zvládne pracovat začátečník a v javaScriptu profesional myslel tak, že zatímco v C# máme práci se soubory zahrnutou jak v knížkách pro začátečníky, tak v takřka všech sériích tutoriálů. Situace na straně JavaScriptu je úplně opačná. Práce se soubory je tak složitá a těžkopádná, že to nikdo nechce rozebírat - proto to v knížkách a tutoriálech je jednoduší vypustit, protože by to stejně cílová skupina (začátečníci) nepochopili.
I právě ten začátečník může dostat na úroveň a nejspíše dostane, kdy se sám naučí (třeba z nějakých hodně odborných článků) pracovat se soubory v JavaScriptu, jen to bude trvat mnohem déle než se to naučí programátor v C#.
Přesně tak. Já sice nejsem profík, ale dám si minimálně 2 kafe na přemýšlení a počmárám tak 3 papíry, než něco napíšu. Naplánuji strukturu celého objektu, jak co spolu bude fungovat, jak budou vypadat vstupy a výstupy. Pro běžného kodéra v Js asi k ničemu, jenže já to pak portuji do Javy, takže už musím mít navrhnutou strukturu a nejlépe jí už neměnit. Jsem na to zvyklý z C++ a nehodlám to měnit.
PS.: Na ovládání souborů v JS (co se týče čtení) jsem měl napsaný objekt asi za 15 minut. Včetně načítání binárních souborů ve starších IE. Ještě před třemi lety bych to jednou napsal (asi tak za měsíc), smazal a napsal to znovu.
Ty jsi ten profesionál, začátečník to píše zhruba 10× dýl, než to pochopí.
Není to nejčastější příčina chyb. Profíci na to mají testery. Nemají hledat problémy, to není jejich práce. To platí hlavně třeba u her. Posledních 5% trvá nejdéle a naseká se tam nejvíce chyb. Pak jdou na řadu testeři. S jejich pomocí se vychytá 80% chyb. Dalších 18% objeví uživatelé. Zbylé 2% většinou nikdo neobjeví, ale přeci tam jsou. Ať je to díra v zabezpečení, v GUI nebo v čemkoliv jiném.
Taky mám takové ty chvilky kdy bych do toho kopnul. Už se ale za ty roky celkem orientuji. Jen jsem si pro jednoho člověka ukousl trochu velké sousto. Přeci jen softwarový rendering, ještě navíc v javascriptu, není lehký. Nciméně jsem dokázal simulovat základní GLSL zápis vertex shaderu.
attribute vec3 aVertexPosition;
uniform mat4 uMVMatrix;
uniform mat4 uPMatrix;
uniform int val;
void main(void) {
gl_Position = uPMatrix * uMVMatrix * vec4(normalize(aVertexPosition),1);
}
Před dvěma lety jsem se rozhodl, že vytvořím knihovnu, která bude podporovat 3D ve všech prohlížečích. No a před měsícem, že bude mít kompletně stejný zápis ve všech prohlížečích. THREE.JS se už moc lišilo v zápisech pro různé podpory.
Teď už to vypadá, že se asi moc chvástám, ale opravdu jsem na to
pyšný. V Opeře 12.15
zatím běží 5000 trianglů při 45 fps v klasickém Canvasu (nikoliv WebGL).
Operu pokládám za jeden z nejpomalejších prohlížečů.
Chápu, že by se nad tím mělo před psaním kódu přemýšlet, dělat si diagramy apod., ale dá se tím předejít všem možným chybám? Např. něco je na papíře jasné, ale v kódu se pak zjistí, že přesně ten postup použít nelze, protože jazyk něco nepodporuje (nebo je nějaký jiný problém, co se technologie týče).
Důležitá je dokumentace, pokud to píšeš i pro jiné skriptaře nebo už si ve finále nepamatuješ co je jak a jaké argumenty tam přijdou. Pokud pak někdo pošle špatný argument do metody kam nepatří, tak to není chyba metody, nýbrž je debil. S tím se setkávám dnes a denně. Proto nesnáším lepiče kódů. Jak mě takový někde napíšu, tak ho odmítnu. Píšu veškerý kód bez vychytávání vyjímek, jinak bych se nejspíš roztrhnul a ten kód by měl místo 200kB asi tak 1MB.
Každý kloudný programátor ať s diagramem či bez si dokáže rozvrhnout co do jaké funkce půjde. Pokud má být vstup pole, tak tam přeci nebudu cpát objekt. Proto miluji funkce a objekty, na které uživatel vůbec nesahá. Jsou schované někde v closure a jen nadřazená metoda jim řekne, co mají dělat. Maximálně vrátí "false" a je vyřešeno. Vyvolávání chyb se snažím úplně vyhnout, strašně mě to rozčiluje. Pořád
if(!blabla){ throw new Error('Blábol'); }
Zbytečná věc.
Jak by si to řešil jinak? Procedurálním programováním? Jedna věc je psát objektově a druhá vědět co objektově píšeš. I začátek je tuhý, ale lepiči se ptají dokola. No a ti co nepochopili mou třetí věti, jsou lemplové nebo lepiči. Na obojí mám alergii. Nesnáším, když někdo něci dělá a neumí ani zàkladx.
kazdy jeden z nas, ci uz zaciatocnik, pokrocily, alebo profesional robi chyby v kode, casto su tie chyby aj z nepozornosti (profesional nemusi vediet vychytat vsetky chyby) a cim je projekt zlozitejsie, tym je v nom viac a viach chyb a nesuvisi to od toho, ci je ten programator zaciatocnik, alebo profik, ale zalezi to priamoumerne od zlozitosti danej aplikacie...
a raz som si v jednej knizke precital vetu: "Aplikacie maju chyby, budu mat chyby"...
Už jsem několikrát psal, že tím myslím, že profíci mají tendenci si to kontrolvat a opravovat, nepsal jsem, že profíci nedělají chyby !!
myslis, ze zaciatocnici si taktiez svoje vytvory netestuju? testuju, aj ked nie je v ich moci pisat kvalitne testy na aplikaciu...
a okrem toho aka je hranica medzi zaciatocnikom a profikom?
Já jen reagoval na Misaze, který psal, že OOP JS zvládají jen profíkové.
Zobrazeno 26 zpráv z 26.