refactoring

Starting UnitTesting on a LARGE project

Can anyone recommend some best-practices on how to tackle the problem of starting to UnitTest a large existing CodeBase? The problems that I'm currently facing include: HUGE code base ZERO existing UnitTests High coupling between classes Complex OM (not much I can do here - it's a complex business domain) Lack of experience in writing ...

Class member order in source code.

This has been asked before (question no. 308581), but that particular question and the answers are a bit C++ specific and a lot of things there are not really relevant in languages like Java or C#. The thing is, that even after refactorization, I find that there is a bit of mess in my source code files. I mean, the function bodies are a...

How to restructure this code hierarchy (relating to the Law of Demeter)

I've got a game engine where I'm splitting off the physics simulation from the game object functionality. So I've got a pure virtual class for a physical body class Body from which I'll be deriving various implementations of a physics simulation. My game object class then looks like class GameObject { public: // ... private: B...

Origin of the word Refactoring

Code refactoring is the process of changing a computer program's internal structure without modifying its external behavior or existing functionality. What is the origin of the word refactoring and why was it chosen to denote the above? ...

Is design now a subset of refactoring?

Looking at the cool new principles of software development: Agile You Ain't Gonna Need It Less As A Competitive Advantage Behaviour-Driven Development The Evils Of Premature Optimization The New Way seems to be to dive in and write what you need to achieve the first iteration of scope objectives, and refactor as necessary to have ele...

How would you tidy up this controller logic?

I've got some logic in a controller that sets a status of an object if certain conditions are met: if params[:concept][:consulted_legal] == 0 && params[:concept][:consulted_marketing] == 1 @concept.attributes = {:status => 'Awaiting Compliance Approval'} elsif params[:concept][:consulted_marketing] == 0 && params[:concept][:consulted_...

String Benchmarks in C# - Refactoring for Speed/Maintainability

I've been tinkering with small functions on my own time, trying to find ways to refactor them (I recently read Martin Fowler's book Refactoring: Improving the Design of Existing Code). I found the following function MakeNiceString() while updating another part of the codebase near it, and it looked like a good candidate to mess with. A...

Moving business rules into model

I asked a question earlier which elicited some great responses. Here's the earlier question On the back of some advice given there, I've tried moving the following controller logic if params[:concept][:consulted_legal] == 0 && params[:concept][:consulted_marketing] == 1 @concept.attributes = {:status => 'Awaiting Compliance Approva...

How should I refactor my code to remove unnecessary singletons?

I was confused when I first started to see anti-singleton commentary. I have used the singleton pattern in some recent projects, and it was working out beautifully. So much so, in fact, that I have used it many, many times. Now, after running into some problems, reading this SO question, and especially this blog post, I understand the e...

When is a function too long?

35 lines, 55 lines, 100 lines, 300 lines? When you should start to break it apart? I'm asking because I have a function with 60 lines (including comments) and was thinking about breaking it apart. long_function(){ ... } into: small_function_1(){...} small_function_2(){...} small_function_3(){...} The functions are not going to be u...

C#: How do you make VSC# Express 2008 refactor the name of events when object is renamed?

How do you make Visual Studio C# Express 2008 refactor the name of events when object is renamed? Let's say I have an object named txtCars and it already has an event handler for on txtCarsTextChanged and I rename the object from txtCars to txtTrucks. Everything else is refactored but the event txtCarsTextChanged isn't. Is there a short...

Merging C Callergraphs with Doxygen or determining union of all calls

I have a collection of legacy C code which I'm refactoring to split the C computational code from the GUI. This is complicated by the heavily recursive mathematical core code being K&R style declarations. I've already abandoned an attempt to convert these to ANSI declarations due to nested use of function parameters (just couldn't get th...

How to simplify a null-safe compareTo() implementation?

I'm implementing compareTo() method for a simple class such as this (to be able to use Collections.sort() and other goodies offered by the Java platform): public class Metadata implements Comparable<Metadata> { private String name; private String value; // Imagine basic constructor and accessors here // Irrelevant parts omitted...

Is there a way to programmatically extract an Interface?

Say I have a .NET class like so: public class Person { public string Name { get; set; } public int Id { get; set; } } Visual Studio has a nifty refactoring tool called Extract Interface that will extract an IPerson interface, and have Person implement it. Is there a way to do that programmatically from outside of Visual Studio...

Avoiding code repetition when using LINQ

Ok so I have a number of methods that look like this:- which sorts a list by artist, album, year etc. public void SortByAlbum(SortOrder sortOrder) { if (sortOrder == SortOrder.Ascending) _list = _list.OrderBy(x => x.Album).ToList(); else if (sortOrder == SortOrder.Descending) ...

C++; refactoring the class

I have a class A which implements many functions. Class A is very stable. Now I have a new feature requirement, some of whose functionality matches that implemented by A. I cannot directly inherit my new class from class A, as that would bring lot of redundancy into my new class. So, should i duplicate the common code in both the c...

How would you write this query?

I'm looking to refactor the below query to something more readable and modifiable. The first half is identical to the second, with the exception of the database queried from (table names are the same though.) SELECT Column 1 AS c1, ... Column N AS cN FROM database1.dbo.Table1 UNION SELECT 'Some String' as c1...

Refactor SQL (workaround RIGHT OUTER JOIN)

Hey Stackers, Since SQLite does not support RIGHT OUTER JOINS I pose the following challenge (read: invitation to do my work for me): Refactor this query so it no longer utilises SQLite-unsupported constructs like RIGHT/FULL OUTER JOINs. SELECT strings.*, translations.text FROM translations INNER JOIN ...

How to externalize pieces of maven build file?

I was faced to a problem how to version a configuration file in XML format. The easiest way is to write XSLT updates. Every release of the application has its own XSLT update. All these update files are small enough to be managable by the IDE, especially its DIFF tool. Since the project is already been developed as Maven2 Java logical s...

Refactor this Python code to iterate over a container

Surely there is a better way to do this? results = [] if not queryset is None: for obj in queryset: results.append((getattr(obj,field.attname),obj.pk)) The problem is that sometimes queryset is None which causes an exception when I try to iterate over it. In this case, I just want result to be set to an empty list. This co...