久久精品无码中文资源站
久久久精品美乳

欧美伊人久久一区二区,av中文字幕一区二区三区

发布日期:2022-11-14 06:28    点击次数:166

欧美伊人久久一区二区,av中文字幕一区二区三区

选录:不要让框架铁心你的表情!

原文臆想:https://berk.es/2022/09/06/frameworks-harm-maintenance/

作家 | Bèr Kessels

译者 | 弯月

出品 | CSDN(ID:CSDNnews)

在本文中,咱们来探讨一下使用框架构建软件,对软件的可谨防性有哪些危害。我以为:

使用框架有损于软件的可谨防性。 框架与个人或团队有着不同的商酌。 框架联想中的衡量会危及表情的可谨防性。 框架的构建初志等于为了铁心你的表情。 以解耦的面容取舍框架,不仅能享受框架带来的公正,而且还不错幸免毁伤可谨防性。

框架是什么?

领先,咱们来弄明晰框架的准确含义。框架不单是是使用第三方代码,也不单是是一种形态或架构:

软件框架(software framework),平庸指的是为了终了某个业界设施或完成特定基本任务的软件组件法式,也指为了终了某个软件组件法式时,提供法式所条目之基础功能的软件居品。

软件框架与普通的代码库之间有几个枢纽的区别:

铁心回转:框架与库或设施用户应用门径不同,所有这个词门径的铁心流不是由调用者决定的,而是由框架决定的。而这平庸是通过模板来终了的。 可膨胀性:用户不错按照重载的面容膨胀框架,即编写用户专用的代码来提供特定的功能。 不可修改的框架代码:一般来说,框架代码不应该被修改,但不错吸收用户的膨胀。换句话说,用户不错膨胀框架,但不成修改其代码。

把柄界说,框架的主邀功能是提供功能、行径、进程和默许值,而且所有这些都是框架内置的,其中一些是不可革新或指定的。框架允许用户添加代码,但不成革新其代码。

所有的软件框架都可能引入谨防的问题,但我个人使用框架的警告仅限于Web做事(API、后端、全栈)、敕令行和GUI。2022年,越来越多的软件朝着Web发展,因此,本文征询的例子也仅限于Web框架。

人们使用框架的办法是,以更设施化、更快、更容易、更安全、更好的可膨胀性、更一致或更有趣的面容设备软件。关联词很讥讽的是,把柄维基百科的先容,使用框架不会提供任何公正,相背只须种种缺点。

