Deze snelle tips bespreken enkele van de meest voorkomende Java-stenotypetechnieken die je tegenkomt als je aan de slag gaat in Android-ontwikkeling.
Je zult deze kleine code-tidbits - die we Java steno noemen - in de Android SDK-voorbeeldcode gebruiken, en zowat elk Android-ontwikkelingsboek dat op dit moment is gepubliceerd, om maar te zwijgen van online tutorials en ontwikkelaarsforums. Geen van deze tips is Android-specifiek; het zijn gewoon Java-technieken die beginnelingen nieuw voor Java en Android verwarren, gebaseerd op de e-mails die we van onze lezers ontvangen.
Veel ontwikkelaars houden van hun code, kort en gemakkelijk te lezen. Net als sommige andere programmeertalen, omvat Java ook unaire operatoren voor het eenvoudig verhogen en verlagen van variabele waarden met 1.
Met andere woorden,
int-teller = 1; teller ++; teller--;
Deze code is gelijk aan:
int-teller = 1; teller = teller + 1; teller = teller - 1;
Deze unaire operatoren kunnen vóór (prefix) of na (postfix) de variabele verschijnen. De locatie van de operator bepaalt of de increment / verlagingsbewerking plaatsvindt voordat of nadat de rest van de expressie is geëvalueerd. De volgende code laat bijvoorbeeld zien hoe unaire operatoren werken door een variabele genaamd counter te manipuleren met behulp van Android-logging:
int-teller = 0; Log.i (DEBUG_TAG, "De tellerwaarde is =" + counter ++); // prints 0 Log.i (DEBUG_TAG, "De tellerwaarde is =" + teller); // prints 1 Log.i (DEBUG_TAG, "De tellerwaarde is =" + teller--); // prints 1 Log.i (DEBUG_TAG, "De tellerwaarde is =" + teller); // prints 0 Log.i (DEBUG_TAG, "De tellerwaarde is =" + (++ teller)); // prints 1 Log.i (DEBUG_TAG, "De tellerwaarde is =" + - teller); // prints 0
Java-ontwikkelaars vermijden meestal variabelen te maken die ze niet echt nodig hebben. Dit geldt vooral voor tijdelijk, oftemp ,variabelen die één keer worden gebruikt om het resultaat van een verklaring op te slaan, maar die alleen worden opgegeven.
In plaats daarvan gebruiken Java-ontwikkelaars vaak de verklaring die moet worden geëvalueerd als de? -Uitkomst? waarde zelf. Dit wordt vaak gezien als het gaat om terugkerende verklaringen, maar je zult het ook op andere plaatsen zien. De volgende uitgebreide methode gebruikt bijvoorbeeld een "temp" -variabele genaamd sum om de som van twee gehele getallen op te slaan en retourneert vervolgens deze waarde:
int sumVerbose (int a, int b) int temp = a + b; terugkeer temp;
Veel Java-ontwikkelaars zouden eenvoudigweg de overhead en het gedoe van het maken van de tijdelijke variabele overslaan en de bewering gewoon evalueren als onderdeel van de retourverklaring, zoals deze:
int sum (int a, int b) return (a + b);
Deze stijl geldt voor gevallen waarin de variabele temp slechts één keer wordt gebruikt. Als de methode verdere bewerkingen op die waarde bevat, is het meestal verstandig om een welbekende variabele te gebruiken voor codele leesbaarheid. Bovendien zult u vaak meer zien? codeerstijl in code met veel functies voor foutopsporing.
Je ziet vaak Java-methoden aan elkaar geketend. Vaak worden deze methoden aangeroepen op de instantie van de huidige klasse (dus de deze zoekwoord). Net als bij de hierboven besproken tip worden de retourwaarden van elke methode alleen gebruikt om toegang te krijgen tot een onderliggende methode. Daarom wordt de retourwaarde niet opgeslagen in een containerwaarde, maar wordt de onderliggende methode zojuist aangeroepen. Bijvoorbeeld:
InputStream is = getResources (). OpenRawResource (R.drawable.icon);
Deze code komt logisch overeen met het volgende:
Bronnen myAppResources = this.getResources (); InputStream is = myAppResources.openRawResource (R.drawable.icon);
Eén voorwaardelijke verklaring die u waarschijnlijk zult zien, zal Java's ternaire operatorondersteuning gebruiken. Dit is een afkorting voor het ontwerpen van een eenvoudige If-Else-instructie met behulp van een voorwaardelijke verklaring (die al dan niet tussen haakjes kan worden ingekapseld), gevolgd door een vraagteken (?) En vervolgens een instructie als de voorwaarde waar is, dan een dubbele punt (:) en een andere instructie die voorkomt als de voorwaarde niet waar is.
Hier is een voorbeeld van een ternaire operator in gebruik:
int lowNum = 1; int hoogNum = 99; int largerNum = lowNum < highNum ? highNum : lowNum;
Dit is het logische equivalent van het volgende, veel langere codefragment:
int largerNum; if (lowNum < highNum) largerNum = highNum; else largerNum = lowNum;
Dit soort Java-steno is eigenlijk alleen maar geschikt als je If-Else-verklaring eenvoudig is. Soms zie je ontwikkelaars veel logica in een van deze uitspraken proppen; we raden dit niet aan. Gebruik alleen ternaire operatoren wanneer ze uw code leesbaarder maken, niet moeilijker.
In Java kunt u lege instructies hebben door simpelweg een lege regel code af te sluiten met de puntkomma. Deze truc wordt vaak gebruikt om te specificeren voor () loop conditionals om een oneindige lus te maken, zoals deze:
for (;;) // Doe iets over, en opnieuw en opnieuw.
Elk van de for () luscomponenten is een lege instructie. Dit evalueert waar te zijn en daarom gaat de lus voor onbepaalde tijd door. Zoals met elk ontwerp van de code, moet u ervoor zorgen dat eventuele oneindige lussen die u maakt redelijke exit-cases hebben.
Het kan frustrerend zijn wanneer ontwikkelaars die nieuw zijn in Java vreemde codesyntaxis tegenkomen op hun eerste dag met Android-syntaxis die normaal niet wordt behandeld in de standaard? Master Everything in Java in 20 minuten? tutorial. Weet je wat sommige van deze? Steno? trucs eruit zien, en wat ze betekenen. Of je ze zelf gebruikt of niet, is aan jou, maar ze zullen je in ieder geval niet verwarren wanneer je ze in de voorbeeldcode ziet! Veel succes en voel je vrij om enkele van je favoriete Shorthand Java-code die je tegenkomt ook te delen in het commentaargedeelte!
Mobiele ontwikkelaars Lauren Darcey en Shane Conder hebben samen meerdere boeken geschreven over Android-ontwikkeling: een diepgaand programmeerboek getiteld Android Wireless Application Development en Sams TeachYourself Android Application Development binnen 24 uur. Wanneer ze niet schrijven, besteden ze hun tijd aan het ontwikkelen van mobiele software bij hun bedrijf en het leveren van consultingservices. Ze zijn te bereiken via e-mail naar [email protected], via hun blog op androidbook.blogspot.com, en op Twitter @androidwireless.