我有一个代码库,程序员倾向于将其包装在没有意义的区域中。例如,给定一个错误日志,我们可以通过
ErrorLog.Log(ex, "friendly message");
他添加了其他各种方法来完成完全相同的任务。例如
SomeClass.Log(ex, "friendly message");
它只是转过身来并调用第一个方法。这增加了复杂性级别,并且没有任何额外的好处。是否有一个反模式来描述这一点?
我有一个代码库,程序员倾向于将其包装在没有意义的区域中。例如,给定一个错误日志,我们可以通过
ErrorLog.Log(ex, "friendly message");
他添加了其他各种方法来完成完全相同的任务。例如
SomeClass.Log(ex, "friendly message");
它只是转过身来并调用第一个方法。这增加了复杂性级别,并且没有任何额外的好处。是否有一个反模式来描述这一点?
Answers:
只有在合理分布的情况下,才应将一些不良的编码习惯称为反模式。
其余的我们只称之为“垃圾代码” ...
如果我要为这个特殊的习惯建议一个名字,那就是“强迫症” :-)
不,这不是反模式,但我会提出以下问题。
违反单一责任原则
SRP说,一堂课应该有一个改变的理由。添加记录器方法意味着,如果应该更改日志记录逻辑,则也必须更改类。
违反is-a
关系
基类不是可以在其中添加几种便捷方法的工具箱。
这样做可以有效地将所有继承的类耦合到基类具有的实现。
将其与组成进行比较。
我不确定将其描述为对单一责任原则的冒犯,因为如果ErrorLog方法签名(由SomeClass调用的方法)发生更改,则调用此方法的每个客户端代码都会失败。
显然有一种使用继承的方法(或使类需要进行日志记录以实现日志记录接口)。
我不确定这会自动成为邪恶。
如果您要调用SomeClass.Log,那么它肯定是邪恶的,但是如果仅从WITHIN SomeClass中使用Log,则会减少耦合,我可以接受。
偶然的复杂性是在计算机程序或其开发过程中出现的复杂性,它对要解决的问题不是必需的。虽然本质上的复杂性是固有的和不可避免的,但偶然的复杂性是由解决问题的方法所引起的。
我可以想象这是文化差异。在此特定代码库中可能有重复功能的充分理由。我可以想象写的容易是这样的原因。我里面的Python程序员仍然会说这很不好,因为“ 应该有一种-最好只有一种-显而易见的方式。 ”,但是一些Perl家伙可能已经习惯了这样的事实:“ 有不止一种的方式 ”。