Bus faktor v praxi

Bus faktor je číslo, které říká, kolik lidí by muselo odejít, aby to vážně ohrozilo projekt. Slyšel jsem příběh, u kterého jsem osobně nebyl, ale byla by škoda ho neposlat dál. Nejspíš jde o urban legend, takže jakákoliv podobnost s vaší firmou je čistě náhodná. 

Clean Code

Zápisky z knihy Clen Code, zamyšlení zda existuje korelace mezi pořádkumilovností a čistým kódem.

Kafemlejnek.TV 13. - Motion capture ve Warhorse Studios

Jan Zámečník, Warhorse Studios
V posledním díle z Warhorse Studios zpovídáme Honzu Zámečníka o nahrávání animovaných scén pomocí motion capture. Animace jsou pro nás, programátory, naprosto španělskou vesnicí, ale o to víc nás rozhovor bavil.Zkraje se bavíme o tom, co to MoCap je a jak se v průběhu času vyvíjel. Jaká jsou jeho úskalí a co jsou vlastně jeho hlavní benefity. Na...

Kafemlejnek.TV 11. - o vývoji ve Warhorse Studios

Michal Hapala
Warhorse studios se proslavili svým úspěchem na Kickstarter s RPG hrou situovanou do doby Václava IV. a začínajícího husitství v Čechách - Kingdom Come: Deliverance. A jelikož jim Forresti dělali nový web, slovo dalo slovo a domluvili jsme natáčení přímo v jejich kancelářích, které jsou v Karlíně od nás, co bys kamenem dohodil.Na úvod jsme...

Kafemlejnek.TV 2 - práce na dálku v Puppet Labs

Puppet Labs
V tomto díle jsme zavítali do kanceláří Puppet Labs v Plzni. Čekali nás tam Michal Růžička, Michal Bryxí, Filip Hrbek, kteří nám pověděli něco o tom, jak v Čechách otvírali první světovou pobočku americké firmy Puppet Labs. Povídali jsme si o tom, jak se vyvíjí Puppet Enterprise a co to vlastně znamená pracovat na dálku pro podobnou společnost.

Aliasy databázových tabulek v Ujorm

Článek vysvětluje použití aliasů databázových tabulek v ORM frameworku Ujorm na příkladu měnových kurzů.

Refactoring: HashMapové peklo

Proč je používání map místo pojo objektů špatné? Jak moc? Co se s tím dá dělat?

Hlavní výhoda mikroslužeb

Mikroslužby (microservices) jsou ta nová naprosto nejvíc cool věc. A samozřejmě se najdou kritici, kteří tvrdí, že už to tu dávno bylo, ať už v podobě SOA, OSGi nebo jakékoliv jiné. Navíc se dočtete, že mikroslužby jsou složité, náročné na údržbu, vývoj a koordinaci. Všechno je to nepopiratelně pravda. Mikroslužby mají ale jednu výhodu, která má...

Nedostatky iterativního vývoje

Kdy jste naposledy změnili směr projektu na základě zpětné vazby od zákazníka?Iterativní vývoj je v podstatě jediný způsob vývoje software, který doopravdy funguje. Nicméně i on má svoje mouchy. Chtěl bych jich tu pár popsat. Shrňme si nejdřív krátce co to ten iterativní vývoj je. 

Refactoring: Technický dluh

Něco málo o technickém dluhu, proč je nebezpečný a jak se mu bránit. Co se stane, když "splácení" technického dluhu zanedbáte? Jak s technickým dluhem souvisí exponenciální funkce, inflace, bankovní půjčky?

Key-value programování v jazyce Java

Ujorm je knihovna postavená na key-value architektuře doménových objektů, které přistupují ke svým atributům pomocí Klíčů. Na několika krátkých příkladech bych rád demonstroval zajímavé či nové vlastnosti jádra frameworku Ujorm verze 1.45.Obsah:Zápis a čtení hodnotObnovení defaultních hodnotMělká kopie objektuValidace atributů při zápisuKompozitní...

Druhá obtížná věc

Také máte občas pocit, že vám kód přerůstá přes hlavu? Snažíte se dlouhé hodiny najít chybu a pak zjistíte, že ji máte celou dobu před očima? Nevím, jestli se těmto situacím dá vyhnout, ale hodně mi pomohlo, když jsem přestal kašlat na názvy proměnných.

