Yhteyksiä muihin 3, tässä osa 4 Mielenkiintoista tietoa Virtuaalimetodeista C:ssä Tämä on todella mielenkiintoista tavaraa (no, luulen, että se on!).... tässä osio "Sopimukset" ja virtuaaliset menetelmät...Java-bitti on niin totta!
Mitä tarkoitat tulevilla ja lähtevillä sopimuksilla?
Anders Hejlsberg: Saapuva sopimus on se, mitä käytän kutsuessani menetelmää. Sen avulla voin miettiä, mitä minun on tehtävä, ennen kuin kutsun menetelmään ja mitä on tapahtunut sen jälkeen, kun menetelmä palaa. Eroava sopimus on se, kun ohitan menetelmän. Jos katsoo useimpia sovellusliittymiä, ne ovat itse asiassa erittäin huonoja dokumentoimaan, mitä sinun pitäisi tehdä, kun ohitat virtuaalisen menetelmän: Mitä invariantteja ennen kuin sinua kutsutaan? Mitä pitäisi olla totta? Mitä menetelmiä ei voi kutsua toteutuksesta? Ja niin edelleen. Mielestäni on hyvin vaarallista sanoa, että kaikissa menetelmissä on oletuksena sekä saapuvia että lähteviä puolia. On vaarallista luottaa siihen, että jokainen kirjoittaa hyviä dokumentteja siitä, milloin ohitetaan ja mitä variantit ovat, kun ne ovat ohittavia.
Voin osoittaa teille varsin todellisen maailman versiointiongelman, jonka näemme nyt Javan kokemuksesta. Aina kun he lähettävät uuden version Java-luokan kirjastoista, se hajoaa. Aina kun he esittelevät perusluokassa uuden menetelmän, jos jollakulla johdetulla luokalla oli samanniminen menetelmä, tämä menetelmä on nyt ohitus – paitsi jos sillä on erilainen palautustyyppi, se ei enää kasaudu. Ongelmana on, että Java ja myös C++ eivät vangitse ohjelmoijan aikeita virtuaalisuuden suhteen.
© 2026 Scott Galloway — Unlicense — All content and source code on this site is free to use, copy, modify, and sell.