logi sisse meist KKK

Mul on selline mure, et ühes rakenduses mida ma haldan on minu meelest antipattern. Ma pole ise arendaja vaid süsadmin ja rakendus on minu hooldada. Rakendusel on muu hulgas sellised tabelid:

kuup2ev             aasta  kuu  p2eva nr.  
01JAN95:00:00:00    1995    1   1  
02JAN95:00:00:00    1995    1   2  
03JAN95:00:00:00    1995    1   3  
...  
29DEC20:00:00:00    2020    12  9495  
30DEC20:00:00:00    2020    12  9496  
31DEC20:00:00:00    2020    12  9497

ja selline tabel

aasta kvartal kuu kuu nr.  
1995    I kv    1   1  
1995    I kv    2   2  
1995    I kv    3   3  
...  
2015    IV kv   10  250  
2015    IV kv   11  251  
2015    IV kv   12  252

Minu arusaamist mööda on selliste asjade tegemiseks mõistlik kasutada arendusvahendi sisemisi funktsioone. Arendaja reaktsioon on muidugi "mis siis on" "töötab nii ka" ja "kõik on harjunud seda funktsionaalsust kasutama". Minu teoreetilised teadmised arendusmetoodikate ja heade tavade kohta pole paraku piisavad, et talle adekvaatselt seletada miks nii tegema ei peaks. Või peaks lihtsalt käega lööma? Tõepoolest töötab ju nii ka?

küsitud Aug 02 '11 at 10:37

Offf's gravatar image

Offf
11223

edited Sep 25 '11 at 21:14

Rene%20Saarsoo's gravatar image

Rene Saarsoo ♦♦
1.1k101121


Iga vähegi pikemat aega kasutuses olnud süsteem on täis selliseid asju ja 5 aastat hiljem avastad, et oled ka ise siin ja seal üle nurga lasknud. Mida sellisel juhul teha?

  1. Kirjelda probleem ja selle potentsiaalsed tagajärjed veahaldussüsteemis veana (te ju ikka kasutate veahaldusüsteemi?).
  2. Tõsta teema üles järgmise arendusiteratsiooni planeerimise koosolekul (te ju ikka kasutate iteratiivset arendusmetoodikat?).
  3. Mõned vead ei väärigi parandamist, mitte kohe. Olen kindel, et järgmise aasta jooksul (hiljemalt 2015) satub ette mingi situatsioon, mille puhul antud koodi ümberkirjutamine teeb lihtsamaks mingi kasutajale olulise funktsiooni realiseerimise või parandab olulise vea. Voila - Sul ongi konks käes oma unetust põhjustava koodi ümberkirjutamiseks.
link

vastatud Aug 02 '11 at 15:50

Tambet%20Matiisen's gravatar image

Tambet Matiisen ♦♦
77791125

1

Aitäh, Tambet. Kirjeldan selle veahaldussüsteemis veana ja jätan selle kondi edaspidi arendajale järada. Vähemalt olen ma viidanud, et "nii ikkagi ei sobi" ja edasine on arendajate endi otsustada.

(Aug 02 '11 at 17:19) Offf

On mõeldav kombinatsioon päringukeelest, andmemassiivist ja ekspert-lõppkasutajast, kellel on 80-veerulise pea asemel kartesiaanpea, mis on võimetu harjuma ajamärke mingisugusel teisel, isegi SQLi date/time vahenditega töötlema. Sel puhul on lokaalselt olulisem antipattern selles, et arendaja ei suuda lahti selgitada, mis värk põikpäise lõppkasutajaga on ja ei ole ära dokumenteerinud, et 2015. aasta paiku rakendus katki läheb.

Nüüd, kui kasutaja on ära õigustatud (kuupäevaformaat on reetlik ;) ), teistpidi ka. Aastate/kuude/päevade rehkendamine on oma olemuselt protseduuriline töö ning viisakas arhitektuuris selliseid tabeleid ei tehta. Eestikeelseid kvartalilühendeid ka viisakas arhitektuuris andmetabeli sisse ei kirjutata. Ja viisakas arhitektuuris hoitakse ajamärke ajamärgi-, mitte stringitüüpi veergudes, mille positiivsete omaduste hulka kuulub muuhulgas see, et mootor oskab nende ajamärkidega teha mingisuguseid rehkendusi, näiteks välja arvutada, mitu päeva 1995. aasta algusest möödas on. Negatiivne omadus on muidugi, et müstilise süsteemiga liidestamisel võib ajamärki olla tarvis konverteerida, aga mõistlikult korraldatud arendustegevuse korral on see triviaalsus, mille positiivsed omadused kuhjaga üles kaaluvad.

