Nimikäytännöt
Pyyhkäise näyttääksesi valikon
Hyvät ja huonot nimeämistavat
Kuten muuttujille, myös malliparametreille voi antaa minkä tahansa nimen. Nimeämiskäytäntöjen noudattaminen parantaa kuitenkin huomattavasti koodin luettavuutta ja ylläpidettävyyttä. Tässä joitakin hyviä ja huonoja käytäntöjä pohdittavaksi.
main.cpp
1234template<typename T> // <- Actually a good naming void myTemplate() { // Function implementation }
Saatat miettiä, miksi T on parempi nimeämisvaihtoehto kuin Type, vaikka jälkimmäinen vaikuttaa selkeämmältä. Syynä on se, että T on laajasti hyväksytty käytäntö, joka tarkoittaa Type. Se ilmaisee heti, että malliparametri edustaa tyyppiä, mikä on useimmille kehittäjille tuttua. Myös U tai V ovat yleisiä, jos T on jo käytössä.
Kuvailevat nimet
Kun käytössä on useita malliparametreja eikä niiden tarkoitus ole heti ilmeinen, on hyvä käytäntö käyttää kuvailevia nimiä, jotka alkavat T-kirjaimella.
main.cpp
1234template<typename TKey, typename TValue> void map() { // Function implementation }
Jos tarkastelet joidenkin mallien dokumentaatiota, saatat huomata, että jotkut kehittäjät lisäävät alaviivan (_) tyyppiparametrin eteen tehdäkseen siitä erottuvamman. Voit ottaa tämän käytännön käyttöön myös itse. Tärkeintä on kuitenkin säilyttää johdonmukaisuus koko koodipohjassa. Valitse nimeämistyyli, josta pidät, ja pysy siinä.
Class ja typename
Sekä class että typename käytetään mallipohjien määrittelyissä. Ne ovat vaihdettavissa keskenään tässä yhteydessä.
main.cpp
12345template <class T> void first_template(T param) { /* ... */ } template <typename T> void second_template(T param) { /* ... */ }
Historiallisesti class-avainsana oli ainoa vaihtoehto malliparametrien määrittelyyn. Tämän vuoksi saatat törmätä tähän avainsanaan vanhemmassa koodissa. Nykyään mallien luomisessa suositaan kuitenkin usein typename-avainsanaa selkeyden vuoksi, joten käytämme sitä.
Kiitos palautteestasi!
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme