您的观点可能会因个人经验而有所偏差。尽管事实乍一看像是正确的,但这是事实的滑坡,但事实并非如此。
- 框架的范围要大于小型项目。
- 在较大的代码库中,不好的做法很难解决。
- 构建框架(平均而言)需要比构建小型项目更熟练的开发人员。
- 更好的开发人员会更多地遵循良好实践(SOLID)。
- 结果,框架对良好实践的需求更高,并且往往是由对良好实践经验更为丰富的开发人员构建的。
这意味着,当您与框架和较小的库进行交互时,与您进行交互的良好实践代码通常会在较大的框架中找到。
这种谬论是很普遍的,例如我所接受治疗的每位医生都是自大的。因此,我得出结论,所有医生都是自大的。这些谬论总是遭受基于个人经验的笼统推断。
在您的情况下,您可能主要是在较大的框架中而不是在较小的库中经历了良好的实践。您的个人观察并没有错,但这只是传闻,并非普遍适用。
2种编程模式-或多或少地准确创建通过需求和KISS(典型编程)提出的要求,或者创建非常通用且可重用的逻辑,服务等,从而提供其他开发人员可能需要的灵活性(框架编程)
您在这里对此有所确认。考虑一下什么是框架。它不是一个应用程序。这是一个通用的“模板”,其他人可以用来制作各种应用程序。从逻辑上讲,这意味着框架是用更加抽象的逻辑构建的,以便每个人都可以使用。
框架构建器无法采用快捷方式,因为它们甚至不知道后续应用程序的要求。建立一个内在的框架会激励他们使自己的代码对他人可用。
但是,由于应用程序构建者专注于交付产品,因此它们有能力牺牲逻辑效率。他们的主要目标不是代码的工作原理,而是用户的经验。
对于框架,最终用户是另一个开发人员,他将与您的代码进行交互。代码的质量对最终用户很重要。
对于应用程序,最终用户是非开发人员,不会与您的代码进行交互。您的代码质量对他们并不重要。
这正是开发团队的架构师经常充当良好实践的执行者的原因。它们是交付产品的第一步,这意味着它们倾向于客观地查看代码,而不是专注于应用程序本身的交付。
如果确实添加了这些抽象的入口点,是您真的满足了用户的要求,还是在现有框架和技术堆栈之上创建了一个框架,以使将来的添加变得更加容易?在哪种情况下,您是在为客户或开发人员的利益服务?
这是一个有趣的观点,并且(根据我的经验)这是人们仍然试图为避免良好实践辩护的主要原因。
归纳以下几点:仅当您的要求(如目前所知)是不可变的,并且没有对代码库进行任何更改/添加时,才可以跳过良好实践。 剧透警报:很少有这种情况。
例如,当我编写一个5分钟的控制台应用程序来处理特定文件时,我没有采用好的做法。因为我将仅在今天使用该应用程序,并且将来不需要进行更新(如果我需要一个应用程序,编写另一个应用程序会更容易)。
假设您可以在4周内伪造一个应用程序,并且可以在6周内正确构建一个应用程序。乍一看,伪造的建筑似乎更好。客户可以更快地获得他们的应用程序,并且公司必须花费更少的时间来支付开发人员的工资。双赢吧?
但是,这是没有事先考虑就做出的决定。由于代码库的质量,对伪造的代码进行重大更改将需要2周,而对正确构建的代码进行相同更改则需要1周。将来可能会有许多这样的变化。
此外,有一种变化的趋势是,意外地需要比最初在简陋的代码库中想象的更多的工作,因此可能会将您的开发时间从两周缩短到三周。
然后还有浪费时间寻找错误的趋势。在由于时间限制或完全不愿执行日志记录而忽略日志记录的项目中,这是经常发生的情况,因为您会以最终产品将按预期工作的假设为前提,而无心工作。
它甚至不需要进行重大更新。在我现在的老板那里,我看到了几个快速而又肮脏的项目,当由于需求沟通不畅而需要进行最小的错误/更改时,导致需要在每个模块之间进行重构的连锁反应。其中一些项目甚至在发布第一个版本之前就崩溃了(并留下了无法维护的混乱)。
快捷的决策(快速而肮脏的编程)只有在您可以最终保证要求完全正确且永远不需要更改时才有用。以我的经验,我从未遇到过一个真实的项目。
在良好实践中投入额外的时间就是对未来的投资。当现有代码库建立在良好实践的基础上时,将来的错误和更改将变得更加容易。仅进行两次或三个更改后,它将已经派发股息。