When almost every class has the same prefix. For example, when a user clicks on the button, a SmurfAccountView passes a SmurfAccountDTO to the SmurfAccountController. The SmurfID is used to fetch a SmurfOrderHistory which is passed to the SmurfHistoryMatch before forwarding to either SmurfHistoryReviewView or SmurfHistoryReportingView. If a SmurfErrorEvent occurs it is logged by SmurfErrorLogger to smurf/log/smurf/smurflog.log.

org.acme.smurfs
	.SmurfAccountView
	.SmurfAccountDTO
	.SmurfAccountController
	.SmurfOrderHistory
	.SmurfHistoryMatch
	.SmurfHistoryReviewView
	.SmurfHistoryReportingView

Too many words in class name make it less readable, so if something can be assumed, known from the context, or just obvious, do not repeat it in the class name:

org.acme.smurfs
	.AccountView
	.AccountDTO
	.AccountController
	.OrderHistory
	.HistoryMatch
	.HistoryReviewView
	.HistoryReportingView

Don't be afraid to have potentially non-unique class names, especially if you employ proper packaging of classes and use package-accessible classes generously. And avoid similar code smell at the method level.

            Votes: 0

See more like this: