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.