Google Chrome 126 byl prohlášen za stabilní. Nejnovější stabilní verze 126.0.6478.55 přináší řadu oprav a vylepšení (YouTube). Podrobný přehled v poznámkách k vydání. Opraveno bylo 21 bezpečnostních chyb. Vylepšeny byly také nástroje pro vývojáře.
Byl vydán Mozilla Firefox 127.0. Přehled novinek v poznámkách k vydání, poznámkách k vydání pro firmy a na stránce věnované vývojářům. Řešeny jsou rovněž bezpečnostní chyby. Nový Firefox 127 je již k dispozici také na Flathubu a Snapcraftu.
Byla vydána (𝕏) nová verze 9.5 z Debianu vycházející linuxové distribuce DietPi pro (nejenom) jednodeskové počítače. Přehled novinek v poznámkách k vydání.
Společnost Raspberry Pi dnes vstoupila na Londýnskou burzu jako Raspberry Pi Holdings plc (investor).
Do 17. června do 19:00 běží na Steamu přehlídka nadcházejících her Festival Steam Next | červen 2024 doplněná demoverzemi, přenosy a dalšími aktivitami. Demoverze lze hrát zdarma.
Apple na své vývojářské konferenci WWDC24 (Worldwide Developers Conference, keynote) představil řadu novinek: svou umělou inteligenci pojmenovanou jednoduše Apple Intelligence, iOS 18, visionOS 2, macOS Sequoia, iPadOS 18, watchOS 11, …
Vyšla nová verze XMPP (Jabber) klienta Gajim, která přidává podporu reakcí pomocí emoji (XEP-0444: Message Reactions) a citace zpráv (XEP-0461: Message Replies). Přehled dalších vylepšení je k dispozici na oficiálních stránkách.
Po po téměř roce vývoje od vydání verze 5.38 byla vydána nová stabilní verze 5.40 programovacího jazyka Perl (Wikipedie). Do vývoje se zapojilo 75 vývojářů. Změněno bylo přibližně 160 tisíc řádků v 1 500 souborech. Přehled novinek a změn v podrobném seznamu.
Uroš Popović popisuje, jak si nastavit Linux na desce jako Raspberry Pi Zero, aby je šlo používat jako USB „flešku“.
Andreas Kling oznámil, že jelikož už se nevěnuje nezávislému operačnímu systému SerenityOS, ale výhradně jeho webovému prohlížeči Ladybird, přičemž vyvíjí primárně na Linuxu, SerenityOS opustí a Ladybird bude nově samostatný projekt (nový web, repozitář na GitHubu).
for ($ii=0;$ii<10;$ii++) { /* nejaka cinnost */ }Prochazeni pole
while ($cc=each($nejake_pole)) { /* nejaka cinnost s $cc["key"] a/nebo $cc["value"] */ }Vysledky a vybery z databaze
$q="nejaka query"; if ($ares=mysql_query($q)) while ($arow=mysql_fetch_assoc($ares)) { /* nejaka cinnost s polem $arow */ }Zazita sablona pro funkce
function DruhFunkce_NazevFunkce(...) { $ret=false; /* pokud jsou parametry OK, pak cinnost jejimz vysledkem je prepsani $ret; */ return $ret; }Jak je to u vas? Mate nejake takove zazite zvyky? :)
Tiskni Sdílej:
$sql_chocolates = "SELECT cacao, nameOfChocolate, isDia FROM chocolates WHERE cacao>70"; $data_chocolates = mysql_query($sql_chocolates); if (mysql_num_rows($data_chocolates)) { while ($chocolates = mysql_fetch_array($data_chocolates)) { echo "Name of chocolate is ".$chocolates['nameOfChocolate']." and contains ".$chocolates['cacao']." % of cacao. And it is ".getNotIfNot($chocolates['isDia'])." good for diabetics."; } };) ;) Je to trošku vykonstruovaný příklad, tak se omlouvám za funci getNotIfNot, ale ... řekněme, že vrací string "not", pokud je parametrem false ;)
Nechtěl bych teda po vás ten kód číst.
proto nevim, proc bych na ne mel menit nazorNo snad protože jsem to řekl já, ne?
Moje_Funkce() MojeFunkce() mojeFunkce()ale vzdy a v kteremkoli jazyce (uz jen C, BASH, ojedinele PHP) pouzivam zapis
moje_funkce()a nevidim jedinou vyhodu u tech prvnich trech.
kdo odsazuje mezerami, je hovado...
Já si zase nemyslím nic lichotivého o člověku, pro něhož je to, že někdo preferuje jiný coding style než on, důvodem k nadávkám…
kdo odsazuje mezerami, je hovado...Odsazuj si čím chceš. Já třeba taky odsazuji tabulátorem. Akorát, že místo \t se vloží mezery Je celkem jedno jestli tabulátor nebo mezera. Nejhorší je zdroják, kde to programátor kombinuje dle nálady. U něj to vypadá OK, ale když si to otevře někdo, kdo má nastavený tabulátor na jiný počet míst, tak je z toho pěkný guláš
U forcyklů: i,j,k,l (jiný zvyk to komplikuje ostatných pro čtení), ii je fakt nepřehledné a jednoduše se přehlídne.
U foreach cyků: $result as $key => $value
U mysql dotazů $query, $result, $row
Zkracování vede jen ke zmenšení přehlednosti, sice se argumentuje leností, ale když umíte psát všemi deseti tak ta expresivita názvu opravdu převáží.
E.g. nerad bych s vámi na nějakých kódech. Do
Zkracování vede jen ke zmenšení přehlednosti, sice se argumentuje leností, ale když umíte psát všemi deseti tak ta expresivita názvu opravdu převáží.
To se nedá takhle generalizovat. Když půjdu do extrému, opravdu si nemyslím, že označení řídící proměnné cyklu outermost_cycle_counter
místo i
nějak přispěje přehlednosti programu. A i jinak jsou pro mne příliš dlouhá jména proměnných (víc než nějakých 10 znaků) většinou spíš otravná, a to i když je nemusím psát, ale jen číst. Navíc to zvyšuje riziko nutnosti zalomit řádek a tím zdroják dále znepřehlednit.
opravdu si nemyslím, že označení řídící proměnné cykluA co teprv, když člověk zjistí, že to outermost není outermost, ale potřebuju přidat ještě jeden vnější cyklus, nebo naopak zjistím, že vnější cyklus nepotřebuju atd.outermost_cycle_counter
místoi
nějak
$name
a $salary
. Pri obyčajnom for-cykle samozrejme premenné i, j, k, l.
Znovupoužívanie generických konštrukcií sa častokrát nevyplatí - či už môže dôjsť k chybe pri recyklovaní premenných, zlému skopírovaniu pri copy&paste (napríklad iterujem od 1 po n, kde by som mal od 0 po n-1) alebo rôznych iných.
Samozrejme netreba šetriť na názvoch funkcií/metód a skutočne popísať čo robia! Nie je nič horšie ako keď sa pozeráte na signatúru int doMagic(bool x, int bbz, int* pols)
. Z tohto zápisu nie je vôbec jasné, čo by to malo robiť.
Mojím pravidlom je snaha písať všetky názvy premenných, metód, tried, atď. anglicky. Tak ako ja neviem čo znamená premenná $koleTapja
, tak niekto nemusí vedieť, čo robí funkcia upecHovno(bool sAlobalom)
.
boolean hodnotaPodleKtereSeRozhoduji = …; Trida o = …; … if (hodnotaPodleKtereSeRozhoduji) { o.setAbcdTrue(); } else { o.setAbcdFalse(); }místo:
boolean hodnotaPodleKtereSeRozhoduji = …; Trida o = …; … o.setAbcd(hodnotaPodleKtereSeRozhoduji);?
V onech 97% kodu programu je totiz vykon uplne irelevantni (resp. je jedno, jestli zabere 10 nebo 1000 instrukci).Jo, zvláště když takový program 90% svého času nedělá nic jiného než jen furt něco volá (zrovna přiřazování asi bude dost frekventovaná akce a to vůbec nehledím na možnost, že může být v cyklu). A navíc se to musí fakt luxusně debugovat. V jakém duševní stavu musí člověk být aby implementoval přiřazování do proměnné voláním, to fakt nechápu.
Nehlede na to, ze kvuli setteru se stackframe velmi pravdepodobne budovat nebudePokud je to makro, tak ne. Pokud je to standardní volání implementované instrukcí call (a ne jmp) tak jo.
Pokud je to makro, tak ne. Pokud je to standardní volání implementované instrukcí call (a ne jmp) tak jo.
Java HotSpot strašně rád inlinuje. Takže to ve výsledku není ani call, ani jmp ale prosté přiřazení. Ve strojáku ze všech těch geterů a seterů nakonec zůstane jen práce s registrem (případně adresou).
c = a + b
c = add(a,b). V mém případě to tipuju buď na nějakou mentální degenerativní poruchu nebo malou hladinu alkoholu v krvi.
Já zas především nechápu na co kvůli jednomu blbému přiřazení (jedna instrukce) budovat celý další stackframe.1) "Celý další stackframe" není nic tak hroznýho.
this
.
setAbcdTrue()
bude volat setAbcd(true)
.
A reknes proc? Proc by mela metoda (napr.) setVisible() okno zobrazovat i schovavat?Nic takového jsem neřekl.
setVisibleTrue()
a setVisibleFalse()
.
Protoze metoda by mela delat jednu vecAle vždyť to ta metoda dělá jednu věc - nastavuje viditelnost okna. To, že vevnitř to řeší tak a tak je navenek jedno.
Myslim, ze je docela zrejme, ze implementace skryti a zobrazeni okna budou pravdepodobne dost odlisne ...Proč by měly být (výrazně) odlišný? Windows manager taky pravděpodobně udržuje u každého okna všelijaký informace včetně
boolean visible
.
Enum
– stav, na který se má změnit.
function chytraFunkce($prepinac) { if($prepinac == true) { ... ... spousta kodu ... ... } else { ... ... spousta kodu ... ... } }
V takovém případě více méně* souhlas, jenže ono to často vypadá takhle:
function chytraFunkce($prepinac) { ... ... spousta kodu ... ... if($prepinac == true) { …trochu kódu… } else { …trochu kódu… } ... ... spousta kodu ... ... }
nebo tam dokonce ani ten vnitřní if (…)
není a jednoduše předáváš ten $přepínač
někam dál.
Pokud je v ifu jenom část metody, nešlo by upravit životní cyklus objektu, vyčlenit společné části a rozdílnost fáze v podmínce řešit polymorfismem?
setVisible()
může nastavit vnitřní proměnnou a zavolat update()
a tam (ne)musí být if potřeba podle vlastností backendu. Zkrátka ten if by měl (imho) být co možná nejníž.
java.awt.Component.setVisible(boolean)
než show()
a hide()
.
arrayItem1
, arrayItem2
a arrayItem3
, ... :)
iteration1
, iteration2
... iteration44563
. Bude to pak přehlednější a lépe se to bude refaktorovat. :))
new ImplementationA()
a nahrazovat za new ImplementationB()
? A co mockování (např připojení k databázi) v testech? Nebylo by lepší vytvářet instance na jednom místě? Třeba v IoC kontejneru nebo ServiceLocatoru?"int i,j,k;
.
if
, while
a Auto extends DopravniProstredek
dočteš hnedka z kraje. Názory, které tu prezentuju jsou (bohužel) spíš taková avantgarda, o výuce programování ve školách radši nemluvě.
Právě tak jsem se to snažil podat - je užitečné mít reflex "když vidím public atribut, tak to se mnou škubne a zamyslim se" reflex "když vidím public atribut, změním ho na private a dopíšu setter/getter" je k ničemu.
Upřímně řečeno lepší by to bylo naopak. Atributy psát vždy jako private a k nim (třeba automatické, triviální) get/set metody a v případě opodstatněného použití jej předělat jako public.
Upřímně řečeno lepší by to bylo naopak. Atributy psát vždy jako private a k nim (třeba automatické, triviální) get/set metody a v případě opodstatněného použití jej předělat jako public.Vůbec nejlepší by bylo, kdyby Gosling tolik nečetl manuál k C++ a Javu udělal více podle Smalltalku. Tam jsou všechny členské proměnné v Java terminologii
protected
a metody public
, což je taková úroveň oprávnění, kterou obvykle programátor potřebuje.
Verim, ze i na takove GOTO se najde use case, ve kterem je vhodne a tedy se neda obecne oznacit a priori za spatne.Dobrým příkladem jsou linuxové moduly, kde se používají skoky pro zjednodušení kódu při inicializaci tak, aby se v okamžiku, kdy něco nevyjde, nemusleo složitě řešit to, co už bylo inicializováno/naalokováno a co ještě ne. Ne že by to nešlo řešit bez skokú, ale buď by to znamenalo držet si stav (což zabíra zbytečně paměť) nebo použít vnoření, která se ale mohou při větším množství stát velmi, velmi nepřelednými a člověk pak při čtení kódu vypadá jak ten zlý pes ze Simpsonů .
int moje_promenna_kterou_jsem_si_definoval_po_prednasce_z_programovani_ktera_na_me_udelala_velky_dojem_1;
int <dtto>_2;
while ($cc=each($nejake_pole))
{ /* nejaka cinnost s $cc["key"] a/nebo $cc["value"] */ }
nějakou zvláštní výhodu oproti této:
foreach ($cc as $key => $value)
{ /* nejaka cinnost s $key a/nebo $value */ }
(používám právě tuto druhou cestu a rád bych věděl, jestli ta první není v něčem lepší)?
$cc
má být u druhé konstrukce $nejake_pole
, ale to snad každý pochopí.
$r__db_connection = mysql_connect($s__host, $s__user, $s__pass); mysql_select_db($s__database, $r__db_connection); $r__products = mysql_query("SELECT ...", $r__db_connection); for ($i__row = 0; $i__row < mysql_num_rows($r__products); $i__row++) { $a__product = mysql_fetch_array($r__products); $s__product_name = $a__product['product_name']; } // mysql_close, unset a atd... exit(0);
Naviedol ma na to pan Herout pomocou jeho knihy Ucebnice jazyka C (ked som sa pred 6timi rokmi tento jazyk ucil). …zvysuje tento navyk u mna prehladnost a efektivitu. …dokazem sa vyvarovat niektorym chybam.
Jsem jediný u koho tyto bojové výkřiky ve stylu
vyvolávají jemný úsměv na tváři a jediný co si myslí, že se tu zas řeší leda tak kraviny? To je snad úplně jedno jak to píšeš, ne? Pokud nejsi pako a nebo fakt v nějaké ovlivnění smyslů, tak snad dovedeš rozumně pojmenovat nějaké proměnné a pokud není pako (a nebo též nějak ovlivněn) ten co to po tobě bude číst, tak to snad bude i schopen pochopit. Jestli je to už jazyk interpretovaný nebo překládaný a nebo silně tipovaný nebo slabě tipovaný a nebo rudý nebo růžový.
tipovanýNo dobře. Jdu spát.
Divnou polohu zavorek taky nechapu, a proc neodsazovat u funkce taky ne.Tohle je to poslední, co by se mělo řešit. Běžně se používají různé styly, každému vyhovuje něco jiného.