2009-09-29 14 views
13

Recentemente mi sono messo in contatto con Empire-db. Il progetto doc. ha dichiarato che sta usando "string-free coding", inteso a utilizzare stringhe meno costanti il ​​più possibile per evitare errori di battitura e utilizzare la forza del compilatore.La "codifica senza stringhe" è un termine comune?

Sono sempre stato un grande fan di questo principio, perché penso che Java sia un linguaggio formale che potrebbe essere espressivo per la configurazione come proprietà o xml e fornisce un valore extra controllando attraverso il compilatore. Forse in fase di esecuzione ci sono meno possibilità di modifiche senza ricompilare, ma questo dipende da ciascun caso.

Avete ulteriori riferimenti o letture su questo termine/principio/modello di progettazione?

+1

Grazie per aver sottolineato Empire DB. È uno strumento che merita un'ulteriore investigazione. Sono rimasto particolarmente colpito dall'analisi di Hibernate: http://incubator.apache.org/empire-db/empiredb/hibernate.htm – APC

+0

Questo è un articolo davvero interessante. Grazie a @APC. –

+0

Mentre è un buon principio, come sempre, usa prima il buon senso. Seguire senza indugio una buona pratica di progettazione con buone intenzioni può anche portare a codice errato, controlla http://thedailywtf.com/Articles/It-Gets-Worse-Each-Year.aspx e http://thedailywtf.com/Articles/ Soft_Coding.aspx –

risposta

4

Anche se non ho mai sentito quel particolare termine, so cosa intendi, ha senso.

4

So poco di Java, ma questo idioma è famoso nel C++ moderno. Ad esempio, Xpressive è una libreria di espressioni regolari che consente al programmatore di scrivere un'espressione regolare in C++ e di eseguire il controllo in fase di compilazione. Spirit è un altro esempio, dove si potrebbe scrivere EBNF in C++, e il compilatore può controllare la sintassi anche per voi :)

Penso che il termine che stai cercando è Domain Specific Languages ​​embedded.

+0

Qt ha anche qualcosa di correlato, ma questo è dovuto al modo in cui le traduzioni funzionano lì. Fondamentalmente si incapsula ogni stringa visibile dall'utente con "tr (...) ", e l'app lo cerca dinamicamente in fase di runtime, utilizzando solo la stringa data quando non è stata trovata una traduzione adeguata. –

1

Mai sentito l'espressione particolare, ma Effective Java consiglia di "evitare stringhe in cui altri tipi sono più appropriati" (elemento 50).

6

È la stessa cosa di numero magico vs costanti. L'uso delle costanti aumenta la manutenibilità e la leggibilità. Le costanti incapsulano anche il cambiamento: una variazione nel valore costante viene automaticamente propagata e, come per la codifica senza stringhe, una costante errata è un errore in fase di compilazione.

0

Il famoso Pragmatic Programmer menziona questo principio soprattutto in relazione alla gestione dei metadati. Una delle punte di questo è:

Mettere Astrazioni in codice, i dettagli in metadati

Programma per il caso generale, e mettere le specifiche al di fuori del base di codice compilato.

Vale la pena leggere il libro comunque.

0

Per quanto riguarda empire-db, è come "sicurezza di tipo" per le query SQL.

Problemi correlati