设施化背后的思惟是,迫使设备人员按照事前界说好的面容编写代码。使用框架不仅不错营救代码的组织面容,而且API和逻辑也更容易辨识。关联词,我发现成果却事与愿违。2021年设备运维近况陈诉(参考臆想:https://puppet.com/blog/2021-state-of-devops-report/)标明,使用框架之类的时期根底无法保证表情得手。而将就设备人员使用框架只可导致情况进一步恶化。

低效公司的通病时时表当今:由一个团队界说设施、进程、引申、框架或架构,而其他团队则必须谨守。

相背,高绩效公司时时穷乏这些所谓的“营救设施”。

换句话说:强制设施化时期,时时收之桑榆。

其实,这并非莫得真谛:要是强制公司中的每个人都使用 Django,而不管表情的现实情况怎么,那么最终势必有好多表情会因为取舍Django而处处碰壁。

尽管如斯,框架确乎粗略为某个表情或团队提供公正。可是,设施化(和营救)基本莫得任何公正,以致弊大于利。

表情的设备速率、好奇性以及难易度,在很猛进度上取决于表情所处的阶段。应用框架生成模子的代码,不错勤俭编写开端代码的时辰。这少量我也答应。可是,对于一个设备了十几年的中大型团队来说,勤俭的这点时辰(半个小时?)是微不及道的。尤其是,经过了这样长的时辰,框架可能生成了数百个这样的模子,而其余几万个小时都花在了修改和谨防现存代码上。底下,我会详实证据从表情的持久发展来看,这种良晌的“设备速率提高”换来的却是对可谨防性的毁伤。

此外,安全性和性能高出依赖于大环境。框架会向表情添加无数代码。红运好的话,这些代码轻于鸿毛;但倘若红运欠安,则可能引入无数的潜在障碍和无数的支拨。我将不才文中展示其实不使用框架愈加容易确保安全性并提高性能。

“有损于谨防性”指什么?

软件得手启动,并进入使用,接下来咱们只需要平素谨防。谨防平庸分为以下几类:

改造式的软件谨防:建造bug; 注视式的软件谨防:防御谬误,稳步创新; 完整式的软件谨防:修饰与润色; 顺应式的软件谨防:继续设备。

不外,在本文中,我缱绻将软件进入使用后的所有变更都视为谨防。

在谨防期间内,任何躲闪谨防责任继续开展的身分,都应被视为危害。因此,要是使用框架会导致新功能的发布速率放慢,则视为危害。

此外,要是在软件设备的早期,使用框架有助于快速发布功能,但相应的代价是导致后期新功能的发布速率放慢,则视为有损于谨防性。

第三种危害是,框架的使用导致咱们需要付出非凡的远程,但这部单干作并不成为客户提供价值,比如框架升级、弃用、解说和信息摄入(举例学习新功能)等。这些责任需要付出奋斗的代价,而且时时是稀缺资源,比如你需要破耗无数时辰升级时期栈,正本这些时辰应花在提供用户或阛阓想要的新功能。

终末一种危害是,将来框架有可能不再稳妥表情。要是框架朝着不同的地方发展,或者使用了框架的软件朝着不同的地方发展,那么二者就不再适配。

框架与个人或团队有着不同的商酌

Ruby on Rails首创人DHH曾示意:

诚然你委托了框架巨大的但愿,但框架并莫得对你做出任何承诺。框架不错按照首创人的喜好,朝着任何地方发展。而你只可像一只至意的小狗通常缄默奴隶。

我敢信托,大多数框架的首创人对用户莫得任何敌意,他们发自若衷和蔼用户,而DHH信托也但愿用户在使用Rails时感受到快活。可是,这些首创人更和蔼的是有几许用户知足使用框架,并一齐相随,而不是你能否在接下来的十五、二十年内陆续创造价值。

许多Web框架,比如Django、Rails、Spring、Gatsby 和 Symfony等的营销词中都提到了谨防以及可谨防性。

Symfony:加速创建和谨防PHP Web应用门径的速率。开脱叠加的编程任务,享受铁心代码的力量。

那么他们是怎么终了的呢:

使用最好引申确保应用门径的踏实性、可谨防性和可升级性。

对于框架怎么提供持久的相沿,Rails 的官方态度是:

当某个版块系列不再受相沿时,建造谬误和安全问题的包袱由您自行承担。咱们会提供修补门径的向后移植并发布到git,可是不会发布新版块。要是你无力谨防我方的版块,则应升级到受相沿的版块。(参考臆想:https://rubyonrails.org/maintenance)

他们的态度很明确:框架不会持久提供相沿。为了让表情使用最新版块的Rails,你需要更新或移植框架,但这些责任都需要资源。

再者,即便脚下框架与你的商酌完满一致,中文但将来呢?尤其是对于刚刚启动的表情来说,谁又能先见曩昔呢?你的居品会对持Web应用的蹊径?你笃定将来只发布Windows桌面版的应用门径?你笃定在接下来的几年中关所有据库是最好存储处罚决议?你笃定你需要可膨胀性?十年之后Java PWA还会存在吗?

关联词,在取舍框架构建居品时,你就与它深度绑定了。长久绑定了。在表情之初,在领有的信息量最少的那一刻,你却做出了最枢纽的决定。

框架联想中的衡量会危及表情的可谨防性

与其他软件通常,框架的创建者必须做出衡量。举例,从流行框架的网站宣传中就不错看出,所有的流行框架都特地细心设备速率和可膨胀性。

关联词,这两个特征与可谨防性莫得任何相关,相背在有些情况下还会毁伤可谨防性。

设备速率的提高部分来自样板代码的生成,但更多时候来自秉承。框架生成代码就意味着创建新代码,但不认真谨防这些代码。举例react-boilerplate 或 create-react-app等框架就会生成无数的样板代码,它们只是代码生成器。但代码必须谨防,不然就会左迁,并激励各式问题,比如无数叠加、不一致、不兼容等,也等于咱们常说的“代码陈腐”。

框架不错通过其他技能处罚代码陈腐的问题,比如将所有代码都放入超类(或可重用函数)中,这样就能在一个合理的地方营救提供样板代码。算作用户(即使用框架的设备人员),你不错秉承类,或者取舍mixin的面容使用其他类、模块或函数的代码。

举例,在Rails中,你只需要秉承“一个模子”,就不错让对象公开无数形态。举个例子,假定Post有三个数据库字段:

那么,你至少不错取得 767 个群众类形态和 487 个群众实例形态,也等于说,你不错通过子类化秉承1200 多个形态!

由于Post类提供了这样多形态,是以你就必须谨防它们。毕竟,你的类为用户提供了这些形态。这些形态存在于你的类中、你的实例中。

它们深埋于框架的代码中,这就成了你的包袱,由你来谨防它们。这等于框架的实质,你无法更正,也无法铁心。

框架以致不错决定在某个时刻弃用或修改某个形态。由于使用了框架,是以咱们提供了无数的群众接口,却莫得能力铁心它。咱们的一切都将受到牵制,寄但愿于框架的创建者是个好心人,能提供更新,并保证框架的向后兼容性和可用性。诚然大多数框架的创建者都很友好,但谁也无法保证这些API长久踏实。还有Drupal之类的框架提供的升级如斯弘大,导致用户不得不完满重写表情,而且每隔几年就要履历一次这样的升级!诚然有些框架很友好,会远程保持向后兼容,而且每次升级都是很小的一步,但更新照旧幸免不了。而咱们只可折腰听命,必要时修改现存代码。

诚然许多框架不像 Rails 那样顶点,久久久精品美乳群众接口包含 1200 多个形态。但所有框架都为用户提供了 API、函数和类,毕竟这恰是框架存在的真谛。

咱们使用这些代码,并跟着时辰的推移,将咱们的代码愈加邃密地耦合到框架中。直到咱们的代码完满依赖于框架。

是以人们常说,在框架内设备软件,而不是应用框架设备软件,因为你确乎是在框架中构建表情。

此外,框架所能提供的性能与膨胀水平是相较于其他雷同的框架而言的。要是咱们能取舍底层架构,并进行优化,那么就能应用更少的代码,编写更高效、更具膨胀性的软件。而另一方面,各式框架却因导致表情出现性能问题,而频繁地出当今各大新闻头条中。举例,推特的“Fail-Whale”(失败鲸)事件等于因为Rails晦气的性能激励的,其后推特告示用Java重写了Rails代码库。这次事件走漏,大多数框架都会权贵加多性能支拨。

膨胀和性能问题的常见处罚决议是,取舍稳妥的架构,优化底层代码,并减少总代码量,这就意味着咱们必须粗略在发现性能问题时解放修改代码。只须旁边裕如的信息,咱们才能做出正确的取舍和优化。而框架会毁伤可膨胀性,因为咱们很难从一个框架迁徙到更稳妥的其他框架或架构,或者建立更合适的缔造。在遭受“Fail-Whale”之类的问题时,咱们都但愿优化有问题的代码,而不是用Java重写所有代码。

框架的构建初志等于为了铁心你的表情

使用框架设备软件时,表情势必会与框架深度绑定。每次咱们在Rails中编写:belongs_to(:author),或者在Django中编写:models.ForeignKey("Band"),就会导致咱们的表情与框架的绑定愈加邃密。

要是只是很小的一部分代码绑定到框架,那么还能保证一定的可谨防性。关联词,当这种绑定的障翳领域很大,界限隐约或完满隐藏机,就很难谨防了。当咱们的范畴和业务逻辑与框架代码混在一齐;当高档业务主见与底层的架构机制混在一齐;当业务逻辑混入底层架构,咱们必须阅读铁心器、视图、模子、工场、做事、竖立文献、库、框架代码,才能搞认识为什么案例A中创建了User,而案例B不需要,那么可谨防性就无从谈起了。

框架详尽出了许多时期细节,它们会提供一个ORM来详尽数据库的处理,就怕设备人员以致根底不需要清澈我梗直在使用数据库。他们只需调用model.save或User.find_by(email: "example.com") ,就能保存或获取数据,而根底不清澈这些数据现实上保存在PostgreSQL、sqlite照旧MongoDB中。诚然咱们不会被绑定到特定的数据库,但会绑定到ORM和框架。你不错解放使用任何数据库,但代价是无法再使用另一个ORM和框架。

HTTP、存储(如数据库)、事件总线、日记记载、音信传递等底层的机制,所有这些都是细节,它们与你的业务逻辑和范畴无关。

司帐应用的架构应该叫做“司帐”,而不是 Spring & Hibernate。@unclebobmartin

关联词,这些框架还鼓动设备人员将逻辑与框架代码搀杂在一齐。他们提供了各式API、类和函数,供咱们在业务逻辑中使用。因此,咱们的代码不仅会与框架邃密耦合,而且还会将业务逻辑和样板代码澈底混在一齐。更晦气的是,他们不时鼓动咱们通过这些“细节”来传播业务逻辑。在MVC模子中,M是存储,V是模板,而C是HTTP层,却莫得提供一个营救的、稳妥逻辑的地方来保存逻辑和范畴代码。框架鼓动咱们将这些代码放在最近的地方,而不是最肤浅谨防的地方。

在框架中设备软件时,雷同于如下的情况并不稀有:

defuser_paramsparams. require( :user).permit(permitted_user_attributes |[:use_billing,role_ids: [],ship_address_attributes: permitted_address_attributes,bill_address_attributes: permitted_address_attributes])end

仔细阅读上述代码,会让人感到毛骨屹然。这段代码高出穷乏连贯性,咱们的思维从范畴逻辑一跃而下,经过框架API到委派机制的细节,然后转折安全细节,再到业务逻辑,终末复返。看似是一段HTTP层的代码,内部却夹杂着许多业务逻辑。

要是是在一个干净的分层架构中,咱们信托会隔离这些时期细节,幸免将它们搀杂在一齐,同期将业务逻辑营救放在一个地方。

在这样的架构中,框架的作用并不迫切,范畴(或层)的真谛就在于独处、莫得任何依赖关系。这样的范畴代码不会依赖于反序列化 JSON、HTTP 标头、数据库事务、臆想池等任何时期细节。这样的范畴只和蔼范畴言语,比如它只会调用详尽形态posts_repository.create(post)。

这样的系管辖有精采的可谨防性,因为所有代码的作用都很明确。这样的系统是拆开的,而且是一个举座。要是你想修改Post的存储(比如你打消MongoDB,转而取舍径直在磁盘中保存Markdown文献),则只需修改PostsRepository。任何与业务逻辑相关的代码都不需要动。

还有走路,如果你的身体素质达到了一定的程度,那就是走路的时候,你会出汗,心跳加速,这是一种很好的锻炼方式,对你的身体提高免疫力很有好处。

欧美伊人久久一区二区

7月以来,江西省持续高温多少雨,降雨量较常年同期偏少6成,五河入湖水量偏少5成。受降雨偏少及长江干流水位偏低影响,鄱阳湖水位持续下降,星子站从12米枯水位退至7.99米,仅用31天,日均退幅0.13米,日最大退幅0.33米,为1951年有记录以来历史同期最低水位,较有记录以来平均出现时间提前115天。

将这些终了细节放入单独的一层,那么软件就会愈加易于谨防,因为代码变更都是单独的。有了这样的架构,即便使用了框架,也会被抛在一边,而且每次只需更换一小块的难度会大大缩小。

以解耦的面容取舍框架,不仅能享受框架带来的公正,而且还不错幸免毁伤可谨防性

许多人可能会说,不使用框架则意味着咱们需要入手编写所有代码。这种非黑即白的看法有点过于顶点。咱们不错很好地应用库和框架,同期也要编写好代码。咱们应该依靠(安全)大家来编写关系到安全的代码。要是不错幸免,咱们又何必学习怎么编写加密算法或处理密码的代码。咱们应该使用库来处理这些细节。

可是,咱们应该明确指定一个单独的地方。认真将HTTP旅途映射为形态调用的代码就应该放在HTTP层,不应该牵涉任何业务逻辑。拆开度越高,可谨防性就越好。代码令牌认证等处理不应该由咱们编写,而是应该营救放入一个单独的、有界限的区域。最好将其封装起来,并调整成范畴言语,如authentication.is_known_as_admin(request.token)。

发送音信的形态应该轻视地界说为messenger.deliver(recipent, body)。该形态的背后是一个完整的音信传递框架,不仅提供指数防御重试、缓冲、智能路由等功能,而且不错推送见告和发送电子邮件。

保存用度的形态叫做expenses_repository.add(expense),其背后可能使用了宇宙上最复杂的漫衍式数据库框架,或者使用了一个漂亮的框架将用度推送到某个在线司帐器用中。

枢纽不是长久不要使用框架,而是要拆开它们,并营救从一个地方调用。将框架的影响领域降到最低,这是咱们的包袱。

关联词,大多数框架预先定制了好多时期细节,而况都搀杂在一齐。因此,咱们很难将它们分开。这样的框架仍是失去了真谛,很快就会酿成库。

为什么莫得这样的框架?

领先,咱们的基本思绪是不依赖于框架,但构建框架却不使用框架,这与框架本身的商酌以火去蛾中。

其次,可谨防性精采的软件需要跟着时辰的推移而束缚发展,以顺应束缚变化的需求。

从HTTP迁徙到事件总线时,赫然你不再需要HTTP框架。当从基于 Web 的做事转而使用原生挪动应用的做事时,你所需要的也不再是HTML/CSS/asset,而是序列化和处理 JSON 苦求的形态。可谨防性条目软件束缚发展。HTTP框架提供HTTP做事,可是当需求发生变化,且你不再需要HTTP做事时,却没办法删掉这些框架。一些 MVC 框架提供使用关所有据库的 ORM,但要是ORM框架过期,你也没办法开脱它们。

第三,有些终了并不需要框架。举例,CQRS之类的架构现实上等于一个轻视的if语句:if(is_command) { command(params) } else { query(params) },写这种代码根底不需要框架。

终末,谨防责任的难易进度与使用特定的器用或框架无关。正如Symfony指出的那样:

最好引申不错保证应用门径的踏实性、可谨防性和可升级性。

而“最好引申”之一等于不要让框架铁心你的表情!

☞ iOS 16.1 更新;梦想否定王轶伦将去职;台积电鼓动职工放假;欧盟将于 2024 年营救 Type-C|极客头条

av中文字幕一区二区三区

☞ 第三届长沙 · 中国 1024 门径员节:共迎算力新期间,开源新曩昔

☞ 大厂都在“卷”的保举系统还有跳动空间吗?看青橙奖得主何如说 男男9禁无遮挡网站

Rails代码逻辑软件框架发布于:北京市声明:该文见地仅代表作家本身,搜狐号系信息发布平台,搜狐仅提供信息存储空间做事。

Powered by 久久精品无码中文资源站 @2013-2022 RSS地图 HTML地图