是否使用框架?

如果您还没有阅读Bob叔叔的最新博客文章 ,那么现在就应该这样做。 对于不耐烦的读者,可以总结为:

tl; dr :“您不需要框架,只需编写适当的代码。”

这不是我第一次发现鲍勃叔叔的著作与自己不符,因为鲍勃叔叔的经历和灵气令人尴尬。 另一个引起我注意的帖子是关于JavaScript的。 同样,您可以阅读...或

tl; dr :“比成为框架专家,更好地了解底层。”

我能理解的。 我的意思是,在JavaScript生态系统中,每6个月就会弹出一个新框架,并成为新的炒作。 (幸运的是,我是一名Java专家,在我们这方面并没有那么多发生。)但是,招聘人员从第一天开始就希望有人在该框架中高效工作是不是很奇怪? 如果要进行平行测试,我真的希望我的飞机驾驶员能够在那种确切的飞机类型上有经验,而不是一个可以“动态”学习(双关语意)的随机飞行员。

至于软件,为什么一个心智健全的人仍然会使用框架? 因为框架是要提高生产力, 节省宝贵的时间! 自切片面包以来,诸如Joda Time之类的东西可能并不是第二好东西,但它的设计精美且易于使用。 我可以煮像这样的东西吗? 可能,给定足够的时间。 但是,这里有一个难题:在项目中,您没有时间创建自己的低级库。 有预算,最好不要超支。 无论如何,如果我还有时间,我宁愿增加测试覆盖率,进行一些突变测试或重构我并不感到骄傲的部分。

拒绝重用甚至在软件工程中也被称为NIH syndrom 。 有几个开发人员开发自己的自定义框架而不是现有框架的示例,因为他们认为他们比其他人更了解问题。 它通常以混乱的半成品代码结束,零文档和大量学习成本。 有趣的是,我亲眼目睹的示例涉及数据持久性。 亲爱的,不要在家做! 或者更好的是,出于学习目的在家中做,而不是在工作中做...

有一些提示可以让您发现NIH:

  • 出于“安全性”的考虑,公司政策会阻止您(或在很大程度上阻碍您的工作,从而阻止您使用)第三方库-尽管开放源代码比封闭源代码要安全得多,这要归功于审阅功能。 欢迎您阅读Oracle的这篇文章,并指出相反的内容,此内容已从此删除。
  • 即使没有文档记录,未经测试且可靠的开放源代码框架也可以这样做,但人们仍会强制使用其开发的代码,而他的权力所在会阻止这样做

当然,当您需要使用框架时,这并不意味着您应该使用偶然发现的第一个框架。 我坚信,了解不同领域中的几个可靠框架(日志记录,响应式,UI,指标等)应该是全面的软件工程师产品组合的一部分。

在选择使用框架之前,必须先看几件事,但是可以将它们归纳为一个问题:“会被维护吗?”。 可以通过以下两个因素来评估此标准:

  • 提交者数量
  • 提交频率
  • 上次提交日期
  • 文献资料
  • 牌照性质
  • 社区的规模和活动
  • 等等

我使用的所有框架(用于日志记录的SLF4J,用于UI的Vaadin,用于依赖项注入的Spring等)在这些方面都得分很高,并且可能会比我使用它们的应用程序寿命更长。

我在某一点上同意鲍勃叔叔的观点:必须了解它的工作原理......我记得十年前,当时Java EE世界(当时的J2EE)围绕Struts展开。 初级开发人员被带进来,在Struts中接受了培训,然后在野外发布,以编写Struts应用程序的代码-他们中的大多数人都不在乎底层的Servlet API! 作为一名软件开发人员,您很好奇,不足以了解幕后发生的事情,这让我感到震惊。

但是你必须停在某个地方。 软件开发的历史是在层上添加抽象层,以更接近领域模型。 因此,很高兴知道Vaadin是基于AJAX和JSON构建的,并且可以生成HTML,并通过HTTP发送。 但坦率地说,我会亲自停在那里。 我不需要了解最后如何处理所有内存,对吗? 恐怕教条不能很好地处理现实生活中的限制。 也就是说,您知道的越多越好...

总之,我建议每个人都发表自己的意见:尝试使用框架和相反的框架,并查看其如何取决于上下文。 但更重要的是,不要以任何人的观点来证明您缺乏采取一种立场或另一种立场的论点。

翻译自: https://blog.frankel.ch/using-a-framework-or-not/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值