Sta leggendo + modificando il codice esistente meglio di quello tuo? [duplicare]

28

Sono un programmatore inesperto. Mi è stato assegnato lo sviluppo di un plugin per Firefox senza alcuna esperienza precedente. Così ho seguito il tutorial su MDN. Ho imparato tante cose, è eccitante e travolgente allo stesso tempo.

Quando finalmente ho iniziato a programmare, ho finito per usare l'estensione che il tutorial mi ha dato e modificarlo. E dopo aver capito ci sono tonnellate di codice là fuori che praticamente fa tutto ciò che la mia estensione deve fare, ho finito per analizzare questi codici e impiantarli ai miei con alcune modifiche per soddisfare le mie esigenze ....

Quindi sì, in fondo quello che sto chiedendo è: passerà molto del tuo tempo ad osservare il codice della gente e modificarlo, facendo sì che il mio migliori le mie capacità di programmatore in generale?

    
posta rpgs_player 07.07.2014 - 10:03
fonte

6 risposte

42

Leggere il codice di altre persone è in effetti un'abitudine molto buona, poiché è il modo migliore per capire cosa c'è là fuori e con che presumibilmente la comunità dei programmatori sarà familiare. Il tuo codice deve essere comprensibile da te e da tutti gli altri che dovranno mantenerlo, quindi è importante acquisire una comprensione di ciò che è e non è leggibile - anche se leggi un codice veramente brutto esso funge ancora da contro esempio.

Per quanto riguarda il riutilizzo e l'implementazione della tua: leggere il codice di altre persone e copiarlo senza comprenderlo, nella speranza che possa soddisfare le tue esigenze, è sbagliato, perché non ti consente di imparare qualcosa.

Ma rilevare il codice esistente che fa ciò che vuoi e riusarlo è buono, perché è più efficiente della scrittura della tua versione, e trovandolo e determinando che effettivamente fa la cosa desiderata, hai dimostrato che tu potrebbe, in linea di principio, riscrivere la soluzione da sola, se necessario. Il risultato è che risparmi tempo e non perdere l'apprendimento. In effetti, la ricerca di soluzioni esistenti potrebbe persino essere il punto critico che ti insegna come fare qualcosa, in modo da imparare qualcosa di nuovo e risparmiando tempo simultaneamente.

La cartina di tornasole per copiare il codice di qualcun altro è questa: capisco cosa fa il codice e riutilizzarlo per risparmiare tempo, o sto semplicemente lanciando una versione dopo l'altra al problema fino a quando non colpisco qualcosa che funziona?

    
risposta data 07.07.2014 - 10:16
fonte
15

Leggere e usare il codice di altri popoli è un modo eccellente per imparare, tuttavia può anche essere una trappola. Non vuoi diventare un programmatore di Cargo Cult:

link

The term cargo cult programmer may apply when an unskilled or novice computer programmer (or one inexperienced with the problem at hand) copies some program code from one place and pastes it into another place, with little or no understanding of how the code works, or whether it is required in its new position.

Il test chiave è se comprendi il codice che stai utilizzando. Se dopo aver preso e modificato il codice potresti farlo se avessi bisogno di riscriverlo da zero senza far riferimento al codice che hai copiato?

Non intendo se potresti scrivere di nuovo lo stesso codice esatto, voglio dire potresti applicare lo stesso algoritmo nello stesso modo o in un modo migliore e ottenere gli stessi risultati.

Se capisci bene il codice, allora imparare dagli altri è una cosa eccellente da fare. Ma devi assolutamente capire ogni riga di codice mentre la inserisci nel tuo programma. Capisci cosa fa, come lo fa e, soprattutto, perché è lì.

    
risposta data 07.07.2014 - 12:03
fonte
7

In " La psicologia della programmazione informatica " Gerald M. Weinberg ha scritto che la programmazione è una forma di scrittura . Cosa fanno i romanzieri per diventare migliori romanzieri? Leggono un sacco di libri che sono stati scritti da bravissimi scrittori, in modo che possano imparare. L'autore è sorpreso dal fatto che i programmatori leggano così poco codice.

Come è stato scritto in altre risposte, comprendere il codice che leggiamo è essenziale per acquisire conoscenza al riguardo.

Una buona fonte per trovare il codice di alta qualità da leggere sono i vari progetti open source trovati per esempio su github o codice google. Attenzione: non tutti i progetti open source contengono codice pulito e ben scritto. Ovviamente, la quantità di questi progetti dipende strongmente dalla lingua in cui scriviamo.

    
risposta data 07.07.2014 - 12:37
fonte
3

In realtà è una buona pratica cercare soluzioni esistenti. Nel mondo degli affari ciò che conta: hai risolto il problema? E se l'hai fatto, quanto tempo ci è voluto? È una buona soluzione?

Per quanto riguarda la soluzione valida (qui: legale) come descritto in questo commento , fai sempre attenzione a ciò che è protetto da copyright, concesso in licenza e cosa non lo è. Le esercitazioni esistono per dare esempi sull'uso di un codice e, una volta applicato, servirà come base del tuo programma.

La copia di soluzioni esistenti è un metodo essenziale per accelerare il tuo lavoro. Inoltre, se non lo fai, finirai costantemente reinventando la ruota .

Man mano che acquisisci esperienza, noterai che alcune opere possono essere generate, automatizzate, generalizzate, ecc ... non c'è niente di male nel copiare il codice esistente se è efficiente, bello. Come altri hanno detto, è fondamentale capire cosa si copia e si potrebbe essere in grado di ottimizzare su di esso. Come capisci cosa stai facendo davvero, sarai in grado di fare generalizzazioni e eviterete la "Copy Paste Programming" di cui probabilmente avrete paura.

È importante sottolineare che trovare le API corrette per il tuo lavoro fa parte del lavoro di un programmatore. In realtà per utilizzare un'API e copiare un codice sono metodi di lavoro simili sotto questo punto di vista.
È una questione di gestione delle risorse, dubito che qualcuno direbbe, utilizzare un'API e risolvere un problema in 2 giorni e scrivere un nuovo codice (generalmente facendo lo stesso dell'API) in 30 giorni sono indifferenti.

    
risposta data 07.07.2014 - 14:20
fonte
2

Scoprirai che quasi l'80% delle cose che vuoi fare sono già fatte. C'è un modo di dire su questo, "Non reinventare la ruota. A meno che tu non possa farlo meglio."

Gran parte della programmazione non sta scrivendo codice, ma studiando il comportamento. Il comportamento degli utenti, il comportamento, il comportamento dei venditori, il comportamento sul posto di lavoro. La revisione del codice è una parte fondamentale in questo.

Come programmatore, non è compito tuo sapere come codificare (che è certamente una necessità, ma non è il cuore del lavoro) - il fulcro del lavoro come programmatore è essere un ricercatore. Per sapere come leggere la documentazione. Per sapere come risolvere un problema. Scoprirai che trascorri meno tempo nella codifica degli IDE rispetto a quanto fai su Google leggendo attraverso blog ed esercitazioni, sospetto.

Quindi no, non penso che questa sia una cattiva abitudine.

    
risposta data 07.07.2014 - 14:40
fonte
-1

Farò un'analogia, come imparerai meglio una lingua parlata / scritta, imparando tutte le possibili parole e strutture o leggendo / ascoltando?

Come imparano i migliori scrittori? Forse leggendo altri grandi o non così grandi scrittori.

E la terza e ultima domanda, che tipo di libri di programmazione hai letto? Non ti conosco tranne me, libri con esempi.

    
risposta data 07.07.2014 - 16:07
fonte

Leggi altre domande sui tag