Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: add in some other comments where people can help with the clean up effort

...

Current Top 5 Re-factoring Focus Areas

...

 AREAREASON FOR RE-FACTORSTATUSWHO IS WORKING ON IT?JIRA MASTER ISSUE LINKCOMMENTS
1EntitySaxReader EntitySaxReader implements javolution interfaces and looks hideous     
2HtmlFormRendererHtmlFormRenderer is 3000 lines of code and the interfaces it implements
are also huge
    
3 XmlFormRendererXmlFormRenderer does not implement more than half of the methods     
4Dependencies on Deprecated Classes / ConstructorsLots of dependencies on deprecated classes / constructors (e.g.
HtmlScreenRenderer, FoScreenRenderer)
    
5Start.java  This has some problems which I'm trying to tackle in JIRA:
OFBIZ-6783
In ProgressTaher AlkhateebOFBIZ-6783 


Other ways to help

If our top 5 areas seem a little too much for you to take on then you can help in other areas too, and a little bit of work quickly adds up. Below are some other ideas for helping remove clutter and help clean up the code base.

  • - Obsolete / irrelevant comments: anything out of date
  • - Commented out code:  it belongs in the version control system
  • - functions with too many arguments: anything beyond 3 arguments is probably too much unless there is a good reason for it.
  • - functions that do too many things - multiple languages in the same text file
  • - Big files / Big classes / Big anything really!
  • - Duplication and cut-and-paste patterns
  • - Mixed levels of abstraction: You can't declare high level stuff like starting the framework with details like flag parsing in the same place. Things should read like a story from high level down to the details. Main calls higher level functions which then call lower functions which executes detailed code.
  • - Any concrete class not implementing an interface is probably a code smell, especially if too many dependencies point to it.
  • - cluttered code, sandwiched in an ugly way
  • - Pretty much all the Java warnings in the current code base
  • - too much use of the "new" keyword instead of having a proper factory
  • - writing to classes instead of interfaces - Confusing names for classes, functions, and variables. Things should be very clear and simple
  • - Confusing test names - Lack of testing for any production code. Ideally, our tests should cover 100% of the code base.
  • - inconsistent formatting conventions. Tabs instead of spaces, wrong number of spaces for indentation, and so on
  • - Also, one of the worst things I usually encounter is hidden state. For example, you get hidden state in a Java class if the constructor declares a field that was not passed into the constructor. It makes the declaration hidden and the dependency obscure.

Not sure where to start? Need more information?

...