La risposta accettata sembra aver perso ciò che hai scritto in un commento:
The reason is that a lot of the manipulation I do requires the full string
e ha fornito questo come esempio:
s.replace("boat", "programming");
Se è quello che vuoi, è davvero una cattiva idea usare IMHO un "markdown" o un separatore testuale per tutta la tua stringa, questo ha sempre un certo rischio di interferire con la manipolazione e non porterà a codice robusto. Soprattutto quando provi ad iniziare ad usare le espressioni regolari su una tale combinazione, probabilmente incontrerai gli stessi problemi osservati da cercando di analizzare HTLM o XML con le espressioni regolari .
Specialmente perché hai scritto che potrebbero esserci "migliaia di [tali funzioni di manipolazione]", il rischio potrebbe diventare un problema reale. Anche se utilizzi un markdown come XML per archiviare l'elenco di stringhe internamente, devi assicurarti che la manipolazione elabori solo il contenuto, non il markdown, quindi significherebbe dividere la stringa in parti prima di eseguire qualsiasi elaborazione e unire in seguito di nuovo - quindi che avrà un alto rischio di darti una cattiva prestazione.
L'alternativa di design migliore qui è quella di fornire un tipo di dati astratto (usa una classe se vuoi), chiamiamolo MyStringList
, e fornire un piccolo insieme di operazioni di base che ti permettono di implementare le tue "migliaia di funzioni" in termini di tali operazioni. Ad esempio, potrebbero esserci generiche operazioni find
e replace
, oppure un'operazione generica map
. Puoi anche aggiungere qualcosa come un'operazione JoinToString
se hai davvero bisogno dell'intera lista in una stringa per certi purpers.
Usando queste operazioni, la tua paura che il codice diventi più complicato perché "tutto dovrebbe essere fatto in un ciclo for" diventa inutile, perché gli unici for
di cicli che si ottengono sono incapsulati all'interno le operazioni del tipo di dati. E non mi preoccuperei delle prestazioni finché non avremo un impatto reale e misurabile sulle prestazioni (che dubito di ottenere se implementate correttamente le operazioni di base).