Sep 2, 2012
About Java project and package organization
There is a heated debate about what is the most appropriate organization and
naming convention of Java packages and projects and, by extension, software
modules. The two approaches are ‘by abstraction layer’ (e.g. model, controller,
view, etc) or ‘by feature’ (e.g. account). I find that, at least at an inside-tier
level (e.g. application level), the later approach makes more sense. That is, a tier
will be contained in a project (e.g. web-service or core) where packages are
organized by features. Inside of these packages I reproduce the different
abstraction layers in sub-packages if needed.