Proč psát unit test dříve než implementaci

TDD workflow
O TDD toho bylo napsáno již hodně, ale v tomto směru není nikdy dost. Krátkou obhajoba TDD na blogu AspectWorks. 

Jsou překlepy zadarmo?

Překlep
Jsem puntičkář a perfekcionista a vím o tom. Vidím překlepy a mám tendenci je opravovat. Kromě toho, že mi vadí, tak nás podle mého názoru stojí i reálné peníze. Nevěříte?

Clean Code – seznam pravidel a doporučení

Výběr těch nejdůležitějších myšlenek a pravidel nejen z knihy Clean Code.

Demo aplikace pro Ujorm a Wicket

Editační formulář
Knihovna Ujorm byla představena na portálu java.cz v roce 2007, tehdy ještě pod starým názvem UJO Framework. Od té doby uběhlo 6 let a zdrojový kód prošel mnoha úpravami, základní myšlenka však zůstala stejná: přístup k vlastnostem objektu se provádí pomocí konstant zvaných klíče. Pro prezentaci knihovny Ujorm jsem se rozhodl připravit malý...

Kde mě tlačí bota - code review

Mám poměrně jasnou představu, jak by měla vypadat organizace softwarového projektu. Mimo jiné dokola přesvědčuji, že je potřeba psát testy a instaluju nástroje na statickou analýzu kódu. Už to mám nacvičené. Ovšem čím dál tím víc mi chybí code review. Ještě jsem toto téma zatím uspokojivě neuchopil, ale minimálně jsem se zamyslel, jak bych z toho...

Zdravé sezení neexistuje, postavte se k práci jako my – II. díl

Patnáct našich zaměstnanců experimentujících se stáním při práci na počítači si dobrovolně nechalo napíchnout v zasedačce žílu.

Zdravé sezení neexistuje, postavte se k práci jako my

Pokračování dřívějšího článku o stání v práci, tentokrát s konkrétními živými zkušenostmi.Tak nám je přivezli. Máme v Etneteře zbrusu nové polohovací stoly, které umožňují alternovat práci ve stoje a v sedě. Pojďme se podívat, jak jsme k rozhodnutí je pořídit dospěli a proč jsme vybrali právě ty, které jsme vybrali.

Stání při práci v IT

Vyzkoušel jsem si, jaké je to pracovat na počítači ve stoje, a výsledek mě natolik ovlivnil, že už u něj sedět ani nechci. Pokud vás zajímá, co mě k tomu vedlo, jaký to mělo průběh a hlavně jaký výsledek, tak čtěte dále.

Agilní metodiky a vývoj software

Mnoho firem dnes zavádí Scrum. Jejich cíle jsou jasné: vyhodit projekťáka a vyvíjet lepší software, aniž by vývojáři vylezli ze sklepa a někoho obtěžovali. To ale nefunguje.Agilní metodika přišla celkem přirozeně jako reakce na přesun vývoje software z velkých firem do každé IT společnosti a každému na stůl. Místo velkých týmů se objevilo mnoho...

Jak jsem organizoval Forrestí hackathon

Nápad zorganizovat firemní hackathon ve mně zrál nějakou dobu. Několika podobných akcí jsem se účastnil v minulém roce, takže jsem měl hrubou představu o tom, jak podobná akce probíhá. Navíc se nám ve Forrestu už nějakou dobu v issue trackeru hromadí plno nápadů, které kvůli vytížení na projektech nemáme kdy zrealizovat ... a přitom jsou to takové...

Rozlišujte prostředí

Tentokrát jeden tip z řady triviálních, nicméně ďábel je skrytý v detailech. Najděte deset rozdílů. Tak dobře, rozdíl je pouze jeden. Přesto nestalo se vám někdy, že stále refrešujete stránku, už jste restartovali i server, ale změna v kódu ne a ne se projevit? Kolik času přijde vniveč, než si uvědomíte (případně než vám kolega řekne), že zíráte na...

HovnoKod.cz - sbírka ukázek špatného kódu

HovnoKod
Pracujete se zpraseným kódem a už nemáte nervy? Počkejte s mazáním a refaktoringem! Nahrajte ho nejdřív sem, tím si zvednete náladu a pobavíte ostatní!

