Quale libreria / framework hai abbandonato essendo troppo complesso per il problema che sta risolvendo? [chiuso]

12

... e codificato la funzionalità "manualmente"?

Come esempio piuttosto metaforico, non avrai praticamente bisogno di una libreria per risolvere equazioni di secondo grado, anche se tali librerie esistono e qualcuno le prende sul serio.

Come caso più discutibile, a seconda delle circostanze, posso abbandonare jQuery (ad esempio quando non ho bisogno di supportare alcuni browser per età della pietra): semplifica alcune cose ma aggiunge un altro livello di complessità e inaffidabilità al DOM . E l'uso eccessivo di jQuery porta a problemi assurdi, come quello visto di recente su SO: come posso assegnare un href vuoto a un tag a con jQuery? Si è rivelato che si trattava di una domanda HTML, non addirittura di JavaScript.

Un altro caso assurdo, ma non ovvio per molti, è l'utilizzo di un motore / linguaggio di template basato su un altro sistema di template: PHP. Terzo livello di templare qualcuno?

E un altro: a volte solo sputando XML con (in genere) printf è molto più facile rispetto a farlo con qualche mostruoso motore XML.

Altri casi dalla tua esperienza?

    
posta mojuba 05.11.2010 - 21:57
fonte

14 risposte

14

Gran parte della libreria aziendale MS e la maggior parte dei controlli di terze parti per .net mi hanno lasciato questa sensazione dopo un po 'di utilizzo.

Il tuo chilometraggio può variare

    
risposta data 05.11.2010 - 22:16
fonte
13

Windows Communication Foundation

Il fatto che abbia una foto di un coltello dell'esercito svizzero sulla homepage tipo di riassume tutto per me. Immagina che la configurazione XML sia circa quattro volte più lunga del codice reale che scrivi, ed è ancora molto difficile scrivere servizi SOAP che siano interoperabili tra C #, Java, PHP, Python e tutte quelle altre lingue che doveva "essere interoperabile con ...

In tutti i progetti futuri, seguirò semplicemente REST.

    
risposta data 05.11.2010 - 23:42
fonte
12

Uno dei problemi che ho riscontrato con le persone "che si muovono da soli" è che - mentre il loro approccio è spesso più veloce e più semplice - è anche più probabile che sia fragile, abbia bug, sia incompleto e / o contengono difetti di sicurezza.

Semplice esempio: potrebbe essere 10 volte più facile usare printf per emettere XML piuttosto che usare una libreria:

printf("<xml>%s</xml>", str);

ma ti sei ricordato di sfuggire a caratteri speciali in str ? Ad esempio ' < ' e ' & '? Alcune persone potrebbero dire "no non l'ho fatto" e procedere a scrivere questo:

printf("<xml><![CDATA[%s]]></xml>", str);

Tuttavia emetterà ancora un errore XML se str contiene la sottostringa " ]]> " in qualsiasi parte. Edge case - sicuro. Ma ancora uno scenario valido che potrebbe portare a problemi imprevisti con gravi conseguenze.

Ci sono molte volte e luoghi in cui "rolling your own" può essere appropriato, ma a volte richiede molta esperienza e conoscenza per identificare quando è appropriato. Questo è il motivo per cui incoraggio spesso i programmatori a preferire l'uso di librerie consolidate (ove disponibili) invece di routine auto-implementate.

    
risposta data 06.11.2010 - 23:03
fonte
11

Log4Net

La libreria è buona, ma la documentazione è orrenda. Era eccessivo per quello che volevo fare.

Ho usato Traccia invece.

    
risposta data 05.11.2010 - 22:05
fonte
7

SharePoint

Non fraintendermi, SharePoint è fantastico se hai bisogno della maggior parte delle cose (e viene fornito con molto!), ma se non sai cosa stai facendo o se ne serve solo una o due cose, è MASSICAMENTE che non vale la fatica e la configurazione.

    
risposta data 08.11.2010 - 16:25
fonte
6

WebForms ASP.NET - Anche se come sviluppatore web .NET è stato il mio pane e burro per molto tempo, da quando ho iniziato a utilizzare il framework MVC (e proveniente da un ambiente PHP / Smarty Template) - ti rendi conto che a volte ci sono solo modi migliori per fare sviluppo web e l'astrazione che usa è overkill e che perde .

    
risposta data 05.11.2010 - 22:33
fonte
3

In quasi tutti i casi in cui ho fatto questo, ho finito per rimpiangerlo:

  • L'uso delle funzioni di PHP oci_ * invece di una libreria di wrapper si è rivelato una mossa sbagliata a causa della manutenibilità del codice. Portare tutto il codice su Zend_Db ha reso molto più semplice lo sviluppo mantenendo il codice del database.
  • Rotolare il mio componente di griglia ajax, che ha richiesto troppo tempo per svilupparsi ulteriormente, data la velocità con cui alcuni degli altri componenti della griglia si evolvono. Attualmente sto eseguendo il porting di tutte le griglie di Ext JS perché con quelle c'è una grande quantità di funzionalità di terze parti disponibili.
  • Evitare librerie come prototipo e jquery ha portato a ripetuti casi di problemi tra browser, spesso difficili da rintracciare. La porta Ext JS ha risolto i miei problemi di cross-browser. È magico, anche se è un vasto quadro che mi ci è voluto settimane per capire.

Sono giunto alla conclusione che è molto meglio scegliere alcuni framework di terze parti affidabili e usarli come base per tutto ciò che fai. Questi framework sono sviluppati e debuggati da qualcun altro, il che è un incredibile risparmio di tempo una volta che ti sei standardizzato su di loro e li hai capiti bene.

    
risposta data 06.11.2010 - 22:43
fonte
2

