04-Refactoring/Refactoring/03-Safe_delete.cs (29 lines of code) (raw):

using System; namespace JetBrains.ReSharper.Koans.Refactoring { // Safe delete // // Only delete code element if it's not being used // // <shortcut id="Safe Delete...">Ctrl+R, D (VS)</shortcut> // public class ClassWithUsedAndUnusedField { // 1. Delete unused field // Place text caret on UnusedField and invoke Safe Delete // Hit OK, field is removed public string UnusedField = "hello world"; // 2. Safe delete used field // Place text caret on UsedField and invoke Safe Delete // Hit OK, ReSharper warns field is used // Click on the word "Usage" to navigate to the usage // Edit/remove the usage, if required // Click Next to remove field even with usages, or Cancel public string UsedField = "hello world"; // 3. Safe delete unused parameter // Place text caret on unusedParameter and invoke Safe Delete // Parameter isn't used inside method, so is deleted // Value passed as parameter when calling Method is also deleted // 3a. Safe delete used parameter // Place text caret on usedParameter and invoke Safe Delete // ReSharper warns parameter is used, can navigate to usage // Next will remove anyway, leaving broken code, or Cancel public void Method(string usedParameter, string unusedParameter) { Console.WriteLine(usedParameter); } public void Method2() { Method("hi", null); } } // 4. Safe Delete unused class // Place text on UnusedClass and invoke Safe Delete // ReSharper asks to remove empty files // Next will analyse for usages, find none and delete type // If file didn't contain any other definitions, the file would be deleted public class UnusedClass { } #region Implementation details public class User { public static void Method() { // Navigate back (Ctrl+-) Console.WriteLine(new ClassWithUsedAndUnusedField().UsedField); } } #endregion }