Programátoři jsou největší lháři

V nadpise dnešního článku cituji mého kamaráda, který začal pracovat jako project manager v softwarové společnosti, a který hlavně dosud většinu svého profesního života pracoval mimo jakýkoliv softwarový vývoj. Zřejmě zvyklý z jiných oborů, kde člověk na první pohled vidí, v jakém stavu je projekt, tak zde asi celkem narazil, protože dost často se...

Jak se zbavit nepříjemných závislostí v testech

Dnešní příspěvek bude velmi krátký. Je dost pravděpodobné, že podobné řešení už dávno máte ve svých tetovacích utilitkách, ale mě tato kombinace napadla relativně nedávno a jsem nadšený z toho, o jak elegantní řešení se pro testy jedná.V některých testech potřebuji vytvořit část Spring aplikačního kontextu, jehož některé beany mají závislost na...

Stručný průvodce code review

Nejsem žádný velký příznivce code review, k tomu už jsem se kdysi dávno přiznal, na druhou stranu neznám jiný proces pro zachycení těch nejpalčivějších problémů, které by na vás vypadly dříve nebo později. Za těch pár let co jej dělám jsem si vypracoval seznam oblastí, na který se vždycky vyplatí podívat a pár pravidel, které se snažím dodržovat.

Je Java produktivní jazyk?

Všechno to začalo zajímavým článkem "Java Kicks Ruby on Rails in the Butt", kde aspoň pro mě se objevila velice zajímavá myšlenka: The productivity in Java world is a cultural problem, not a technical one. Na uvedený článek se objevilo spoustu reakcí v Java světě a mě to přinutilo popřemýšlet a napsat pár myšlenek v tomto článku.

Co mě testy naučily o mém kódu

Návrat ke kořenům anebo někam kde jsem možná nebyl. Možná to bude znít jako klišé, a do jisté míry to i klišé i je, ale ukaž mi tvoje testy řeknu jaký jsi programátor. Jestli jsem někdy mluvil o tom, že většina testů je ze své podstaty povahy integračními a to pro většinu enterprise aplikací, které jsem psal, pak jsem se šeredně spletl. Dneska bych...

Proč použít Interface dohromady s abstraktní třídou

Hodně často se setkávám v kódu s tím, že vývojáři upřednostňují programování rozhraním. Především je to v případech kdy kód nabízí možnost rozšíření. Bohužel tohle není moc šťastný přístup a to z důvodů zpětně kompatibility. Ukážeme si to na následujícím příkladu...

WebExpo 2010 – sobota

 Sobotní den mi zlepšil včerejší pocit z WebExpa poměrně radikálně. Dnes jsem měl více méně štěstí na přednášky, takže jsem většinu dne strávil podle mého vkusu. Organizační část se nijak výrazně nezlepšila, nicméně co se týká složení programu a osobnostní v něm, musím pochválit. Navíc se mi po letech “poštěstilo” ochutnat onen klasický rozblemcaný...

Netbeans IDE - popis prostredia - II

NetBeans logo
Milí čitatelia, v tejto časti sa pozrieme, ako vyzerá prostredie Netbeans. Už na prvý pohľad vidno, že ide o profesionálne IDE, ktoré poskytuje množstvo užitočných funkcií, ktoré uľahčujú vývoj aplikácií. Treba však vedieť aj kde ich hľadať či ako ich správne použiť. Jednou z výhod Netbeans-u je napríklad výborný editor, ktorý...

Unit testy nad in-memory databází

V poslední době jsem několikrát narazil na otázku testování dao tříd a volby databáze, nad kterou testy běží. Překvapilo mě, jak kontroverzní otázka to je a jak vyhraněné názory na ni existují. Testujete dao třídy? Píšete unit testy pro cílovou databázi nebo používáte nějakou in-memory variantu jako HSQL? Mají testy s jinou než cílovou databází...

Inicializace databázových dat prostředky Javy

Končí inicializace databáze vytvořením tabulek a integritních omezení? Jak ji naplnit nezbytnými daty? Téměř každá aplikace potřebuje k práci nějaké ty číselníky, role, přístupová práva, uživatele a další data. V tomto blogu zkusím popsat, co může inicializace dat v relační databázi znamenat a jak pro ni výhodně použít prostředky Javy.

