Har funderat lite på en sak, har googlat lite grann men inte hittat rätt ännu i alla fall, så jag vet inte om det jag söker finns. Känns som om någon annan måste ha funderat på samma sak. Vet ni om detta finns? Vad det handlar om är en slags intelligent diff-verktyg.
Jag använder svn för versionshantering, och därigenom TortoiseMerge för att jämföra ändringar i filer. Emellanåt använder jag även WinMerge. Det fungerar för det mesta bra, men kan bli lite rörigt om man har gjort mycket refactoring i en fil (eller om någon annan gjort mycket refactoring och jag får reda ut konflikterna... B) )
Finns det något diff-verktyg som är smart nog att känna av vilka förändringar som påverkar funktionaliteten? Jag tänker mig alltså att verktyget skulle kunna märka om man bara bytt ordning på metoderna, vilket naturligtvis inte påverkar funktionaliteten. Andra saker som skulle kunna hanteras är namnbyte på privata metoder eller variabler, påverkar inte heller koden rent logiskt.
Vill man gå ytterligare ett steg kan man tänka sig att ännu mer avancerade saker. Jag menar, det finns ju verktyg som föreslår förbättringar när man skriver sin kod (t.ex. det fantastiska ReSharper till Visual Studio). Några exempel:
Kod:
// Före
private void MyMethod(bool b) {
if (!b) {
DoSomething();
DoSomethingElse();
}
}
// Efter
private void MyMethod(bool b) {
if (b) {
return;
}
DoSomething();
DoSomethingElse();
}
Kod:
// Före
if (x == 1) {
SomethingA();
} else if (x == 2) {
SomethingB();
} else {
SomethingC();
}
// Efter
switch (x) {
case 1:
SomethingA();
break;
case 2:
SomethingB();
break;
default:
SomethingC();
break;
}
Detta var ganska enkla exempel, men bara för att visa på idén. Är det någon som känner till om något liknande finns?