Javan nimeämisessa on package oleellinen käsite, koska
sillä rajoitetaan nimiavaruus omaan packageen, jonka kautta luokat ovat suoraan käytettävissä
ilman import-lauseketta.
sillä laajennetaan nimiavaruutta, eli mahdollistetaan samannimisen luokan esiintyminen useissa
packageissa.
se toimii osaltaan dokumetoivana, eli packagen/luokan tekijä paljastuu helposti package
määritelmällä.
*-importit
Ei tulisi koskaan käyttää, koska
koodi dokumentoituu myös käytettyjen luokkien avulla ja käytetyt luokat näkyvat helposti
import-lauseiden avulla.
Kun luokat importoidaan yksitellen, näkyy selvästi käytettyjen luokkien maara.
Jos luokkien määrä on suuri, voi suoraan epäillä koodissa olevan jotain mätää, koska hyvä
luokka käyttää pääsääntãisesti vain harvoja luokkia.
mahdollista samojen luokkien päällekäisyys, koska samannimisia luokkia on usein eri
pakkauksissa.
final static -määritelmät
Tulisi kirjoittaa interface-tyyppiseen luokkaan, koska
määritelmä on silloin käytettävissä useissa luokissa, eli ei tarvitse duplikoida koodia,
josta aiheutuu muutoksissa suhteellisen suuri työ.
implements-lausella vakioita sisältävän interfacen vakiot ovat suoraan käytettävissä
ilman luokkanimi.vakionimi nimeämistä, eli vakionimi nimenä riittää.
// -kommentointi
// -kommentointia tulisi käyttää vain yhden rivin kommenteissa ja silloinkin mielellään vain
rivin loppuun tuleviin kommentteihin. Käytä /* */ -kommentteja.
Javadoc-kommentoinnin puuttuminen
Kirjoita metodien ja luokkien edessä olevat kommentit Javadoc-kommenteiksi, jolloin ne
tulevat suoraan Javadocin ajamisella metodien ja luokkien dokumenteiksi.
Javadoc-kommentti on muotoa /** */
parametrointi servleteille
Tulisi tehdä servlet-parametroinnin kautta, ei final static muuttujiin.
Parametrointi tehdään siis siten, ettei koodia tarvitse kääntää uudestaan ja se toimii suoraan
kaikissa toimintaympäristöissä.
switch/case -lausekkeissa käytetään mielellään määriteltyjä vakioita
Kun määritellään vakiot, tulee vakiot oikein nimeämällä koodikin paremmin dokumentoitua
itsellään ja vältetään turhilta kommenteilta (joiden tulisi olla koodia!).
servlet-luokan käyttö
Koska servlet-luokka on käyttöliittymä, ei sen tulisi koskaan sisältää toiminnallista logiikkaa.
Toiminnallinen logiikka tulisi aina olla uudelleenkäytettävää, jolloin koodiin käytetty aika
(==investointi) tulee mahdollisimman hyvin..
Myös JUnit-testaus on helpompaa kun toiminnallinen logiikka on erillisissä testattavissa luokissa.
java.util.Date -luokkaa ei tulisi käyttää
Käytä java.util.Calendar -luokkaa. Suomessa käytetään GregorianCalendar -luokkaa.
Huomioi Locale.
JDBC:n oikea käyttö
Tehty oikein koodissa.
ResultSet, Statement ja Connection suljetaan kaikki erikseen, koska kaikissa voi olla aktiivisia
threadeja, riippuen toteutuksesta, jolloin sulkemalla vain esimerkiksi Connectionin voi koodiin
jäädä ylimääräisiä threadeja pyörimään.
Koodi näyttää helposti toimivalta mutta ei sitten toimikaan oikeassa ympäristössä, vaan lukkiutuu
kummallisesti. Lukkiutuminen aiheutuu threadien määrän kasvusta, tietokannan yhteyksien loppumisesta
tai muistin loppumisesta.
Hashtablen käyttö objektina (luokkana)
Jos Hashtablea käytetään selkeästi luokkana, kannattaa operaatiot piilottaa oman luokkansa sisään.
java.net.URL -luokkaa kannattaa käyttää
URL:ien kasaaminen tai URL:in komponenttien parsimiseen kannattaa käyttää valmista luokkaa,
sen sijaan että rakentaisi vastaavan toiminnon itse. Työ on turhaa, sekavoittaa koodia (refaktorointi
hankalampaa) ja saattaa tuottaa ylimääräisia virheitä ts. koodin luotettavuus ja toimivuus saattavat
heikentyä.
Esimerkissa luokkien käyttäminen koko nimellään
Ei ole suositeltavaa vaan luokkien importtaaminen ja käytto omalla nimellään, koska
import-lauseet dokumentoivat koodia.
muuttamalla importattuja luokkia saadaan samat luokat kätevasti vaikkapa eri paketista
tai luokka "trampoliiniksi/liimaksi" omaan pakkaukseen (trampoliiniluokan kautta käytetään
toisessa paketissa olevaa luokkaa ts. saadaan joskus tarvittava lisätoiminnallisuus aikaiseksi
ilman suurempia muutoksia tai koko luokan läpikäymistä, eikä tule mitään yllätyksiä).