Testování aplikací - panelová diskuze

Co se stane, když dáte dohromady javistu, dotnetaka, pythonistu a rubyistu a necháte je diskutovat o testování aplikací. Po pravdě řečeno jsem nevěděl co od toho čekat, ale rád jsem přijal pozvání, které mi adresoval Jarda Jirava na akci Testování aplikací - panelová diskuze. Spolu se mnou diskutoval ještě Karel Minařík (Ruby), Jan Král (Python),...

Chudokrevný model, chudý příbuzný objektově orientovaného návrhu?

Nedávno se mě jeden kolega zeptal jestli budeme mít anemic domain model (chudokrevný?). Byl jsem trošku v rozpacích co tím myslí. Po krátke diskuzi jsme si vyjasnili termíny (problém jsem znal, ale termín jsem zapomněl) a já jsem prohodil, že asi budeme. Když nad tím přemýšlím, musím říci, že to byla blbost.

Práce s číselníkovými hodnotami

V tomto příspěvku s lehce nudným názvem bych se rád pokusil o svěží zamyšlení nad prací s číselníkovými hodnotami. Konkrétně mě bude zajímat porovnávání číselníkových hodnot a rozhodování podle číselníkových hodnot v obchodní logice. 

Stoprocentní mantra

Programátoři a jejich manažeři občas řeší, jaká míra pokrytí unit testy je dostatečná. Můžeme zaslechnout, že cokoliv pod 60% nestojí za zmínku, občas zahlédneme, že to magické číslo je 95% a někteří fundamentalisté dokonce tvrdí, že cesta k nirváně vede jen a pouze přes stoprocentní pokrytí. Dnes jsem si řekl, že je ideální počasí na to,...

Knihovny tříd vs. Knihovny komponent

Jako základní stavební kámen vývoje považuji volně provázané komponenty. Problém je v tom, že Java nemá adekvátní prostředky na to, abych mohl vůbec komponentově vyvíjet. Jako největší bolest vidím to, že nemůžeme dosáhnout zapouzdření. To vede k tomu, že v Jave nepoužíváme knihovny komponent, ale knihovny tříd. Knihovny tříd mají tu nevýhodu, že...

Závislosti polí ve formuláři

Ve svém vůbec prvním blogu bych se rád podíval na řešení závislostí polí ve formuláři. Nechci popisovat konkrétní technologii pro psaní webových aplikací nebo například tlustých klientů. Zajímá mě obecný problém, kdy máme aplikaci pracující s množstvým formulářů, které jsou „složité“ a jejich složitost je tvořena mimo jiné i závislostmi mezi...

Do pranice: malé samopopisující versus velké okomentované

Během code review jsem se začetl do knihy Refactoring od Martina Fowlera a musím říci, že jeho styl programování se mi velice líbí. Jde o přístup k tomu jaký volí zápis metod a využívání extract method. Obvykle co vidím nejen sám u sebe je přístup delší metody s vloženými komentáři (pokuď vůbec) co daná část metody dělá.

Analýza a realizácia vybraných návrhových vzorov použitím AspectJ

Článok sa venuje prehľadu niektorých vzorov aspektovo orientovaného programovania (AOP) s prihliadnutím na vzory Wormhole, Cuckoo's Egg a Border Control.

Praktický API Design

Dnes budu psát o knize Practical API Design od Jaroslava Tulacha. Pomiňme její kvalitní zpracování, které se jen tak nevidí, zajímavý je obsah. Na začátku je tam na můj vkus docela dost filozofování, ale možná to ke knize podobného zaměření patří. Zabývá se totiž pohledem na návrh API v Javě z trochu vyššího hlediska. To znamená, že se nebabrá...

Programátorská úloha (PR0GR4M470R5K4 UL0H4)

V poslednom čase sa v reálnom živote, ale aj na internete rozpútala zúrivá reklamná kampaň, ktorá má okrem iného osloviť aj programátorov. Nemohol som si ju nevšimnúť, pretože každý deň chodím okolo veľkého reklamného nápisu:BUĎTE LEPŠÍ AKO VŠETCI HACKERI SVETA....

