在Java应用程序中到处可见的地方都有名为SomethingManager的类。 帐户缓存具有一个AccountCacheManager。 应用程序属性具有ApplicationPropertiesManager。 用户事务由UserTransactionManager完成。
您可能在某个时候以这种方式命名了一个类。
请去改变它。
What's wrong with "Manager?"
经理是没有意义的后缀。 当然,您可能会争辩说我们需要一件事来管理另一件事,但是当您这么说时,您是什么意思? 您要为代码提供经理吗? 这是工作场所吗? 您的应用程序中的对象是否需要老板?
How to change it?
每当我在类名称中看到“经理”时,几乎总是多余的。 我最近看到了一个管理其他组件生命周期的类。 可以预见的是它以“ LifeCycleManager”后缀命名。 当然,在这种情况下,我们需要为课程命名经理, 对? 毕竟管理生命周期,这就是我们在现实世界中实际所说的?
没有! 错误!
这个班有初始化()和停()方法。 我们假设它被称为“托管”类MyComponent。 It's actually clearer和more readable to just call the "manager" class, MyComponentLifeCycle。 被“托管”的代码变为MyComponentLifeCycle.初始化()和MyComponentLifeCycle.停(). I can initialize or stop the life cycle directly,和when I do, I say what I mean和I mean what I say. I don't ask a manager to do it, I just do it.
这个简单的想法适用于大多数用例,在这些用例中,我已经看到了经理类的后缀。 刚才,我打开了一个代码库,发现了一个Connection经理类。 它公开的一些方法是getConnection(),配置(),and 关(). Setting aside the fact that this class probably could be refactored into some other object that makes more sense,all its really doing is holding a javax.sql.DataSource and providing some utility code around it,with the ultimate goal of providing a valid java.sql.Connection到应用程序。
不能只叫这堂课吗数据库连接并改变它getConnection()方法(返回一个java.sql.Connection顺便说一下得到()或许asSqlConnection()? 现在,而不是ConnectionManager.getConnection()(顺便说一句,这也是完全多余的)数据库连接.得到()。 后来你打电话数据库连接.close()。 无需“经理”。
No Managers!
如您所见,干净的代码应该没有管理器。 这是多余且不必要的。 它没有告诉您有关该类实际做什么的任何信息。
我的目标是经理灭绝。 谁和我在一起?