Come può un programmatore sapere se deve programmare un metodo o cercarlo in una libreria? [chiuso]

6

Sono un programmatore principiante in Java. E di fronte a un nuovo compito mi chiedo se dovrei codificare la funzione o cercarla.

Ad esempio, se voglio calcolare 10! o cos A, ritengo che ci sia una funzione matematica da qualche parte, e che sia meglio cercarla invece di provare a codificare la funzione.

Ma se fosse qualcosa di più esotico? Come posso sapere se dovrei investire il mio tempo a cercare o codificare?

    
posta Pierre B 03.09.2016 - 00:40
fonte

5 risposte

7
  1. Cerca nella documentazione ufficiale di Java .
  2. Non c'è fortuna lì? Quindi vai su Stackoverflow e inserisci [java] Thing I want to do nella barra di ricerca. La risposta più votata alla prima domanda che troverai probabilmente conterrà come farlo usando la libreria standard o facendola da sola.
  3. Nessuna domanda del genere? Forse qualcuno l'ha appena descritto in modo diverso. Prova a parafrasare la query di ricerca utilizzando parole diverse. Oppure usa Google. Quando aggiungi site:stackoverflow.com alla query di ricerca di Google, ottieni solo risultati da stackoverflow. La ricerca di Google è spesso di gran lunga superiore alla funzione di ricerca integrata di molti siti Web, incluso StackExchange.
  4. Anche Google non riesce a trovare nulla di utile su Stackoverflow? Complimenti, sembra che tu sia riuscito a trovare qualcosa ancora non menzionato in oltre un milione di domande Java. Questo è più probabile che essere colpito da un fulmine mentre vincendo la lotteria. È ora di scrivere una nuova domanda.
  5. Stackoverflow non può o non ti aiuterà? Quindi sembra che veramente abbia trovato un problema unico e complesso che dovrai risolvere da solo.
risposta data 03.09.2016 - 02:34
fonte
2

C'è un po 'di più rispetto alla semplice ricerca di una libreria.

Diciamo che vuoi fattorico. Il buon senso dice che factorial è abbastanza standard, quindi c'è un'alta probabilità di trovare qualcosa.

Quindi, hai cose che non sono standard, ma possono essere fatte abbastanza facilmente da pezzi standard. Ad esempio, supponendo che la tangente non sia un'operazione standard, è possibile cercare una libreria che abbia sin e cos e utilizzarli per calcolare la tangente.

Ma di solito non pensi tanto se c'è una biblioteca o no. Questo è in realtà abbastanza facile da trovare su google. Qual è un problema più grande, e forse una domanda più pertinente, se dovessi usare un'altra libreria o no.

In sostanza, una nuova libreria è un'altra dipendenza di cui preoccuparsi. Diversi linguaggi e progetti di programmazione hanno un modo diverso di affrontare questo problema, ma il problema rimane ancora: vale la pena aggiungere un'enorme libreria nell'elenco delle dipendenze del progetto solo per una piccola funzione? Esiste una biblioteca più piccola e più adatta? E, probabilmente ancora più importante, quanto è ben supportata la libreria? Quali sono le possibilità che venga abbandonato?

    
risposta data 03.09.2016 - 02:31
fonte
0

Per prima cosa, cerca una funzione esistente nella libreria java. Soprattutto se sei un principiante, non dovresti mai esitare a farlo, perché è il modo migliore per memorizzare le molte soluzioni disponibili là fuori e la struttura delle librerie. Ad esempio, non è necessario reinventare cos : -)

La prossima ricerca se ci sono alcune biblioteca ben nota per farlo. Se sì, dai un'occhiata a loro. Per problemi comuni, ci sono possibilità che alcune persone lo abbiano esplorato a lungo, abbiano prodotto un codice migliore di quello che hai fatto e abbiano testato la loro soluzione un certo numero di volte.

Quindi dai un'occhiata ad alcune librerie meno conosciute, se sembra che risolva facilmente il tuo caso. Ad esempio, anche se fattoriale è semplice, è già stata eseguita molta ottimizzazione. Ma se si rivelano troppo complessi per imparare o se hai dubbi sulla qualità, scrivi il codice. Ma dai un'occhiata per vedere se ci sono alcune di queste librerie che coprono problemi frequenti nel tuo caso specifico.

Fortunatamente oggi hai Google o DuckDuckGo che accelerano significativamente questo processo esplorativo!

    
risposta data 03.09.2016 - 01:25
fonte
0

Durante la scrittura di Java, a volte ho trovato metodi o anche interi framework per risolvere i miei problemi molto più tardi. Questo non ha importanza e non mi rende triste, devo dire, perché imparo a scriverlo da solo. E c'è anche la possibilità che l'API usi molte più astrazioni di quelle effettivamente necessarie.

Investo molto tempo a cercare le classi e quindi i loro metodi nell'API Java se non li conosco già. A proposito, non perdere tempo, perché sulla tua strada impari cose nuove e la prossima volta che conosci l'esistenza di queste cose che hai già visto. I programmatori hanno di solito una buona memoria.

Se ho rinunciato a cercarlo nell'API, guardo altre cose nel mio motore di ricerca preferito usando parole chiave scelte con cura. E se non vedo risultati che risolvono il mio problema, di solito smetto di cercare, tranne se il problema è difficile. Quindi investo più tempo, perché vale la pena dedicare del tempo a questo.

Inoltre, più è lungo il tempo necessario per trovare una soluzione, più è probabile che la soluzione sia di bassa qualità (presupponendo che le parole chiave che hai scelto siano buone).

Conclusione: la ricerca di API e parti di soluzioni non è un tempo perso. Questa è una parte di un processo di apprendimento. E anche se hai perso una buona soluzione e hai implementato qualche altra soluzione da solo, è (nella maggior parte dei casi) non catastrofica.

    
risposta data 05.09.2016 - 23:09
fonte
0

La mia regola generale. Il tempo richiesto è la chiave.

Decidi in base a quale è il più veloce.

Scrivere una piccola funzione facile da codificare, testare e eseguire il debug potrebbe essere più veloce di una ricerca. Se la funzione è complessa o lunga, è probabile che sia più veloce cercare una funzione ben testata rispetto a testare e eseguire il debug della propria soluzione di codice.

    
risposta data 07.09.2016 - 02:30
fonte