Abstraktion inversio
Abstraktioinversio on ohjelmistomoduulin suunnitteluvirhe , kun jotkin yksinkertaiset, mutta tarpeelliset toiminnot suljetaan käyttäjältä monimutkaisessa moduulissa . Tämän seurauksena moduulin käyttäjä joutuu toteuttamaan yksinkertaisia moduulirajapintaan perustuvia toimintoja, joissa käytetään joskus dokumentoimattomia ominaisuuksia ja sivuvaikutuksia, kun se on jo toteutettu moduulin sisällä. Toisin sanoen alemman tason funktioiden toteuttaminen korkean tason funktioiden pohjalta, mistä termi "abstraktioinversio" tulee.
Seuraukset
- Abstraktioinversiolla toteutetulla funktiolla voi olla odottamattoman korkeat muisti- ja laskenta-aikavaatimukset.
- Käyttäjien on kirjoitettava, mikä on jo kirjoitettu, mikä lisää virheiden riskiä.
Kuinka ohittaa
Moduulien kehittäjät:
- Jos moduulilla on samanlaisia toimintoja (kuten kriittinen osa ja mutex ), mieti huolellisesti mitä kirjoittaa tyhjästä ja mitä tehdä " kääreenä ".
- Älä pakota käyttäjiä kirjoittamaan mitä olet kirjoittanut.
Moduulin käyttäjät:
- Valitse moduulin versio. Joskus ongelma ilmenee vain uudemmassa versiossa.
Termin väärinkäyttö
- Tämä sana viittaa virheellisesti monimutkaiseen moduuliin, jossa on yksinkertainen käyttöliittymä (mikä on yleensä toivottavaa).
- Joskus se ripustetaan "tarraksi" ei-tykättyyn arkkitehtuuriin.
Esimerkkejä
- Olio -ohjelmointikielissä yksinkertaiset konstruktit on toteutettava monimutkaisilla tavoilla. Jos esimerkiksi haluat luoda säikeen Javassa , sinun on sisällytettävä käyttöliittymä Runnableja ohitettava run(). Joskus tämä on ainoa selitys luokalle.
- Monissa Windowsin grafiikkakirjastoissa paletti toteutetaan WinAPI :n kautta (vaikka WinAPI-kirjastoa ei käytettäisi). Tässä tapauksessa voi olla ongelmia luotaessa paletteja, joissa on lähes 256 väriä (koska Windows varaa paletista muutaman värin omaan käyttöönsä).
Muistiinpanot
Kirjallisuus
- Alan Burns, Andy Wellings. Samanaikainen ja reaaliaikainen ohjelmointi Adassa. - Cambridge University Press, 2007. - s. 253.
Linkit