Halva skripti omadused & millest hoiduda: Difference between revisions

From ICO wiki
Jump to navigationJump to search
No edit summary
 
(37 intermediate revisions by the same user not shown)
Line 1: Line 1:
== Sissejuhatus==
== Sissejuhatus==
Tehes algselt tutvust Bashiga võib see tunduda põneva ja mitte liialt raske skriptimiskeelega. Kuid sellegipoolest peaks jälgima mõningaid üldteatud tavasid, nõuandeid kirjutades Bashiga skripte, nagu kõikide teiste skriptimiskeeltega. Antud artikli eesmärk ongi lugejat teavustada, millest hoiduda kirjutades skripte ning see läbi ka juba saada terviklikum pilt, milline võiks üks Bashi või mis iganes muu skript välja näha.


== Halb skript ==  
== Halb skript ==  


* Kommenteerimata, ei ütle alguses milleks on skript mõeldud. Ei sisalda autorit, kuupäeva.  
Järgnevalt ongi siis ära toodud peamised skripti omadused, millest võiks üks skriptikirjutaja hoiduda.
* Ei täida eesmärki.
 
* Ei tööta, üritab teha võimatut.
* '''Kommenteerimata''' - ei ole täheldatud, milleks on skript mõeldud. Ei sisalda autorit, kuupäeva. - Taoline käitumine võib ära hoida palju peavalu juba selle näol, et ei pea tervet skripti läbi lugema, et aru saada, mida skript teeb. Samuti hea oleks iga suurem koodiblokk ära kommenteerida.  
* Lõhub süsteemi ära.
* '''Ei täida eesmärki'''
* Paroolid on skriptis mitte keskkonna muutujates
* '''Ei tööta, üritab teha võimatut'''
* Liigne keerukus, üleliia palju koodi, halb struktuur - Halb loetavus ning skriptil puudub loogiline ülesehitus. Ei ole trepitud
* '''Lõhub süsteemi ära'''
* Raskesti muudetav/ühildatavus.
* '''Paroolid on skriptis mitte keskkonnamuutujates''' - Juhul kui skript peaks sattuma mõne kolmanda isiku valdusesse, siis see tähendab kohest turvariski. Pealegi tark oleks hoida skripte kusagil repositooriumis (Github, Bitbucket)
* Vea puhul ei väljasta veateate veavoogu.  
* '''Liigne keerukus, üleliia palju koodi'''
* Ei väljasta teadet skripti täitmisel.
* '''Halb struktuur''' - Skriptil peaks olema loogiline ülesehitus ning vastavalt ka trepitud.
* Ei ole taaskasutatav. Porditav teistele süsteemidele/teenustele ilma väikeste muudatustega.
* '''Raskesti muudetav/ühildatavus'''
* Halb skript ei kontrolli enne skripti täitmist, kas teda on võimalik üldse täita. Näiteks kas keskkonnamuutujad on saadaval.  
* '''Vea puhul ei väljastata veateadet või veavoogu''' - Oluline osa debuggimisel.
* Skriptis on muutujad, mis tähendab seda, et tekivad korduvad skriptielemendid. See on halb.
* '''Ei väljasta teadet skripti täitmisel''' - Hea oleks kasutajal ikkagist koheselt teada, kas skript õnnestus.
* Skript teeb rohkem, kui on ette nähtud.  
* '''Ei ole taaskasutatav''' - Enamjaolt peaks skript olema porditav teistele süsteemidele/teenustele väikeste muudatustega.
* Halb skript ei ole skriptitav. Ehk teda ei saa välja kutsuda teisest skriptist.  
* '''Halb skript ei kontrolli enne skripti täitmist, kas teda on võimalik üldse täita''' - Näiteks kas keskkonnamuutujad on saadaval, kas kasutaja on root kasutajaõigustega jne.
* Halb skript ei anna veakoodi (exit koodid ning need on samuti skripti alguses määratud).
* '''Funktsioonid, muutujad''' - Tark oleks skripti mitte kirjutada korduvaid elemente.  
* '''Skript teeb rohkem, kui on ette nähtud''' - Ei ole tarvis luua näiteks üleliigseid faile, kauste jne. Samuti üleliigne ressurssi kasutus ei ole hea.
* '''Halb skript ei ole skriptitav''' - Ehk teda ei saa välja kutsuda teisest skriptist.  
* '''Ei aita kasutajat''' - Näiteks kui kasutaja sisestab käsurea argumendid valesti, siis hea oleks, kui skript ütleks kasutajale, kuidas sisetada käsurea argumendid.
* '''Ei ole imporditud keskset lokaali''' - Kui skript on kirjutatud UTF-8's, aga masin kus skript käivitatakse on mingi muu lookaaliga, siis skript ei pruugi töötada. Bashis näiteks "LC_ALL=C", LC_ALL on keskkonnamuutuja, mis kirjutab kõik lokaali seaded üle ja C lokaal on nö. kõige lihtsam, kesksem lokaal.
* '''Veatöötlus''' - Halb skript ei kasuta veakoode, näiteks exit 0, exit 1 jne.
 