jOpenSpace 2008 - Metodiky vývoje - jak děláme review kódu

Dneska vám předkládám poslední reakci na první dávku audií z jOpenSpace, po ORM a dokumentaci mě oslovila diskuse na téma metodiky vývoje. Poslední 2 zaznamenaná témata mě k nějakým poznámkám nevyburcovala.Co se metodiky vývoje v podstatě mě velmi mile překvapilo, že se již naplno prosazují iterativní a agilní způsoby vývoje, které...

Zpětná kompatibilita

Dnes budu psát o zpětné kompatibilitě v Javě. Předem upozorňuji, že nejsem expert na dané téma, spíš si chci jen ujasnit myšlenky. Takže když někdo narazíte na chybu v mých jinak bezchybných myšlenkách, tak to prosím pěkně rozmázněte v diskuzi pod článkem. Rád se něco přiučím.    Co to tedy je zpětná kompatibilita? Zpětná kompatibilita je, když...

Opatrne s anonymnimi tridami

Jsou minimálně dva důvody, proč být při používání anonymních tříd opatrný. Řekněme že teď pominu výhrady "kosmetického" rázu, tj. hlavně "horizontální roztahovačnost" a nepříjemný efekt na čitelnost tříd v debuggeru (název třídy ZoologickáZahrada$1$2 vám jaksi neřekne, jestli je daná instance podtřídou třídy Opice nebo...

Nemám rád mrtvý kód

Za posledních čtrnáct dní jsem přečetl tolik kódu, že mi to vystačí minimálně na další dva příspěvky ;-). Jestli mě v kódu něco dráždí jako červený hadr býka, pak je to mrtvý kód. Nejdříve malá definice, co je podle mého mrtvý kód. Mrtvý kód - představuje nevyužité proměnné, importy, metody a zakomentované části kódu a nebo větve kam se program...

Do pranice - využívat možnosti syntaxe až do morku kostí

Nebudu začínat obvyklým "nedávno jsem", ale třeba, tak jsem vám viděl zajímavé a opravdu vypečené konstrukce v kódu. První z nich představuje využití instančních inicializátorů ve spojitosti s anonymní vnitřní třídou, což umožňuje zajímavý způsob konstrukce a naplněni objektu. Druhou konstrukcí je vícenásobná definice lokální proměnné...

Srozumitelnost zdrojového kódu

K dnešnímu psaní mě inspirovat článek s názvem "Four harmful Java idioms, and how to fix them" na serveru JavaWorld. Nedalo mi to, abych k tomu nenapsat něco svého.Pro ty, kdo to nechtějí číst celé mám zde krátké resumé. Autor článku navrhuje čtyři následující řešení (lépe řečeno reaguje na čtyři celkem rozšířené idiomy) pro lepší...

Nemám rád kontrolované výjimky

Už dlouho jsem nikoho nepoučoval a trochu mi to chybí, takže dneska budu psát o kontrolovaných alias synchronních alias čtverečkovaných alias checked výjimkách. Ano o těch výjimkách, které jste překladačem nuceni odchytit a zpracovat.

Není revize kódu jako revize kódu

Dagi se nám nějak rozepsal. Takže abych s ním udržel krok, napíšu velmi opožděnou reakci na to co napsal skoro před rokem a dneska mi připomněl svým nejnovějším zápiskem. Revizi kódu můžeme pojmout několika způsoby. Zažil jsem jednu čistě formální revizi, která se dělala jen proto, aby se odškrtl chlívek v nějakém předávacím protokolu....

Trochu o designu API

Včera večer jsem ještě se sirkami v očích dopisoval nějaké postřehy ke code review prezentaci, kterou budu mít v pondělí a zároveň jsem konečně dorazil rozhovor s Jardou Tulachem k vydání jeho knihy Practical API Design s podtitulem Confessions of a Java Framework Architect. Musím předeslat, že ten rozhovor na mě udělal dojem, že tato kniha nesmí...

On se ještě používá jUnit? Vždyť máme TestNG.

Konečně jsem si poslechl záznam přednášky Jana Novotného Automatické testování v praxi. Jen více takových ... Ale proč píšu tento příspěvek? Stále mě překvapuje jak velké množství lidí neustále používá jUnit, který mi přijde v porovnání s TestNG jak chudý příbuzný. Proto jsem se rozhodl nastínit 2 hlavní výhody TestNG, alespoň z mého pohledu...