Ja viisakas organisatsioonis ei ole "töötab nii ka" legitiimne abstraktsioonitase konstruktiivse kriitika tagasi lükkamiseks. Vähemalt triage'i võiks ikka ära pidada ja jälje maha jätta, et vaialised X, Y ja Z on küsimuse läbi arutanud ja leidnud, et kõnealuse projekti kontekstis oleks parandamisest saadav tulu väiksem kui andmemudeli muutmisele ja põikpäise kasutaja Q ümberkoolitamisele tehtavad kulutused. Kui 2016. aastal süsteemi pangestumisest miljonieuroline kahju sigineb, siis saab süsteemihaldur tõendada, et mitte tema ei ole süsteemi kehvasti hallanud vaid vaialised hindasid miljoni euro kaotuse riski tuhande euro kokkuhoidmise nimel aktsepteeritavaks.

link

vastatud Aug 02 '11 at 14:44

dig's gravatar image

dig
17415

Alustades vastuse "nii töötab ju ka" aktsepteerimisega ja samm-sammult allapoole langedes võib lõpuks igasugust jama läbi lasta. Näiteks, milleks siis üldse tabeli veergudele nimesid panna, kui numbrid töötavad sama hästi jne.

Andmebaasi enda võimaluste kasutamise seisukoha toetuseks lisan järgmised (triviaalsed) argumendid: 1. väheneb rakendust moodustava koodi hulk, millest omakorda järelduvad väiksemad arendus ja testimiskulud. 2. standardsed kuupäeva ja kellaaja väljad on arendusvahendite poolt toetatud, millega omakorda vähenevad arenduskulud veelgi. Kui neid asjaolusid välja tuua, on mõistlik otsida välja viide ka mõnele asjalikule programmeerimisõpikule (võib-olla ka sqli käsiraamatule), sest niiviisi saad võimalikud vastuväited suunata endast mööda autoriteetsete õpikute autorite pihta. Kas Stroustrup on tõesti loll ja eksis nii lihtsas asjas? Pigem mitte. Ma ise ei oska hetkel kahjuks viiteid anda, võib-olla mõni targem aitab.

Administreerimise koha pealt tekib ka kohe küsimus, et mis siis saab, kui programmi vea tõttu on andmed eri veergudes omavahel vastukäivad (esimeses tabelis võib nii juhtuda aastaga). Kas on selle kohta juhendid olemas või annab programmi tootja äkki garantii, et nii ei juhtu kunagi?

link

vastatud Aug 02 '11 at 21:49

Andrei%20Errapart's gravatar image

Andrei Errapart
462

Sinu vastus
lülita eelvaade

Jälgi seda küsimust

By Email:

Pärast sisselogimist saad tellida muudatuse teavitusi siit

By RSS:

Answers

Answers and Comments

Markdown Basics

  • *kaldkiri* või __kaldkiri__
  • **paks kiri** või __paks kiri__
  • link:[tekst](http://url.com/ "pealkiri")
  • pilt?![alt tekst](/path/img.jpg "pealkiri")
  • nummerdatud nimekiri: 1. Foo 2. Bar
  • to add a line break simply add two spaces to where you would like the new line to be.
  • põhilised HTML märgendid on samuti toetatud

Pinu tööpakkumised

kõik pakkumised »

Küsimuse sildid:

×10
×3
×1

küsitud: Aug 02 '11 at 10:37

nähtud: 3,232 korda

viimati uuendatud: Sep 25 '11 at 21:14

Litsents: Creative Commons Attribution License | Kontakt: info@pinu.ee