== Kokkuvõte==
 
Nagu näha, siis jälgides kindlaid reegelid ja häid tavasid, muutub skriptimine hõlpsa lihtsamaks ja võib ära hoida nii mõnegi vea, intsidendi, kus vastaseljuhul peaks hulka pead murdma.


== Kasutatud kirjandus & materjal ==
== Kasutatud kirjandus & materjal ==


 
* http://www.tldp.org/LDP/Bash-Beginners-Guide/html/sect_01_05.html
* Loengu materjal


== Autor ==
== Autor ==
Line 27: Line 39:
* Johannes Tammekänd - A22
* Johannes Tammekänd - A22


[[Category:IT infrastruktuuri teenused]]
[[Category:Skriptimiskeeled]]

Latest revision as of 13:56, 15 March 2014

Sissejuhatus

Tehes algselt tutvust Bashiga võib see tunduda põneva ja mitte liialt raske skriptimiskeelega. Kuid sellegipoolest peaks jälgima mõningaid üldteatud tavasid, nõuandeid kirjutades Bashiga skripte, nagu kõikide teiste skriptimiskeeltega. Antud artikli eesmärk ongi lugejat teavustada, millest hoiduda kirjutades skripte ning see läbi ka juba saada terviklikum pilt, milline võiks üks Bashi või mis iganes muu skript välja näha.

Halb skript

Järgnevalt ongi siis ära toodud peamised skripti omadused, millest võiks üks skriptikirjutaja hoiduda.

  • Kommenteerimata - ei ole täheldatud, milleks on skript mõeldud. Ei sisalda autorit, kuupäeva. - Taoline käitumine võib ära hoida palju peavalu juba selle näol, et ei pea tervet skripti läbi lugema, et aru saada, mida skript teeb. Samuti hea oleks iga suurem koodiblokk ära kommenteerida.
  • Ei täida eesmärki
  • Ei tööta, üritab teha võimatut
  • Lõhub süsteemi ära
  • Paroolid on skriptis mitte keskkonnamuutujates - Juhul kui skript peaks sattuma mõne kolmanda isiku valdusesse, siis see tähendab kohest turvariski. Pealegi tark oleks hoida skripte kusagil repositooriumis (Github, Bitbucket)
  • Liigne keerukus, üleliia palju koodi
  • Halb struktuur - Skriptil peaks olema loogiline ülesehitus ning vastavalt ka trepitud.
  • Raskesti muudetav/ühildatavus
  • Vea puhul ei väljastata veateadet või veavoogu - Oluline osa debuggimisel.
  • Ei väljasta teadet skripti täitmisel - Hea oleks kasutajal ikkagist koheselt teada, kas skript õnnestus.
  • Ei ole taaskasutatav - Enamjaolt peaks skript olema porditav teistele süsteemidele/teenustele väikeste muudatustega.
  • Halb skript ei kontrolli enne skripti täitmist, kas teda on võimalik üldse täita - Näiteks kas keskkonnamuutujad on saadaval, kas kasutaja on root kasutajaõigustega jne.
  • Funktsioonid, muutujad - Tark oleks skripti mitte kirjutada korduvaid elemente.
  • Skript teeb rohkem, kui on ette nähtud - Ei ole tarvis luua näiteks üleliigseid faile, kauste jne. Samuti üleliigne ressurssi kasutus ei ole hea.
  • Halb skript ei ole skriptitav - Ehk teda ei saa välja kutsuda teisest skriptist.
  • Ei aita kasutajat - Näiteks kui kasutaja sisestab käsurea argumendid valesti, siis hea oleks, kui skript ütleks kasutajale, kuidas sisetada käsurea argumendid.
  • Ei ole imporditud keskset lokaali - Kui skript on kirjutatud UTF-8's, aga masin kus skript käivitatakse on mingi muu lookaaliga, siis skript ei pruugi töötada. Bashis näiteks "LC_ALL=C", LC_ALL on keskkonnamuutuja, mis kirjutab kõik lokaali seaded üle ja C lokaal on nö. kõige lihtsam, kesksem lokaal.
  • Veatöötlus - Halb skript ei kasuta veakoode, näiteks exit 0, exit 1 jne.

Kokkuvõte

Nagu näha, siis jälgides kindlaid reegelid ja häid tavasid, muutub skriptimine hõlpsa lihtsamaks ja võib ära hoida nii mõnegi vea, intsidendi, kus vastaseljuhul peaks hulka pead murdma.

Kasutatud kirjandus & materjal

Autor

  • Johannes Tammekänd - A22