Sníme v kódu

Tak jsem tu zas s další pidirecenzí knihy pro úchyly jako jsem já a doufám že i vy. V originále se jmenuje Dreaming in Code, a napsal ji Scott Rosenberg. Její podtitul mluví za vše: „Dva tucty programátorů, tři roky, 4 732 chyb a jedna výprava za výjimečným programem.“

Effective Java - druhé vydání

Kdo by z javovských programátorů neznal kultovní knihu Effective Java (v českém překladu Java efektivně - 57 zásad softwarového experta,) Joshuy Blocha. Dneska jsem narazil na rozhovor s jejím autorem v rámci letošní JavaOne, který se točil nejen kolem jejího druhého vydání, které bylo rozšířeno vzhledem k syntaktickým a API novinkám Javy 5.

Před předpisem protřepat

Kolikrát jsem to jenom zažil, jednou, dvakrát, třikrát? Na mou ti duši opravdu nevím, ale bylo to nespočetněkrát. Že nevíte o čem to mluvím? Nevadí, určitě jste takovou situaci zažili, stačí jenom trochu zavzpomínat. Přijdete k nějakému kusu kódu a máte prostě tu neodolatelnou potřebu jej z gruntu přepsat. Nemáte k tomu vlastně ani žádné závažné...

Komentovat? Určitě ano.

Opět jsem se setkal s názorem, že komentovat zdrojové kódy není potřeba, že kód sám o sobě je dokumentace. K tomu můžu říci jen jedno - to je naprostá blbost. Stačí nepracovat s vlastním kódem několik týdnů a už člověk ztrácí přehled o jemných detailech algoritmů, které sám psal. Nemluvě pak o tom, když je potřeba opravit chybu v rok staré aplikaci...

Ještě více statická

Ač jsem velkým příznivcem dynamických jazyků namísto násilného, alespoň z mého pohledu, rozšiřování Javy, tak jsou návrhy, které mají moje sympatie. Jedním z nich je JSR 308: Annotations on Java Types, které se snaží rozšířit možnost deklarace anotace u libovolného užití typu.

Na unit testy si vždy čas udělám ...

Přečetl jsem si příspěvek Máte čas na unit testy? od Petra Jůzy a po dlouhé době, mě nějaký text přiměl k reakci (Kde je dagi se svými kontroverzními tematy).Přiznám se, že s testováním jsem začínal nějakým 8 let zpátky za pomocí jUnit knihovny a měl jsem dobrý pocit. Spíš mě to ale zdržovalo. Postupem času jsem se naučil (alespoň si to myslím)...

Máte čas na unit testy?

Pokud bych si měl hned sám odpovědět, tak dle mého názoru moc času není. Není z jednoho hlavního důvodu a to jsou peníze resp. náklady plynoucí z času, který bude věnován psaní unit testů. Hned na začátku také musím dodat, že celý článek je o "normálních" jednorázových projektech, které nejsou nějak mission-critical. U vývoje produktu...

Záznam z přednášky Automatické testování v praxi

Plakát s upoutávkou
Na dovolené se mi podařilo vyšetřit čas na sestříhání záznamu z přednášky Automatické testování v praxi, která se konala dne 21.4.2008 na Univerzitě Hradec Králové. Na přednášce se sešlo přes 30 posluchačů převážně z řad studentů univerzity. Přesto že jsem původně anoncoval, že se pokusím zabrousit i do pokročilejších témat, jako jsou...

Programátor pragmatik - recenze publikace

Obálka
Nenápadní knížečka, která určitě stojí za přečtení, pokud to s programováním myslíte alespoň trochu vážně. Hlavním úkolem každého, kdo se pustí do programování, je zvládnout složitost. I taková zdánlivě jednoduchá věc, jako je program pro vytvoření a poslání faktury, se skládá z velkého množství drobných krůčků, které je třeba všechny...

Problémy s adopcí agile přístupů

