Treść książki

Przejdź do opcji czytnikaPrzejdź do nawigacjiPrzejdź do informacjiPrzejdź do stopki
32
1.BiBlioteka
Stosujdługośćliniikoduniedłuższąniż80znaków.Większośćśrodowiskumożliwiawyświe-
tleniewoknieedytoraodpowiedniegomarginesuumożliwiającegotrzymaniesiętejzasady.
Nawiasyklamrowe{}zawszeotwierajizamykajwnowejlinii,wstosunkudoinstrukcji,do
którejsięodnoszą(if,for,whileitd.).Czylikrótkomówiąc,programujączwxWidgets,nie
powinieneśużywaćnawiasówklamrowychwstyluK&R9,czyliwstyluJava.Starajsięużywać
komentarzytypu//.Komentarze/**/zarezerwujjedyniedlabardzodługichkomentarzyobja-
śniającychlubkomentarzywysokiegopoziomu.WprzypadkukomentarzyDoxyGenstarajsię
jeumieszczaćwodrębnychplikach(więcejnatentematznajdzieszwdalszejczęściksiążki).
DlanadpisanychfunkcjiwirtualnychużywajmakrawxOVERRIDEzamiastsłowakluczowego
C++override.
Wszędzietam,gdziejesttokonieczne,korzystajzwartościNULL.UżycieNULLzapewnia
czytelnośćkoduijegozgodnośćznajwiększąliczbąkompilatorówiimplementacjiC++.
1.6.4.
Jakośćkodu
StarajsięunikaćrzutowaniawstyluC.ZamiasttegoużywajrzutowaniaC++,tj.static–cast,
const–castitam,gdziejesttokonieczne,reinterpret–cast.Rzutowaniedynamic–castnie
powinnobyćużywanewkodzietworzonymzużyciemwxWidgets.
Jeżeliużywaszprzełącznikaswitchoperującegonazdefiniowanychstałychtypachlubwar-
tościachwyliczeniowych,unikajużywaniawartościdefault.Zasadataniejestzbytzgodna
zzalecanymidlaprogramowaniawC++(zwłaszczawstandardziezgodnymzISO2011),jednak
koniecznaprzyprogramowaniuzwxWidgetszuwaginakwestie,októrychbyłamowawyżej.
Natylenailejesttomożliwe,unikajtworzeniaprzeciążonychfunkcjiwirtualnych.
Dlawartościlogicznychbędącychargumentamifunkcjiużywajczytelnychstałych,naprzykład
wxOpen(wxOPEN–ALL)zamiastwxOpen(true).Zauważ,żewdrugimprzypadkukontekstuży-
ciaargumentufunkcjijestcałkowicieniejasny.
1.6.5.
OgraniczeniaC++
Używaniesłownychaliasówoperatorówlogicznych(and,or,not,xoritd.)jestzabronione.
UżywaniestandardowejtechnikiC++RTTI(informacjaotypiewczasiewykonywaniapro-
gramu)jestzabronione.Zamiaststandardowegorzutowaniadynamic–castużywajwxDynamic-
Cast().PonadtowkodzietworzonymzwxWidgetszabronionejestużywanieoperatoratypeid.
BibliotekawxWidgetsmawłasnymechanizmdołączaniainformacjioklasachitypach(wxRTTI).
ZalecasięniekorzystaniewewnątrzwxWidgetszestandardowychklaspojemnikowychzbiblio-
tekistandardowejC++.Naprzykładzamiaststd::vectorzalecasiękorzystaniezwxVector.
CelemtakiegorozwiązaniajestuniezależnienieaplikacjiwxWidgetsodjakichkolwiekwpły-
wówinnychbibliotek,wtymSTLC++,atymsamymzachowaniewszelkichkoniecznych
warunkówwieloplatformowości.
PrzyprogramowaniuzwxWidgetsniekorzystasięzestandardowejobsługiwyjątkówC++.
Takistanrzeczymabezpośrednizwiązekzkonstrukcjąbiblioteki,wktórejwiększośćklas
makonstruktoryzwracającewartościodzwierciedlającestanoperacjitworzeniaodpowiednich
obiektów.PonadtowxWidgetsudostępniawewszystkichprzypadkachmożliwośćdwueta-
powegotworzeniaobiektów,wktórymfunkcjatworzącadanyobiekt(zwykleCreate())na
zadeklarowanejzmiennejlubwskaźnikuzwracawartośćlogicznąbędącąodzwierciedleniem
powodzeniaoperacji.
9
OdnazwiskBrianaKernighanaiDennisaRitchie,autorówlegendarnegojużdziełaTheCProgrammingLanguage,
wydanegoporazpierwszyw1978r.WswojejksiążceKernighaniRitchiepropagowalistylprogramowania,wktórym
nawiasyklamroweznajdowałysięwjednejliniizinstrukcjamisterującymi.Niecopóźniejzmodyfikowanąformętakiego
zapisuzastosowałrównieżBjarneStroustrup,piszącTheC++ProgrammingLanguage,którejpierwszewydanieujrzało
światłodziennew1985r.StylwprowadzonyprzezStroustrupazostałokreślonyjakowariantStroustrupkonwencjiK&R.