Dessa snabba tips diskuterar några av de vanligaste Java shorthand teknikerna du kommer att stöta på när du börjar i Android utveckling.
Du hittar de här småkodssnabbarna - som vi kallar Java-shorthand-används i Android SDK-provkoden, och nästan alla Android-utvecklingsböcker som publicerats för tillfället, för att inte tala om online-handledning och utvecklingsforum. Ingen av dessa tips är Android-specifika; de är helt enkelt Java tekniker som rutinmässigt confound nybörjare nya till Java och Android, baserat på de e-postmeddelanden vi får från våra läsare.
Många utvecklare gillar deras kod kort och lätt att läsa. Liksom några andra programmeringsspråk innehåller Java unika operatörer för att enkelt öka och minska de variabla värdena med 1.
Med andra ord,
int-räknare = 1; räknare ++; disken--;
Denna kod motsvarar:
int-räknare = 1; räknare = räknare + 1; counter = counter - 1;
Dessa unary operatörer kan visas före (prefix) eller efter (postfix) variabeln. Operatörens position dikterar huruvida inkrement / minskningsoperationen sker före eller efter att resten av uttrycket utvärderas. Till exempel visar följande kod hur unary operatörer arbetar genom att manipulera en variabel som kallas räknare med hjälp av Android-loggning:
int-räknare = 0; Log.i (DEBUG_TAG, "Räknarvärdet är =" + räknare ++); // utskrifter 0 Log.i (DEBUG_TAG, "Räknarvärdet är =" + räknaren); // skriver 1 Log.i (DEBUG_TAG, "Räknaren är =" + räknare--); // skriv ut 1 Log.i (DEBUG_TAG, "Räknvärdet är =" + räknaren); // utskrifter 0 Log.i (DEBUG_TAG, "Räknarvärdet är =" + (++-räknaren)); // skriver 1 Log.i (DEBUG_TAG, "Räknaren är =" + - räknaren); // utskrifter 0
Java-utvecklare undviker generellt att skapa variabler som de inte verkligen behöver. Detta gäller särskilt tillfälligt ellertemp ,variabler som används en gång för att lagra resultatet av ett uttalande, bara att överges.
Istället använder Java-utvecklare ofta bara uttalandet som ska utvärderas som "resulterande"? värdera sig själv. Detta ses ofta när det gäller att returnera uttalanden, men du ser det också på andra ställen. Till exempel använder följande verbose metod en "temp" -variabel som kallas summa för att lagra summan av två heltal och returnerar sedan detta värde:
int sumVerbose (int a, int b) int temp = a + b; returtemperatur
Många Java-utvecklare skulle helt enkelt hoppa över överhuvudet och krångel med att skapa tempvariabeln och bara utvärdera uttalandet som en del av returräkningen, så här:
int summa (int a, int b) return (a + b);
Denna stil gäller för fall där tempvariabeln bara används en gång. Om metoden inkluderade ytterligare operationer på det värdet är det vanligtvis klokt att använda en välkänd variabel för kodläsbarhet. Dessutom ser du ofta mer? Verbose? kodande stil i kod som har många felsökningsfunktioner.
Du kommer ofta att se Java-metoder ihop. Ofta kallas dessa metoder på förekomsten av den aktuella klassen (dvs. detta nyckelord). På samma sätt som ovan beskrivna tips används returvärdena för varje metod endast för att få tillgång till en underliggande metod. Därför lagras returvärdet inte i ett behållarvärde, istället kallas den underliggande metoden bara. Till exempel:
InputStream är = getResources (). OpenRawResource (R.drawable.icon);
Denna kod är logiskt ekvivalent med följande:
Resurser myAppResources = this.getResources (); InputStream är = myAppResources.openRawResource (R.drawable.icon);
Ett villkorligt uttalande som du kommer att se kommer att använda Java: s ternära operatörsstöd. Detta är ett kortfattat sätt att utforma ett enkelt If-Else-uttalande med ett villkorligt uttalande (som eventuellt inte kan inkapslas inom parantes), följt av ett frågetecken (?), Då ett uttalande som inträffar om villkoret är sant, då ett kolon (:) och ett annat uttalande som ska inträffa om villkoret är falskt.
Här är ett exempel på en ternär operatör som används:
int lowNum = 1; int högNum = 99; int largerNum = lowNum < highNum ? highNum : lowNum;
Detta är den logiska ekvivalenten av följande, mycket längre kod kod:
int largerNum; if (lowNum < highNum) largerNum = highNum; else largerNum = lowNum;
Denna typ av Java shorthand är egentligen bara lämplig när ditt If-Else-uttalande är enkelt. Du kommer ibland att se utvecklare cram mycket logik i en av dessa uttalanden; Vi rekommenderar inte detta. Använd bara ternära operatörer när de gör din kod lättare att läsa, inte svårare.
I Java kan du ha tomma uttalanden helt enkelt genom att avsluta en tom kodlinje med sin semikolon. Det här tricket används ofta för att specificera för () loop conditionals för att skapa en oändlig slinga, så här:
för (;;) // Gör något över, och över, och om igen.
Var och en av för () loop-komponenterna är ett tomt uttalande. Detta utvärderas för att vara sant och därför fortsätter slingan på obestämd tid. Som med någon koddesign, se till att oändliga loopar du skapar har rimliga exitfall.
Det kan vara frustrerande när utvecklare som är nykomna till Java möter konstig kodsyntax på sin första dag som arbetar med Android-syntax som normalt inte omfattas av den typiska "Master Everything in Java in 20 Minutes" handledning. Nu vet du vad några av dessa? Stenografi? tricks ser ut, och vad de menar. Oavsett om du använder dem själv är det upp till dig, men åtminstone kommer de inte att förvirra dig när du ser dem i provkod! Lycka till och gärna dela med dig av din favoritkorthandels Java-kod som du stöter på i kommentarsektionen!
Mobila utvecklare Lauren Darcey och Shane Conder har medverkat flera böcker om Android-utveckling: en fördjupad programmeringsbok med titeln Android Wireless Application Development och Sams TeachYourself Android Application Development inom 24 timmar. När de inte skriver, spenderar de sin tid på att utveckla mobil mjukvara hos sina företag och tillhandahålla konsulttjänster. De kan nås via e-post till [email protected], via deras blogg på androidbook.blogspot.com, och på Twitter @ androidwireless.