作为程序员,我觉得我们的目标是在给定的域模型和业务逻辑上提供良好的抽象。但是这种抽象应该在哪里停止呢?如何在抽象及其所有优点(灵活性,易于更改等)以及易于理解代码及其所有优点之间进行权衡。
我相信我倾向于写过于抽象的代码,但我不知道它有多好。我经常倾向于将其编写为某种微型框架,包括两部分:
- 连接在微框架中的微模块:这些模块易于理解,开发和维护为单个单元。这段代码基本上代表了实际执行功能的代码,如需求所述。
- 连接代码;现在我相信这里是问题所在。该代码趋于复杂,因为它有时非常抽象,一开始很难理解。之所以会出现这种情况,是因为这仅仅是纯粹的抽象,实际上基础和业务逻辑是在所提供的代码1中执行的;因此,该代码一旦经过测试就不会更改。
这是编程的好方法吗?难道说,变更代码在许多模块中非常分散,并且很容易理解,而变更代码与抽象POV相比却非常复杂?如果所有代码都统一地复杂(即代码1更复杂和相互链接,而代码2更简单),以使通过它的任何人都可以在合理的时间内理解它,但是更改很昂贵,或者上述解决方案是好的, “更改代码”非常容易理解,调试,更改,“链接代码”有点困难。
注意:这与代码的可读性无关!1和2处的代码都是可读的,但2处的代码具有更复杂的抽象,而代码1则具有简单的抽象。