Inversion of Control, Convention over Configuration, Agile approach a Extreme programming

7 views
Skip to first unread message

kali

unread,
Nov 10, 2011, 5:29:20 AM11/10/11
to CTU VIA
ahoj kluci a holky,

dneska jsem na prednasce vypalil nejaky komentar stran IoC, dovolte mi
trochu to rozvest.

Zacneme tim, ze v jave a specielne u vyvoje webu existuje fenoment
obecne oznacovany jako "Framework Hell". Polopaticky bych to yjadril
jako ze vam vsichni tvrdi, ze je vsechno uplne trivialni, POKUD na to
pouzijete nejakou vhodnou platformu. Ovsem vybrat si takovou a naucit
se ji zkonfigurovat (nedejboze zkombinovat jich nekolik GWT/Spring/GAE/
Android/Maven) a vyresit exception, ktera vam po peti minutach naskoci
vubec nemusi byt pravda.

Z tohoto pohledu bych ja osobne nikoho neodrazoval od psani neceho sam
- pokud je to co potrebujete trivialni, klidne si to napiste sami a
adoptuje komplexni reseni (framework) tehdy, kdyz to zacnete
potrebovat. Obecny princip v pozadi takovehoto rozhodnuti je Agilni
pristup (dalsi buzzword) a Extremni programovani, ktere se da shrnout
do jedine poucky: Udelejte to nejjednodussi co lze co bude fungovat a
udelejte to hned :-)

Jinak ad frameworks - java obecne trpi jejich prebytke. Resenim pro
komunitu jsou: 1) standardizace (viz treba REST a jeho sirsi adopce),
2) zjednoduseni platforem tak, aby nauceni se s nejakou z nich bylo co
nejjednodussi.

IoC kakozto zpusob "vlepeni frameworku" do vaseho kodu "zvenku" pomoci
anotaci nebo xml tak, aby cely proces byl velice jednoduchy, primocary
je bezva.

Dalsi vec, se kterou jsme se dnes mohli setkat (pamatujete na xml,
ktere se jmenuje via-servlet.xml) a ktere se pres "jmeno"
"automaticky" asociuje s danym servletem. Tak tohle je zas Convention
over Configuration princip - cili ze framework vybavime nejakymi
konvencemi, ktere pomuzou jednoduchosti jeho pouziti. Typicky to muze
byt adresarova struktura a standardizovany pristup k urcitym zpusobem
pojmenovanym vecem atd. Treba v Grails (GoG) staci napsat fef
mujService do controlleru a pokud existuje ve slozce services definice
service ktery se jmenuje muj, tak se tento instanciuje a schova pod
tuto promenou., to je convention.. (configuration by byla nekam psat
tohle dratovani, trochu jako kdyz pises servlet a pak pro nej mapping
a ukazujes na tridu, ktera ho implementuje atd..)

Jinak dalsi trend (Spring je prukopnik a J2EE5 nasleduje) je aby v
zakladu, tak jak si to stahnete, byl framework dobre zkonfiguorovan a
mohli jste ho zacit rovnou pouzivat - neboli "meaningful defaults" a
"advocating good practices and patterns". Cili abyste mohli rovnou
svistet :-). Mrknete treba na zminovane Groovy On Grails ci Ruby on
Rails pro example. Spring je taky z tohoto testa..

takze to jenom abychom se pomasirovali kolik zname bezva Buzzwordu.
Pouzivejte je na pracovnich interview nebo kdyz nebudete vubec vedet,
na co se vas ptaji :-)

zdravi,
-- petr a eager programmers

Jan

unread,
Nov 13, 2011, 12:49:29 PM11/13/11
to CTU VIA
Prakticky souhlasim se vsim co Petr napsal. Mozna rada je si zkusit
napsat super jednoduchy servlet a otestovat si ho HTTP clientem. Druhy
krok asi zkusit zkonfigurovat a pripojit db. Pak bych znovu testoval
HTTP clientem. Jakmile mate nejjednodussi kod je treba zacit myslet na
validace, jak jsou data zakodovana (JSON, xml, ...) pak se vyplati se
podivat na framework, ktery udela mnoho prace za vas. Spring - mnoho
je toho predprogramovano. Je pravda, ze je to komplikovane a rozumet
vsem detailum da praci, ale je to nejrychlejsi cesta ke slusnemu kodu.
Reply all
Reply to author
Forward
0 new messages