Diversi modi per risolvere problemi nel codice

4

Ora programmo in C # per vivere ma prima ho programmato in Python per 5 anni. Ho scoperto che scrivo C # in modo molto diverso rispetto alla maggior parte degli esempi che vedo sul web. Piuttosto che scrivere cose come:

foreach (string bar in foo)
{
    //bar has something doen to it here
}

Scrivo codice simile a questo.

foo.ForEach( c => c.someActionhere() )

o

var result = foo.Select( c =>
                {
                    //Some code here to transform the item.
                }).ToList();

Penso che il mio uso del codice come sopra sia stato il mio amore per la mappa e la riduzione in python - mentre non esattamente la stessa cosa, i concetti sono vicini.

Ora è il momento della mia domanda. Quali concetti prendi e ti muovi da una lingua all'altra? che ti permettono di risolvere un problema in un modo che non è la normale soluzione accettata in quella lingua?

    
posta Erin 03.03.2011 - 16:27
fonte

2 risposte

5

Non sto affermando che questi sono insoliti o "non la normale soluzione accettata", ma qui ci sono alcune migrazioni di concetto nella mia carriera:

  • Ho imparato prima C
  • Dopo aver imparato Java, ho iniziato a strutturare il mio codice C con funzioni come [structname]_new e [structname]_destroy . Alcune idee di OO si sono insinuate nel mio imperativo codice.
  • Dopo aver studiato ML, ho usato più metodi statici nel mio codice Java e ho pensato ai problemi come azioni concatenate contro oggetti concatenati.
  • Dopo aver dilettato con Prolog, ho iniziato a preoccuparmi dello stato e degli effetti collaterali. Ho pensato che se Prolog potesse evitare di essere esplicito riguardo allo stato, potrei farlo anch'io.
  • Ho attraversato una breve fase in cui ho spinto troppa logica nel database dopo essere diventato utile con t-sql e pl / sql. Fortunatamente, questo è stato di breve durata (anche se mi piace ancora un buon proc memorizzato complicato).
  • Il tempo trascorso con Ruby mi ha rovinato il codice C # mentre cercavo di capire le soluzioni "meta" per tutto. Ho recuperato per la maggior parte. Nota: il riflesso C # non sostituisce un buon linguaggio dinamico.
  • Scrivere VBA in MS Excel ... Beh, so che influenza qualcosa ...
  • Il mio viaggio occasionale di ritorno a C mi fa preoccupare del codice in altre lingue. Per un giorno, temo di non poter vedere ESATTAMENTE che cosa sta succedendo sotto il cofano.
risposta data 04.03.2011 - 05:52
fonte
2

Penso che scrivere codice idiomatico sia generalmente la cosa migliore da fare. Rende più semplice per le altre persone che sono abituate a lavorare in quella lingua seguire ciò che stai facendo.

Detto questo, però, non c'è assolutamente nulla di sbagliato nell'usare altri stili. Se sembra che si adatti al compito che stai facendo, fallo! Un motivo per imparare altre lingue è quello di imparare altri modi per realizzare compiti simili.

Nel tuo caso, il modo funzionale di fare il ciclo è perfetto. Niente di male nell'essere dichiarativi; per una singola azione, è (per me, comunque) perfettamente chiaro ed è breve. Per azioni più complicate, utilizzerei ancora foreach .

    
risposta data 03.03.2011 - 20:08
fonte

Leggi altre domande sui tag