Sono insoddisfatto degli strumenti di confronto dei file con cui ho lavorato finora. Mentre nessuno strumento sarebbe in grado di prevedere sempre le corrispondenze di linea che hanno senso, almeno gli strumenti attuali dovrebbero essere in grado di fare un lavoro migliore quando i cambiamenti consistono principalmente in rientri aggiunti e rimossi. Ma gli strumenti che ho usato finiscono per abbinare le parentesi in isolamento e separano il codice effettivamente correlato, e fanno altri errori apparentemente ovvi.
Un esempio parlerà dei volumi, prendiamo questo:
// We also have to add any specified prefix and (pre-period) suffix.
if (prefix) [spriteName insertString:prefix atIndex:0];
if (suffix)
{
NSRange pos = [spriteName rangeOfString:@"."];
if (pos.location == NSNotFound)
{
// No point, it's a base sprite, so just append.
[spriteName appendString:suffix];
}
else
{
// Append where the period was found, just before it.
[spriteName insertString:suffix atIndex:pos.location];
}
}
e assumiamo che venga modificato in questo modo:
// We also have to add any specified prefix and (pre-period) suffix.
if (prefix) [spriteName insertString:prefix atIndex:0];
while (we_need_to_do_stuff)
{
if (suffix)
{
NSRange pos = [spriteName rangeOfString:@"."];
if (pos.location == NSNotFound)
{
// No point, it's a base sprite, so just append.
[spriteName appendString:suffix];
}
else
{
// Append where the period was found, just before it.
[spriteName insertString:suffix atIndex:pos.location];
}
}
}
Non voglio troppo namedtrop, ma cosa fa FileMerge (l'utilità di diff / merge grafico fornita con Xcode)? Questo:
... quanto premuroso, FileMerge, hai fatto in modo di abbinare le parentesi perché erano allo stesso livello di rientro e separato il codice correlato. Non avremmo potuto chiedere di più.
La soluzione usuale in questo caso è trovare l'opzione per considerare le modifiche nella quantità di spazio bianco come non significative e riprovare. Ma poi voglio essere sicuro di non aver rovinato il rientro, perché è qualcosa che ho intenzione di commettere, quindi torno alle opzioni, disabilita l'opzione, riprova. Ripeti per tutte le modifiche che voglio recensire.
Ci deve essere un modo migliore. Sono solo io che uso male i miei strumenti? È teoricamente possibile migliorare questo flusso di lavoro? E questo è un caso semplice, più complessi sono stati risolti in astratto? Come dovrei cercare strumenti migliori in questo dominio, dato che è difficile esprimere come una query del motore di ricerca?