Ciò che viene restituito fare quando viene utilizzato all’interno di un’istruzione if?

Che cosa significa il ritorno all’interno le istruzioni se non nel codice seguente?

public void startElement(String namespaceURI, String localName,String qName, 
                                         Attributes atts) throws SAXException
{
    depth++;
    if (localName.equals("channel"))
    {
        currentstate = 0;
        return;
    }
    if (localName.equals("image"))
    {
        //record our feed data - you temporarily stored it in the item :)
        _feed.setTitle(_item.getTitle());
        _feed.setPubDate(_item.getPubDate());
    }
    if (localName.equals("item"))
    {
        //create a new item
        _item = new RSSItem();
        return;
    }
    if (localName.equals("title"))
    {
        currentstate = RSS_TITLE;
        return;
    }
    if (localName.equals("description"))
    {
        currentstate = RSS_DESCRIPTION;
        return;
    }
    if (localName.equals("link"))
    {
        currentstate = RSS_LINK;
        return;
    }
    if (localName.equals("category"))
    {
        currentstate = RSS_CATEGORY;
        return;
    }
    if (localName.equals("pubDate"))
    {
        currentstate = RSS_PUBDATE;
        return;
    }
    //if you don't explicitly handle the element, make sure you don't wind 
           //up erroneously storing a newline or other bogus data into one of our 
           //existing elements
    currentstate = 0;
}

Non ci porta fuori di se la dichiarazione e si procede alla successiva dichiarazione o ci vuole il metodo startElement?

  • Sembra che tutte le risposte qui sono stati inviati nello stesso tempo e stesso contenuto!
InformationsquelleAutor uniquesupri | 2011-09-12



8 Replies
  1. 16

    I rendimenti del codice di cui sopra, vi porterà fuori del metodo.

    • Vorrei anche far notare che tutto questo lo fa con la riga in cui il ritorno è effettuato. Nessuno di codice, sotto la linea viene eseguito
  2. 9

    Non ci porta fuori di se la dichiarazione e procede alla prossima
    istruzione o ci vuole il metodo startElement?

    Ti porta fuori del metodo..
    L’istruzione return termina l’esecuzione di una funzione

  3. 2

    restituirà ciò che è dichiarato nel metodo la testa (qui void = nulla = sarà solo la fine del metodo)

  4. 0

    Il ritorno qui è probabilmente usati per “migliorare” le prestazioni del metodo, in modo che altri confronti non sono eseguite, una volta che il bisogno di scenario viene eseguita.

    Tuttavia, non è una buona pratica per avere più punti in un metodo.

    Come detto nei miei commenti mi piacerebbe provare un approccio diverso per ottenere il flusso del codice in questione.

    • -1 chi dice Che non è una buona pratica per avere più punti? Va bene, purché non ci sono anche molti)
    • Ci sono molti dibattiti su internet per quanto riguarda più punti di uscita in funzione. Tuttavia nella mia piccola esperienza ho avuto un sacco di problemi in fase di debug con il metodo di ritorno dichiarazioni sparse in tutta la sua portata. In questo caso, la dichiarazione di ritorno sono 7 e definire il flusso del metodo.
    • Effettivamente, hai ragione… c’è sono troppi restituisce. Se si modifica la risposta, io rimuovere il mio downvote (non è possibile rimuovere se non si modifica il tuo post – basta aggiungere un punto o qualcosa, qualsiasi modifica mi permette di rimuoverlo, ma io sono bloccato fino a quando si fa)
    • Vorrei dire un grande metodi, invece, dovrebbe non avere più punti di raccolta. E ‘ più sicuro con i più piccoli metodi poiché è più facile da comprendere in una rapida occhiata cose che devono essere deinitialized prima di tornare.
  5. 0

    Il ritorno si concluderà il flusso del metodo, ed è funzionalmente identico all’uso di un breve else if catena come

    /* if (localName.equals("channel")) {
        currentstate = 0; //This can be removed because it's the default below.
    } else */ if (localName.equals("image")) {
        //record our feed data - you temporarily stored it in the item :)
        _feed.setTitle(_item.getTitle());
        _feed.setPubDate(_item.getPubDate());
    } else if (localName.equals("item")) {
        //create a new item
        _item = new RSSItem();
    } else if (localName.equals("title")) {
        currentstate = RSS_TITLE;
    } else if (localName.equals("description")) {
        currentstate = RSS_DESCRIPTION;
    } else if (localName.equals("link")) {
        currentstate = RSS_LINK;
    } else  if (localName.equals("category")) {
        currentstate = RSS_CATEGORY;
    } else if (localName.equals("pubDate")) {
        currentstate = RSS_PUBDATE;
    } else {
        currentstate = 0;
    }

Lascia un commento