Jelikož čím dál častěji narážím na spoustu dezinterpretací, chybných názorů a různých chytrostí ohledně agile přístupů, rozhodl jsem se napsat tento článek a podělit se tak o své zkušenosti nabyté několikaletou praxí, tj. používáním a zaváděním agile praktik a životního cyklu v projektech vývoje a údržby software. Zmíněné poznámky snad mohou...

Návrhové vzory - recenze publikace

kniha Návrhové vzory
Svoji profesní dráhu jsem na začátku 90. let začal jako vysokoškolský učitel a také jako programátor specializující se na tehdy nový trend objektově orientovaného programování. Pracovali jsme tehdy s novým, moderním a od stávajících stylů odlišným způsobem analýzy systémů a tvorby softwaru. Z tohoto nového stylu se vedle stále...

Do pranice: kontrolované vs. běhové výjimky

Napsal jsem, nebo lépe řečeno zrefaktoroval jsem, velké množství kódu, z kontrolovaných výjimek na běhové a všude to bylo ku prospěchu věci. Principiálně souhlasím s tím, že kontrolované výjimky mají své uplatněni a to tam, kde je z kontextu možné zotavení. Typickým příkladem jsou vstupy od uživatele. Těchto případů je možná 20%. Zbylých 80% jsou...

Neagilní open source projekty

Mám rád open source knihovny. Ke svojí práci používám řádově desítky až stovky open source knihoven. Nebudu zde sepisovat všechny výhody open source, nýbrž vypíchnu jednu nevýhodu, která mě mě neskutečně irituje. Onou nevýhodou je malá agilnost ve vztahu ke komunitě. Alespoň moje zkušenost je negativní.

Programování řízené testy

Každý programátor má své návyky, které aplikuje pří vývoji softwaru. Klasický přístup vypadá tak, že identifikujete systém a jeho use casy, naprogramujte část systému a pak vyzkoušíte zda se chová tak jak má. Odlišný přístup se jmenuje programování řízené testy

Vývoj aplikace za běhu

Už vás nebaví při každé změně třídy restartovat webový kontejner?

Kam se ztrácí zkušení programátoři

Zkušenosti jsou to co se velmi těžko získává a téměř se nedají předat a přesto si jich nevážíme ...

Deset rad jak psát kód efektivně

NkD má tezi o tom, že dneska již neprogramujeme, ale spojujeme dohromady pouze části frameworků, které napsal někdo jiný. Do jisté míry s tím lze souhlasit a já osobně na tom nevidím nic divného, každopádně v poslední době jsem strávil nezvykle množství času vlastním kódováním. Při té příležitosti mě napadlo se s vámi podělit o oblíbené rady a...

Implicitní versus Explicitní propagování kontextových informací v API

Článek jsem věnoval možnostem propagování kontextových informaci v API. Kontextové informace jsou většinou potřebné skrze všechny vrstvy aplikaci, jedná se například o identitu a role přihlášeného uživatele, vybraný locale apod. Pokud aplikace potřebuje kontextové informace, pak stojíme před otázkou jak je v API propagovat. V Jave máme dvě možnosti...

Děláme odhady

Povídání o černé magii dělání odhadů.

Eclipse a drobné maličkosti: generování toString

Eclipse delší dobu nabízí možnost vygenerovat metody pro hashCode a equals z instančních proměnných třídy. Pokud jste si možnost generování těchto metod oblíbili, tak vám zřejmě chybí generování třetí metody do party a to toString.

Unit testy a čistota návrhu

I když si myslím, že mám s unit testy dost zkušeností, stále ještě mě dokáží dost překvapit. Kromě toho, že se překvapuji tím jak často je „zapomínám“ psát, překvapují mě většinou pozitivně. Zrovna nedávno mě překvapily znovu. Psal jsem program, který mimo jiné prohledává adresář na disku, poté nalezené soubory zpracovává, přesouvá jinam,...

Už tam budem?

Výběr myšlenek z přednášky Roda Johnsona.

Programovaní kontraktem, Design By Contract

Programování kontraktem nebo také nazývané Design by contract je způsob návrhu softwarových komponent. Každá komponenta nebo objekt, říkejme tomu podle libosti, má vždy nějaký kontrakt. Kontrakt popisuje vstup, výstup a invarianty (neměnné podmínky) dané komponenty. Každý klient, který s komponentou spolupracuje pak daný kontrakt akceptuje, prostým...

