Refactoring is good, but sometimes itβs not so easy to figure out how to refactor and whether something really can be reorganized!
I have several methods that are almost identical - I can reorganize them, but one part of the refactoring goes beyond my logic.
Here are two non-refactored methods:
private void projectToolStripMenuItem_Click(object sender, EventArgs e) { if (projectToolStripMenuItem.Checked) { projectToolStripMenuItem.Checked = false; if (!projectForm.IsDisposed) projectForm.Hide(); } else { if (projectForm.IsDisposed) projectForm = new frmProject(); projectForm.Show(dockPanel, DockState.DockRight); projectToolStripMenuItem.Checked = true; } } private void logginToolStripMenuItem_Click(object sender, EventArgs e) { if (logginToolStripMenuItem.Checked) { logginToolStripMenuItem.Checked = false; if (!outputForm.IsDisposed) outputForm.Hide(); } else { if (outputForm.IsDisposed) outputForm = new frmOutput(); outputForm.Show(dockPanel, DockState.DockBottom); logginToolStripMenuItem.Checked = true; } }
With Refactoring, I would get a method such that previously non-refactored methods would call
private void refactoredMethod(TooStripMenuItem menuItem, DockContent frmName) { if (menuItem.Checked) { menuItem.Checked = false; if (!frmName.IsDisposed) frmName.Hide(); } else { if (frmName.IsDisposed) frmName= new frmProject();
So, we have an almost completely refactored method - with one problem, How can I determine which form I want to create from the frmName variable?
source share