Come trovi il modo più ottimizzato per scrivere codice? [chiuso]

3

Nella mia carriera di programmatore, ho scritto Java e PHP, Javascript e un po 'di Ruby. Non sono un CS senior, ma sono entrato nello sviluppo del web da un più ampio corso di professionisti di Internet Professional, incentrato su Design, User Experience e Development. Ho iniziato come sviluppatore front-end e rapidamente ho ottenuto ottimi lavori lavorando su applicazioni complesse che, una volta imparato il mondo del front-end, ho avuto l'opportunità di diventare un ingegnere software per i progetti perché ho capito il sistema e ho potuto capire come programmarlo per fare ciò che voglio.

Ovviamente lavoro con la maggior parte degli altri laureati in CS e, mentre potrei essere più veloce nel capire come realizzare l'applicazione su cui stiamo lavorando, di solito capiscono meglio i concetti di base.

Detto questo, ci sono ovviamente documenti di linguaggio là fuori per Java e PHP, ma quali risorse ci sono che ti dicono le migliori pratiche per scrivere codice ottimizzato. Leggere quei documenti non è abbastanza buono per essere in grado di scrivere codice e quindi mostrare persone come alcuni di voi e non avere un mucchio di "perché non l'hai fatto" o "Non posso credere che non l'abbia fatto . "

Ci sono molti blog là fuori ma trovi solo un articolo qua e là da una persona che si concentra sulla spiegazione di come scrivere un codice migliore. O forse ho torto, non penso nemmeno che sto spiegando questa domanda in modo chiaro. Il mio problema principale è che posso scrivere il codice per farlo funzionare, penso che sia scritto bene ma non ne sono sicuro. Oltre a far funzionare il tuo codice come sai che lo hai scritto nel modo preferito quando gli altri lo guardano, dicono a se stessi, questo ragazzo sa cosa sta facendo :). Se qualcuno ha risorse linguistiche specifiche in questo momento preferirei PHP, poiché è quello su cui sto lavorando.

    
posta dan.codes 22.01.2011 - 19:27
fonte

3 risposte

17

Ci sono due tipi di ottimizzati che devi assicurarti di capire separatamente:

  • Ottimizzato per rendimento
  • Ottimizzato per leggibilità, riutilizzo e manutenibilità

Avere queste due sovrapposizioni al 100% è probabilmente piuttosto raro. La maggior parte delle persone considererebbe il codice migliore semplicemente la combinazione ottimale dei due.

Prestazioni

Per capire come ottimizzare le prestazioni, ho trovato che il modo migliore è semplicemente iniziare a imparare come funzionano la lingua e le librerie . Ad esempio, i tuoi colleghi di CS probabilmente hanno imparato molto tempo fa che un ArrayList utilizza un array per l'archiviazione e, poiché gli array sono di lunghezza fissa, deve esserci un qualche tipo di operazione che copia l'array in un nuovo array quando aggiungi un elemento Confrontalo con un LinkedList dove aggiungere un elemento non è più costoso che trovare l'ultimo elemento e assegnare un riferimento. (Questo è un esempio di base, potresti già saperlo).

Alcune altre cose buone da comprendere sull'interno di, in Java, sono HashMaps, StringBuilder vs. String (mutabile vs. immutabile), synchronized , I / O e se si sta lavorando sul web, Servlet e librerie correlate. La cosa più importante è avere una veramente buona conoscenza di come Java usi la memoria e come controllare i riferimenti e limitare la creazione di oggetti.

In PHP e JavaScript l'obiettivo sarà simile ma con contenuti diversi. (Non limitato a :) PHP: richiede il ciclo di vita e la comprensione delle prestazioni di require / include. JavaScript - La gestione degli eventi (collocare gli eventi dove non sono necessari o non pulire gli eventi non utilizzati) è la più grande fonte di problemi di prestazioni che conosca.

Leggibilità, riutilizzo, manutenibilità

Si tratta di capire DRY ( Non ripeterti ), Separazione delle preoccupazioni , "Non avrai bisogno " e altri principi di refactoring e architettura.

Per questo, i suggerimenti e i libri di @Developer Art come Clean Code aiuteranno molto. L'esperienza è anche molto importante qui. Potresti effettivamente avere un vantaggio sui tuoi pari CS in quest'area.

Codice migliore?

Come ho detto prima, la parte più importante del codice ottimizzato globale è ricordare di pensare sia alle prestazioni che alla leggibilità / manutenibilità. Se quell'ultimo bit di miglioramento delle prestazioni arriva al costo di un blocco di codice completamente illeggibile, è probabilmente non ne vale la pena (in alcuni casi, quando si hanno problemi di dimensioni massicce, potrebbe essere - con abbondanti gli appunti!). D'altra parte, se il codice "bello" non è affatto efficiente, non è proprio così bello.

Per te, il mio miglior suggerimento sarebbe quello di ottenere sotto le copertine delle lingue che stai utilizzando e iniziare a capire le strutture di base dei dati. Se hai domande specifiche su questi, Stack Overflow è ovviamente una risorsa inestimabile.

    
risposta data 22.01.2011 - 20:05
fonte
2

Esistono principalmente due fonti di miglioramento:

1. Ottieni un feedback diretto, cioè il tuo codice viene revisionato. Da parte di chi è un'altra questione. Forse dai tuoi colleghi (recensioni di codici, coppie di programmi, ecc.) O lo metti online da qualche parte e ricevi feedback da persone intelligenti online.

2. Impara come fare le cose giuste per esempio quindi applicalo alla tua pratica. Leggi libri, blog, guarda domande e risposte su StackOverflow e osserva come le persone risolvono problemi comuni. Dopo un po 'ti rendi conto di ciò che è considerato una buona pratica per una serie di situazioni familiari.

Se 1 non è disponibile e non trovi 2 per il tuo caso particolare:

3. Fai una prima proposta per affrontare il problema (algoritmo, decisione di architettura, ecc.) e poi ottenere feedback e suggerimenti sul modo giusto di farlo.

Per le migliori pratiche di scrittura del codice in una determinata lingua, consulta i libri specializzati.

Per le migliori pratiche in materia di decisioni architettoniche, dai uno sguardo ai comuni modelli di design , quindi guardali e riconoscili nel codice su cui stai lavorando o inciampando.

Un'altra grande fonte è la tua pratica. Fai la tua ipotesi, lo fai e poi vedi cosa succede. Dopo aver attraversato una serie di esperienze di conseguenze decisionali (specialmente a lungo termine) capisci da solo che cosa è una buona pratica in una situazione.

    
risposta data 22.01.2011 - 19:38
fonte
1
  • Guarda il codice del tuo collega e fallo li recensiscono anche se non lo sono un requisito formalizzato. Spero che ci sia qualcuno che ti sta meglio in qualcosa.
  • Rispondi alle domande su Stackoverflow con i tuoi campioni di codice.
  • Partecipa con un open source progetto.
risposta data 22.01.2011 - 22:33
fonte

Leggi altre domande sui tag