2010-03-11 9 views

risposta

8

non sapevo ho potuto scrivere le mie funzioni (PHP)

Quando mi insegnavo programmare anni fa ho scritto un applicazione web php intera senza una singola funzione. Tutto il riutilizzo del codice è stato fatto chiamando include (...) su altri script .php. Il libro che stavo imparando non ha mai introdotto il concetto di funzioni definite dall'utente. (Il giorno in cui ho appreso le funzioni è stata una buona giornata.)

+0

santa merda! sei serio: D –

+0

Ho visto una cosa simile prima di un lavoro che ho consultato molto brevemente (acquistato dai proprietari dei prodotti - ma ho dovuto lavorare con una società diversa che ha sviluppato l'app web). Questa azienda dev aveva la convinzione errata che chiamare una funzione fosse troppo costoso in PHP, quindi il loro codice tendeva a sembrare quello che stai dicendo. Mentre c'erano un paio di chiamate di metodo e include, una regex per convalidare un indirizzo email in un paio di posti non dovrebbe essere encaplusate in un metodo - ma copialo incollalo ovunque ti serva - alla fine rinunci cercando di convincerli che metodo di chiamata overhead non è importante – saret

+0

L'app che attualmente devo mantenere deve essere stata da voi. Ok, ha un wrapper attorno alle funzioni di mysql ma questo è tutto. Ho visto una singola query SQL ripetuta 12 volte nel file _one_. – dbemerlin

5

Polimorfismo.

Non ho davvero capito che è il potere in un primo momento. Risultato in routine gonfie e complicate. Il ragazzo, cerca di non ricordare quei giorni ...

+2

Posso vedere cosa intendi. All'inizio vedevo principalmente l'Orientamento degli oggetti come modo per mantenere insieme funzioni e dati. Come il C++ ti permette di dichiarare le funzioni all'interno di una struttura. Ero a conoscenza della parola chiave virtuale ma non ne ho visto l'utilità. Implementazione smalltalk della struttura di controllo if con polimorfico #ifTrue: e #ifFalse è stato un vero colpo d'occhio. –

1

Database si unisce nel codice PHP

Quando l'insegnamento mi SQL con PHP, ero utilizzando SQL come un tipo di archivio file flat permanente con capacità di filtraggio complesso (DOVE). Non ho capito che potresti "unirti" ai tavoli insieme. Tutte le operazioni di join sono state implementate in una funzione PHP dopo che tutti i dati sono stati estratti in memoria. Se ne sapessi di più allora avrei potuto chiamarlo una funzione di loop annidati! (Questo ti insegnerà a de-normalizzare i tuoi dati molto velocemente!)

Mi dispiace divinità di database!

1

Il peggiore che abbia mai fatto è stato memorizzare gli ID separati da virgole in un database. Non ho compreso appieno i join quindi è stata la cosa più semplice che potessi fare, ma le query sono orribili
(WHERE foo_ids LIKE "%, $ id,%" O foo_ids LIKE "$ id,%" OR foo_ids LIKE "%, $ id ").

La cosa peggiore che vedo regolarmente sono classi che funzionano come spazi dei nomi con tutti i metodi public static (PHP).

EDIT:
ho appena ricordato il momento in cui un compagno di scuola ha cercato di creare un file XML per una tabella di database

Tabella:

teacher_id | name 
     1 | foo 
     2 | bar 
    ...  | ... 

suo XML:

<teachers> 
    <id1>foo</id1> 
    <id2>bar</id2> 
    .... 
</teachers> 
1

Alcuni Java - "sviluppatore" (lol) cercano di scrivere un pezzo di software in C#, non sapendo che questo è un linguaggio moderno con una dichiarazione "foreach".

Risultato:

Software avevano iterazioni utilizzando ... iteratori. Brutto stile anni '90, tipico di Java.

Mi ha fatto odiare Java ancora di più. :-(

+2

Ma Java ha un'istruzione foreach ('for (e: iterator) {}'), quindi lo sviluppatore era generalmente ignorante. – JAB

+1

Tranne il tempo e il luogo per gli iteratori a seconda delle operazioni eseguite nel ciclo. Il grande esempio è quando è necessario rimuovere qualcosa dalla raccolta su cui si sta iterando. – Freiheit

+0

@Freiheit Se lo fai in questo modo, stai sbagliando. IEnumerables devono essere considerati immutabili, se è necessario modificarli, è necessario creare una copia modificata. Tutto il resto è l'ottimizzazione prematura. –

1

Un collega ed io lavoravamo come consulenti su un progetto di software di medie dimensioni.Aveva lavorato per un anno a progetti simili, quindi è stato addebitato al cliente come un "esperto" sulla piattaforma.

Presto ho scoperto che il mio collega non ha compreso appieno i punti fini di I/O del file sul linguaggio che stavamo usando, lasciando di conseguenza molti piccoli bug. La cosa divertente è che tutti i suoi progetti precedenti avevano gli stessi piccoli bug ma i clienti hanno imparato ad usare il sistema in modi che non li hanno innescati.

1

Indietro quando ero un principiante, ho scritto del codice in PHP senza capire i puntatori, gli oggetti o anche le tuple/le strutture. Ho appena creato tutte le mie strutture dati utilizzando gli array ridicolmente flessibili e dinamici di PHP. In realtà è piuttosto sorprendente quanto riesci a ottenere in questo modo, ma mi sento in colpa per chiunque (incluso me stesso qualche mese dopo) che abbia mai avuto bisogno di modificare quel codice.

0

Che dovevo chiamare ToString() su ogni variabile quando concatenavo le stringhe, anche se le variabili erano stringhe.

Esempi:

Enum.GetName(...).ToString() 
myDate.ToShortDateString().ToString() 

...

Problemi correlati