JDBC memory leak za 5,50-

Je libo dát si malý, únik paměti, který ve výsledku povede k pádu aplikace na java.lang.OutOfMemory? Budeme potřebovat tyto ingredience: kód pracující s databází přes JDBC, poolování databázových připojení a následující konstrukci...

Návrhový vzor Template method a jeho aplikace v prostředí JDBC

Tento článek by mohl klidně nést podtitul Efektivní práce s databází v Jave: stop nadbytečnému kódu. Hodně často se diskutuje práce s JDBC, což je javovské rozhraní pro práci s databází. Bohužel už méně často se diskutuje o tom jak psát JDBC kód efektivně. V tomto článku si ukážeme jak na to za pomoci návrhového vzoru Template method.

Vyšší dívčí - názvy temporary proměnných

Jestliže si myslíte, že programování resp. jeho určité činnosti nelze povýšit na umění pak se hluboce mýlíte. Kreativita vývojářů se naplno rozbuší při vymýšlení názvů temporary proměnných. Připadám si trochu fádní se svými názvy temporary proměnných jako foo nebo hoo v porovnání s tím na co lze narazit.

Návrh aplikací v jazyce UML - diagram tříd

Po delší prodlevě vychází další článek o návrhu aplikací s využitím jazyka UML. Místo zbytečných omluv za dlouhou a neplánovanou odmlku snad čtenáře potěší informace, že se napříště budu věnovat i konstrukcím jazyka UML nově přidaným ve verzi 2.0. Tématem tohoto článku je vysvětlení elementárních pojmů, jejichž znalost je nezbytná při návrhu...

jUnit, Grobo, crond: Ještě větší bratr než jsme doufali

Uspěšně provedené testy, u kterých se můžete pochlubit 0% failures, ještě ale nic nezaručují. Jednak můžou být blbě napsané, jednak jich může být málo. S tím prvním bodem vám asi neporadím, ale určitě jsou na to téma napsány celé stohy další slámy vhodné k mlácení. Druhé situaci se ovšem dá předejít, nebo lze alespoň objektivně měřit jak na tom...

Testování nové generace

Nedávno jsem shlédl prezentaci na téma poměrně nového frameworku TestNG, který ze srovnání oproti zavedenému JUnitu vycházel velmi zajímavě.

Do pranice: Integrační vs. Unit testy

Jaký druh testů vlastně píšete, položili jste si někdy tuto otázku? Já jsem si tuhle otázku párkrát položil. Možná jste si tuhle otázku položili i vy, ale v jiném kontextu. Co třeba, proč vlastně nepíšu tesy? V mojí praxi jsem shledal několik důvodů, proč vývojáři nepíši testy

Anotace? Ano, ale s mírou

Na stránkách java.sun.com se objevil článek Anderse Holmgrena o tom, jak pomocí anotací deklarovat validační kritéria u Java Beans. Přesněji řečeno, článek je cvičením z nových vlastností, které přináší Java 5, a tyto vlastnosti jsou demonstrovány na design patternu, kterým by používání anotací k ověřování hodnot mohlo být.

Rozjímání nad úsporou a psaním kódu

Kdysi dávno jsem četl, že programátor je od přírody tvor líný. Když občas někde zaslechnu a nebo si přečtu, co by bylo dobré mít v Javě, protože to má ten a ten jazyk, a nebo, protože to zjednoduší kód ze třech řádek na jednu, vyvolává to ve mě mírné chvění. Stejně tak citlivý jsem na jakékoliv podněty týkající se rozšíření sémantiky vlastního...

Java a výjimky - zpracování výjimek

Známe již objektovou hierarchii výjimek a víme, z jakých základních pohledů nahlížet na vzniklou výjimku. V tomto článku se podíváme na špatné příklady práce s výjimkami, jako je například požírání výjimek, a vysvětlíme si, na jaké konstrukce dát pozor.

Java a výjimky - úvod do problematiky výjimek

Tento článek si klade za cíl seznámit čtenáře s principem fungování mechanismu výjimek v prostředí platformy Java. Ukážeme si používání konstrukcí try, catch a finally, základní rozdělení výjimek a jejich objektovou hierarchii.

 
strana 1/1celkem 88 položek