- jak lépe členit logiku kódu? mám všechno ve funkcích. máte nějaké zkušenosti s vytvářením nějakých knihoven?
Stačí se inspirovat vhodnými návrhovými vzory, ty platí obecně pro jakékoliv programovací jazyky. Jde jen o to, co se lépe udržuje a o to, jak vám to ovlivňuje chod aplikace.
- testujete kód v bashi?
Ano, testujeme. Snažíme se o jednotkové testování a celkem to jde. Ale u složitějších aplikací se to testování provádí docela špatně - veškerá práce s pokročilejšími funkcemi a kontrolou datových typů padá na unixové nástroje. Tento offloading jen komplikuje správu aplikace, pokud se nejedná o aplikaci vlastní. Musíte pak testovat vše n-krát, protože testujete nejenom aplikaci vlastní, ale i cizí, u které očekáváte nějaký výstup. Funkcionální testování provádíme pomocí nástroje "expect", viz manuálové stránky.
- kdy se vyplatí bash opustit a přepsat to třeba do pythonu?
Nad tím má smysl uvažovat jenom tehdy, pokud přemýšlíte o rychlosti, přesném časování, pokročilých datových strukturách či jiných fičurách. Shell programming je úžasný pro lepení komponent v rámci systému. Složitější aplikaci můžete mít i ve formě malých pomocných aplikací, na které se offloaduje zátěž z hlavního shell skriptu. Vzorem je třeba OpenWrt a parsování JSON stringů v shellu - pomocí jsonpath v jazyce C pracují s JSON daty na úrovni shellu.
A tedy - pokud víte, že nebudete muset validovat neustále výstupy, přesměrovávat jej neustále mezi aplikacemi tam a zpět, pokud nebudete mít velké množství závislostí na externích aplikacích, tak právě doporučuji zůstat u shellu. Ale to samé bych Vám řekl i o jakémkoliv jiném jazyce - minimalizace závislostí na externích knihovnách a vhodný návrh aplikace je vesměs cílem jakéhokoliv projektu napsaném v jakémkoliv jazyce. Závislosti na jiných aplikacích jen zvyšují pravděpodobnost rozbíjení kódu.
Každý skriptovací/programovací jazyk má své pro a proti, přemýšlejte spíše o tom, pro jakou platformu budete programovat a přizpůsobte tomu i volbu svého jazyka. Pro Android také napíšete aplikaci v jazyce C nebo i v shellu, ale budete velmi trpět narozdíl od použití Javy nebo Mono platformy.
- máte nějaké pozitivní zkušenosti s tvorbou větších bashových aplikací?
Ano, mám.