Non che Delphi4PHP abbia bisogno di una cattiva stampa, ma l'ho provato (versione 2.0) ed è stato estremamente difficile piegarlo alla mia volontà. Volevo usarlo per creare un'app web in stile youtube per i client per visualizzare video di formazione, ma era troppo complicato e quando ho provato a combinare framework PHP (VCL4PHP, Zend, Smarty e Recess) mi sono imbattuto nell'immancabile, devo rinominare tutto perché non ci sono spazi dei nomi in PHP 5 problema.

Detto questo, alla fine non ho fatto il mio. Ho appena imparato dai miei errori e ho deciso di mantenerlo molto semplice e utilizzare CodeIgniter e FlowPlayer (con JQuery).

Ho una brama che qualunque framework faccia da vivo a PHP 5, PHP 6 avrà dei framework fantastici che potrebbero davvero giocare bene insieme.

    
risposta data 05.11.2010 - 22:37
fonte
2

Weka

Svolgo un sacco di lavoro di apprendimento automatico e, se mai avessi bisogno di qualcosa di semplice come Naive Bayes o di regressione logistica, mi piace abbandonare Weka. Ha buone implementazioni di alcuni algoritmi di apprendimento automatico abbastanza complicati, ma l'API è una API Java pre-generica eccessivamente orientata agli oggetti eccessivamente orientata agli oggetti (pre-generica). Cose che mi infastidiscono a riguardo:

  1. Rotola il proprio array resizable che non usa nient'altro, garantendo la piena operatività della conversione avanti e indietro.

  2. Un sacco di accoppiamenti sequenziali in cui i metodi devono essere chiamati in un ordine specifico e, a meno che tu non sia veramente attento a RTFM, non te ne accorgerai.

  3. Ogni istanza deve essere un oggetto Instance e devo dichiarare esplicitamente con un oggetto Attribute sia esso nominale o numerico. Questo porta a un sacco di lavoro impegnato a convertire i dati nel modulo che Weka desidera. Questo è particolarmente fastidioso dal momento che l'API di Weka genera così tante eccezioni che la compilazione del codice non significa che probabilmente funzionerà comunque. Se stavo progettando l'API, sarei liberale in ciò che ho accettato (magari solo prendendo una serie di Object) e semplicemente introspetto i dati per capire cosa ho ottenuto e quale sia la cosa giusta da fare con esso.

risposta data 06.11.2010 - 00:01
fonte
2

In un particolare progetto ho abbandonato EJB3. Mi ha dato l'iniezione della dipendenza e la gestione della transazione gestita dal container. Ma introduce enormi dipendenze (ad es. JBoss) e ha reso difficile la scrittura di test automatici del sistema. Ora l'ho ridotto a JPA + injection dependency injection.

    
risposta data 08.11.2010 - 16:22
fonte
2

System.Text.RegularExpressions

Regex è così complesso e così lento. Utilizzerò molto raramente il Regex e di solito scrivo il mio testo di analisi e corrispondenza.

Occasionalmente trovo il Regex utile per una corrispondenza davvero complessa.

    
risposta data 05.11.2010 - 22:34
fonte
1

Sputare HTML su una porta di debug su un'app. Avevo bisogno di un modo semplice per ottenere alcuni dati attuali (con aggiornamento automatico). Tirare in una libreria per formattare sarebbe stato buono, ma era più facile stamparlo.

Ho anche rifiutato la libreria per un'altra: usiamo una libreria XML ampia e complessa nella maggior parte delle nostre cose. Dopo aver trascorso 4 ore un giorno a provare a farlo funzionare in una nuova app, ho appena detto 'bag it', e ho inserito TinyXML. Non è neanche lontanamente potente, ma ci vuole molto meno sforzo per farlo fare cose semplici.

    
risposta data 05.11.2010 - 22:21
fonte
1

Recentemente ho lavorato su un compilatore di linguaggio di scripting che posso usare all'interno delle mie applicazioni. Ne ho usati altri, ma nessuno fa esattamente quello che ho bisogno che loro facciano. Quindi ho pensato perché non provare a scrivere il mio? Potrebbe essere un anno o due prima che sia veramente adatto all'uso generale, ma va bene. Inoltre, è una grande esperienza di apprendimento.

Un'altra soluzione "roll my own" sono i pezzi usati per tradurre le mie applicazioni. Esistono le librerie esistenti, ma non mi piaceva nessuno di loro. Così ho creato il mio.

E i componenti del database di Delphi. Lo odio. Avere sempre. Così ho creato la mia interfaccia di database che funziona come voglio che funzioni (e esattamente come quella che ho realizzato per PHP, rendendo più semplice la codifica tra le lingue).

Fondamentalmente, quando viene data un'opzione, di solito finisco per creare la mia libreria.

    
risposta data 05.11.2010 - 22:20
fonte
0

Ohhh, così tanti. Ho lavorato su alcuni progetti agili usando apis open source. Grandi quando lavorano, ma spesso abbiamo sofferto sviluppatori con un feticcio per aver introdotto tutti i tipi di apis di terze parti, alcuni oscuri, altri no, solo perché vogliono usare una o due classi in essi. Il risultato finale è un miscuglio di codice e sistemi hackerati insieme. Lo consegnano sostenendo che è il miglior codice di sempre, se ne vanno e le povere disgraziate che la raccolgono trovano un pasticcio incomprensibile, privo di documenti, pieno di problemi di dipendenza e hack.

    
risposta data 09.11.2010 - 03:48
fonte

Leggi altre domande sui tag