别学框架,学架构!

从零开始学架构 例如,把一个发动机和一台 PC 放在一起不能称之为一个系统,把发动机、底盘、轮胎、车架组合起来才能成为一台汽车。一个学生信息管理系统,这个系统从逻辑的角度来拆分,可以分为“登录注册模块”“个人信息模块”、“个人成绩模块”;从物理的角度来拆分,可以拆分为Nginx、 Web服务器、 MySQL。框架关注的是“规范”,架构关注的是“结构”。框架的英文是Framework,架构的英文是Architecture。“基础结构”这个概念并没有明确说是从什么角度来分解的。 阅读详情

前段时间,我有过一次非常有趣的谈话。有个同事站出来支持Angular,他说Angular加快了Web开发的速度。我已经开发复杂的web服务超过10年了,曾经在Microsoft工作,也曾在Cyprus为Spotware工作。目前,我为硅谷的一个初创公司编写应用程序。总的来说,我会顺应潮流。但我感觉自己像只恐龙,因为在我看来使用前端框架没有什么意义,但它被证明是主流。在2014年,我投入到Angular、Knockout和Backbone的世界中。如果你想弄清楚我从中得到了什么,为什么停止使用它们并且推荐你们也这样做,那么欢迎继续往下看。


我们都知道Angular有很多问题,调试是其中一个主要的问题。当发生一个没有文档化的错误时,只有stackoverflow能够救我们。但是我们也应该找出发生了什么,以及最重要的找到哪里发生的。Backbone和Knockout也有缺点。然而,很多人在使用它们,因为它们的优点更加重要。说实话,他们没有看到别的选择。但是,我们是有选择的,只是我们忘记它了。


每个模块都应该只执行一个功能,还记得这条古老的原则吗?如果一个模块执行了两个或者更多的功能,我们应该将其拆分为不同的部分。我们可以找到大量的理由来说明为什么这么做以及为什么我们应该坚持这样做。无论如何,所有已有的框架都违背了这条原则。而且,“框架”这种方法本身就违背了这条原则。框架给我们带来一定限制,它让我们遵循最佳实践。最佳实践也在不断发展,对于一个小规模的开发人员团队来说,他们可能不会知道哪些实践更适合一个小页面,一个包含了数据管理的复杂逻辑的管理面板,或者具有高性能需求的多媒体网站。只有当你是一个新手程序员的时候,使用框架可以约束和规范你的代码。我的建议是使用最佳实践,但是不要使用框架。让我来解释为什么是这样。


框架看起来像是一些非常大并且很难重现的东西。但是它只是一些标准模式的集合。例如,Backbone模型中使用了观察者模式,同样在Angular和Knockout数据绑定中也使用了它,这带来了非常好的效果。但观察者模式只是一个很著名的模式,我们可以用30行JavaScript代码来实现它,或者从成千上万的现成的实现中下载一个(顺便说一下,它们除了方法名字,其它都是一样的,因为模式的原则是相同的)。框架的其它组建也是通过类似的方式实现的。在理解这些原则之后,我们在很多时候可以不用写任何代码。例如,当我们在一个小组件中实现MVP时,我们可以在头脑里将这些方法分为控制器,将属性分为模型等等。


从实践中得到的一个示例:我参加一个西班牙公司的工作面试,在那里我必须通过在线编码的形式,在一个小时以内完成一个测试。这个任务是针对文档创建一个单页面应用程序。我使用JavaScript来完成这个任务,其中只使用了libraries模块。我甚至有时间去写一些测试。他们不能理解我是怎么在不使用框架的情况下实现路由的,以及复杂的交互元素和其它很多事情。他们都是在这个行业中混迹了10年以上的资深人士,但是他们只是学习了特定的解决方案,而非原则。


学习框架,你不得不重新学习,学习那些不断出现的新的解决方案,而且你的部分经验会最终变得毫无价值。但是当你学习原则——原则是不会变的。为了创建类,我使用一个五年前编写的类库,观察者模式的实现一直没有变化。每一个类库都只执行一个功能,并且执行的很好。我从来没有想过像框架那样,将一个组件替换成另外一个。因为观察者就是观察者,它是一个模式,而不是代码。我们可能会根据任务来组合不同的模式,但模式不会改变。另外一个原则是我们可以扩展代码,但不能修改代码。我们可以在网上,或者“四人帮”的书中找到对应的根据。在这个原则下,如果你哥框架或者类库有第二个,第三个或者第十个版本,一些功能会被删除,其它功能会被修改,这会造成一些产品bug。对于修改代码来说,唯一的好原因就是适配新的浏览器,但是公开方法无论在任何情况下都不应该被修改。


编程成为了市场的受害者。它们为我们提供一个“魔法”按钮,承诺可以解决我们所有的问题。但是结果呢,我们逐渐习惯去使用它,但并不能分解复杂的问题,将小麦从麦壳中分离出来。我会去使用框架吗?只有当编写一个将来无需维护的产品时,我才会用框架。但如果要在一个会持续至少一两年的服务中使用框架的话,则完全是一种自杀行为。在此期间,你将会编写更多的代码,比整个框架的代码还要多,并且不止一次面对框架带来的各种限制。你花费在编写各种变通方法的时间,可能会比不使用框架而去实现大量必要组件的时间更多。


你不是在发明轮子。实际上,你确实是在使用类库,但是你是根据真实的场景而非预定义的方式来组合它们。有人可能会说,框架也可以进行扩展。但是如果我想要根据我的API来获取Backbone模型,或者根本不获取它们,会怎样呢?或者我想从本地存储中获取它们?如果我们有复杂的更新逻辑,它依赖时间和标记,而我们应该在获取之后向另外一个服务器发送同一个模型池,又会怎样呢?你永远不会知道。我们应该在这种情况下使用Backbone吗?我们只会使用它的5%的功能,其余的都是各种变通方法和自定义逻辑。与此同时,在理解架构原则后,我们去创建一个解决方案来适应每一个任务,并让它可以应对需求变更,并不是一件很难的事情。


众所周知,程序员在大部分时间并没有在打字,而是在思考,在设计模式方面进行思考有助于提高效率。当我寻找一些有趣的架构解决方案时,我经常会阅读一些新的类库的公开方法。如果它的实现不是很清楚,我会查看代码,但是这里有一条原则,想法是最重要的。例如,我们可以在10分钟之内完成promises,但是它的效果如何,那就是我告诉你不要学习框架而要学习架构的确切的原因。


P.S.:这篇文章就是希望能引起争论。当然,框架有一定的优势,但是它会让人变成“傻瓜”。如果不使用框架,你不能解决问题,并且因此耽搁数天甚至数周,这就是一件很丢人的事情。事实上,如果我们集中注意力在正确的事情上,在架构解决方案上,就会变得非常简单。这就是我试着告诉你的事情。希望这篇文章能给新手带来帮助,也希望这里描述的方法能够让他们将来变成非常酷的程序员。

架构、框架和设计模式   最近要填写项目经验,想把去年写的一个网站(Spring MVC)经验写上去装一下,刚百度了一个Spring MVC就搜出了一堆东西,然后想当然的搜了一个三层架构(这是学软件工程的时候提过的),以为就是MVC,然后,我就懵了,原来他俩不是一回事!同时,我这学期在学《软件体系结构》这门课,老师第一节课的时候笑着对我们说,这门课的目标是培养未来的架构师,我心里想,比码农高大上多了!那时候我以为架构=... 阅读详情

相关推荐

《速学宝典指南!提示工程架构师构建智能化提示框架》

关键词:提示工程架构师、智能化提示框架、提示工程方法论、提示优化策略、LLM交互设计、提示生命周期管理、提示工程最佳实践摘要:本文为提示工程架构师提供了一套全面的智能化提示框架构建指南,旨在通过系统化方法将提示工程从经验性实践提升为工程化 discipline。作为连接人类意图与AI能力的关键桥梁,提示工程架构师需要掌握提示设计的理论基础、架构原则和系统实现方法。本文深入解析了提示工程的第一性原理,构建了包含提示抽象层、编排引擎、优化系统和评估机制的完整架构,并提供了从概念设计到企业级部署的全生命周期实施路

SuperAGI2025 802

java只会框架 感觉学的东西不多_如何深入的学习Java框架(ssm,springboot,springcloud等)?...

底层基础决定上层深度,框架的知识你能理解到什么程度取决于你对基础的掌握,基础学不扎实,那么上层的框架你也只能到使用的地步,根本没有什么创造力。国内的很多初级程序员崇尚高新技术,什么这个框架,那个框架貌似玩的都很溜,但是深入了解之后发现都只是表面功夫,对于底层原理,算法,设计思想,通信原理等等都是一知半解。这样进入企业后,永远只能是干体力活。这些跟很多人是半路出家是有很大关系的,很多转行的程序员因为...

weixin_34410975的博客 352

tas:一个很小的框架,可以轻松操纵tty并创建伪造的二进制文件

塔斯社 一个很小的框架,可以轻松操纵tty并创建伪造的二进制文件。 怎么运行的? 该框架具有三个主要功能,tas_execv,tas_forkpty和tas_tty_loop。 tas_execv:它与execv类似,但不会重新执行当前的二进制文件,这对于创建伪造的二进制文件非常有用。 tas_forkpty:与forkpty相同,但是它填充了自定义结构,有关更多详细信息,请查看forkpty手册页。 tas_tty_loop:这是对tty进行操作的地方,您可以为输入和输出设置一个挂钩函数,因此可以存储用户键入的键或操作终端输出。 (请参阅 )。 这是一个肤浅的概述,请检查tas / fakebins / fun文件夹中的代码以了解其实际工作原理。 假货 通过操作PATH环境变量,或使用bash的别名(或任何其他支持别名的shell),您可以运行另一个程序,而不是用户通常运行的程序。

【译】别学框架,学架构

前段时间,我有过一次非常有趣的谈话。有个同事站出来支持Angular,他说Angular加快了Web开发的速度。我已经开发复杂的web服务超过10年了,曾经在Microsoft工作,也曾在Cyprus为Spotware工作。目前,我为硅谷的一个初创公司编写应用程序。总的来说,我会顺应潮流。但我感觉自己像只恐龙,因为在我看来使用前端框架没有什么意义,但它被证明是主流。在2014年,我投入到Angul...

weixin_34352449的博客 152

基于SPRING框架的平安PAFA架构解析

基于SPRING的开发技术核心、数据库查询语句优化、PAFA框架基本配置文件说明等。

基于Dubbo的Pafa5分布式框架源码

Dubbo是阿里巴巴开源的分布式框架,pafa是常见的基于Dubbo做的服务治理平台,广泛于分布式系统中

请停止学习框架

作者:sizovs 译者:方应杭来源:https://zhuanlan.zhihu.com/p/52814937我们都是程序员,我们需要与技术保持同步。每一天...

纯洁的微笑 1369

平安pafa框架源码

平安最新pafa4.07框架源码,概阔了pafa的全部技术,平安最新pafa4.07框架源码,概阔了pafa的全部技术

快点来学吧!Java框架体系架构的知识,超详细

前言 要相信,你现在所有的努力和付出都会在将来的某一天回报给你! 首先阿里巴巴作为国内互联网行业的领头羊,培养了一代又一代的IT技术人才,很多想进阿里这些互联网大厂的程序员看中的不仅仅是高薪+丰厚的福利待遇,同样也看中了学习氛围以及人脉圈子,这些资源在你以后对你来说都将是一笔财富。 如果你想进大厂,一定是要求自身技术栈能达到企业的需求甚至超过企业的需求,关于技术如何提升的问题,一直以来都备受关注,IT行业发展的很快,程序员要保持不断学习,因此,就算是相同起点的人,经过几年的工作或学习,会迅速拉开极大的差

m0_56710876的博客 294

F460 CLK配置功能模块说明

F460CLK配置功能模块说明 目录 F460CLK配置功能模块说明 CLK配置: 1. DDL_ICG——初始化配置 2. DDL_UTILITY——基础功能函数 3.DDL_PRINT-待细化 4.DDL_ADC 5.DDL_AES——AES 加解密算法处理器 6.DDL_CAN 7. DDL_CLK 8. DDL_CMP——电压比较器 9. DDL_CRC 10. DDL_DCU——数据计算单元 11. DDL_DMAC——DMA 控制器 ...

childboy的博客 2462

调试GMS应用,报错“此设备未获得play保护机制认证”问题解决

不少同学在调试GMS相关应用时,需登录Google账号,有时会弹出如下通知。Google登录界面也会出现如下提示这个报错的原因是设备未通过Google认证,google服务器未配置荣耀设备的型号白名单导致国内网页有一些指导方法在鸿蒙\荣耀的设备上消除这个提示,但本质的问题没有解决,无法登录Google账号。

胡同老道的博客 2万+

java 分布式计算框架_学Java分布式和高级架构,必懂的两大知识点!

原标题:学Java分布式和高级架构,必懂的两大知识点!第一部分:分布式 三步变成:分布式1、将你的整个软件视为一个系统(不管它有多复杂)2、将整个系统分割为一系列的 Process(进程), 每个 Process 完成一定的功能3、将这些 Process 分散到不同的机器上。分散后,选择若干种(没错一种可能不够)通信协议把他们连接起来端正认识:分布式不等于并行计算分布式系统和并行计算一定可以并行吗...

weixin_27322123的博客 826

Hopf振荡器在机器人步态控制里到底怎么用?一个CPG仿生案例说清楚

本文深入解析了Hopf振荡器在机器人步态控制中的实际应用,通过CPG仿生案例详细展示了从数学方程到关节指令的完整流程。重点探讨了Hopf振荡器的极限环稳定性、参数调节技巧及自适应控制策略,为机器人运动控制提供了高效解决方案。

weixin_29284657的博客 203

TOGAF企业架构:掌握数字化转型的关键武器!

对于一名架构师来讲,如果说编程语言是知识库层次中的入门石,那么企业架构框架则相当于知识库层次中的金字塔尖。如果想成长为企业级的架构师,企业架构框架是必须要攀登的高塔。目前国内绝大多数企业采用TOGAF标准,因此我们的讨论主要围绕TOGAF展开,涉及主流版本9.1和9.2。在这个过程中,笔者还会广泛运用摩天轮学习法,以便更清晰地呈现相关内容。在本文中,笔者将首先讨论企业架构框架TOGAF的学习方法。目前,关于TOGAF的学习材料主要以官方手册为主,网上的资料大多不成体系。

程序边界 5230

红外通信不止遥控器:手把手教你用2ASK调制实现语音+温度数据同传

本文详细介绍了如何利用2ASK调制技术实现红外通信系统,同时传输语音和温度数据。通过STM32F103C8T6微控制器和DS18B20温度传感器的硬件设计,结合2ASK调制原理,展示了系统的完整实现方案。文章还提供了调试优化建议,适合电子爱好者和通信工程学生实践学习。

weixin_42531588的博客 389

【DDSCAT——离散偶极近似仿真程序05】模型设计Matlab代码:多核壳球 、多核壳圆柱

简洁明了,后面及部分给出的都是模型设计的Matlab代码,这些代码都来自于一篇文章:Chin C W S. Localized Surface Plasmon Resonance with the use of Silver and Titanium Oxide Nanostructures[J]. 2011. 一、设计多个核壳球形结构 1)Matlab代码 ...

XD_Yangf的博客 4263

零基础如何学架构

“无意中发现了一个巨牛的人工智能教程,忍不住分享一下给大家。教程不仅是零基础,通俗易懂,而且非常风趣幽默,像看小说一样!觉得太牛了,所以分享给大家。点这里可以跳转到教程。” 都说程序员的发展方向有两个:一是一直钻研技术,往架构师方向发展;二是转管理,往技术管理方向发展。由于在管理的道路上已经“人满为患”了,大部分程序员的选择只有一个:往架构师方向发展。那么,如何才能成为一位优秀的架构师呢?成为一位架构师需要学习哪些技术知识、具备哪些能力呢?带着这种种的疑问,我阅读了《从零开始学架构》一书,该书是由极客时间

周兆熊的专栏 3356

把 SAP Query 用到极致:ABAP Query 的核心概念、配置流程、权限与运输治理全解析

摘要:SAP Query 是一款面向业务用户的自助报表工具,可解决标准报表无法满足业务需求的问题。其核心由四大组件构成:Queries(报表定义)、InfoSets(数据视图)、User Groups(权限分组)和Translation(多语言支持)。通过SQ03、SQ02、SQ01事务码分步创建用户组、数据视图和查询,业务用户无需ABAP知识即可生成Basic List(明细)、Statistics(统计)和Ranked List(排名)三种报表形式。典型案例展示了如何为采购部门设计包含明细追溯和Top1

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 182

我要带徒弟学JAVA架构 写架构,非用架构

我要带徒弟学JAVA架构 写架构,非用架构

fswhwd的博客 1万+

倍福PLC--PERSISTENT断电保持数据和BOOT中各文件对应的解析

将D:\TC3程序\TwinCAT Project146\TwinCAT RT(x86)\Plc 文件夹的中三个替换文件复制到:G:\TwinCAT\3.1\Boot\Plc完成替换,如下图。(2) 找到程序所存的路径,编程电脑的D:\TC3程序\TwinCAT Project146路径下,并选择对应系统平台TwinCAT RT(x86)(3) 控制器断电,拔出内存卡,使用读卡器,在编程电脑中打开:(本次测试读卡器为G盘)(5) 开机完成后,TwinCAT自动运行,当前闪灯频率为50ms。

weixin_41883890的博客 2347

YOLOv11 结合 BiFormer 注意力:打造多场景高精度检测模型实战教程

注册BiFormer模块(若代码未自动注册)# 加载自定义配置的YOLOv11模型。

know_F0727的博客 254

Github点击破百万!这部《从零开始学架构》神书就此霸榜

成为架构师是程序员进阶不可或缺的一条路径,尤其在当今愈加智能化的社会,对每位程序员的架构能力都提出了新的要求。书中自有颜如玉书中自有黄金屋,只有不断学习,才能摆脱35年龄下岗的梗!一钻研技术,成为架构师;二是当管理,往技术管理层面发展,但在管理的道路上已经近乎饱和,大部分程序员的选择就是:往架构师方向发展!《从零开始学架构》,耐心看完,你会收获更多的感悟。“架构”到底指啥,很多人不一定能够准确地回答。例如: 架构和框架是什么关系?有什么区别?

m0_69305074的博客 326

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

「企业架构框架」企业架构框架图

什么是企业架构框架图?企业架构框架图是架构的分类方案(治理架构,业务架构,信息架构,技术架构,人力资本架构,安全架构,系统架构,软件架构,基础架构架构等)及其重要工件。企业架构框架可用作背景来报告一种或多种类型的工件,例如构成架构的概念。通过导入excel数据创建企业体系结构框架,以进行法规遵从性分析。通过此图,您可以清楚地了解组织中哪些体系结构是可识别和管理的。更重要的是:您可以清楚地了解每个体...

全网:架构师研究会 1210

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

别再当AI保姆了!开源ART框架能让你的AI智能体自己学“干活”

ART框架:解放开发者,让AI智能体自主成长的强化学习健身房 ART是一个开源强化学习框架,通过引入RULER机制解决了传统奖励函数设计的痛点。开发者只需定义最终目标,RULER会像"AI裁判"一样评估结果,无需人工设计每一步的奖励规则。该框架支持主流大模型,采用客户端-服务端分离架构,安装简单且资源友好。ART特别适合训练小模型成为垂直领域专家,可应用于智能邮件助手、游戏AI和多Agent协作系统。其创新之处在于让中小团队也能高效训练高性能AI智能体,推动"人人都有AI助理&

攻城狮7号的博客 2037

贝叶斯统计 [韦来生编]

贝叶斯(Bayes)统计是近几十年来迅速发展起来的数理统计的一个重要分支。贝叶斯方法与经典统计方法的主要不同之处是进行统计推断时除了利用样本信息外,还要利用参数的先验信息,因此可以提高统计推断或统计决策的效果。它在经济、金融、生物、医学、自然科学和社会科学等许多领域具有广泛的应用。贝叶斯方法的研究已渗透到了统计学的几乎所有领域。作者在给中国科学技术大学概率论与数理统计专业本科生开设的“数理统计”课程中有一章专门讲授“贝叶斯方法和统计决策理论”,近十年来也给中国科学技术大学概率统计专业研究生开设过几次“贝叶斯分析”课。本书是在对过去讲稿的内容作了适当的增减和调整的基础上完成的。  本书共分六章。第1章是绪论,介绍了贝叶斯统计的若干基本概念,同时对必要的数理统计的基础知识有重点地作了回顾。第二章介绍了确定先验分布的若干可供选择的方法。第三章介绍了几类常见统计模型参数的后验分布的主要结果和计算方法。第四章和第五章分别介绍了“贝叶斯统计推断”和“贝叶斯统计决策”的内容。第六章介绍了贝叶斯统计计算的若干方法,包括蒙特卡洛方法和马尔可夫链蒙特卡洛(MCMC)方法以及相关统计软件的简介。本书的每一章附右大量的例题和习题,书末附有常用的几个表格和部分习题解答供读者查用。  大约可在54学时内讲授本书的第1章至第六章的主要内容,教师可根据学时需要选讲本书第1章至第六章的部分内容。书中标“*”号的章节可略去不讲,留给读者作为阅读材料。第六章例题中的R代码和部分例题的数据文件等可从作者个人主页下载。  作者在编写本书的过程中参考了J.O.Berger教授的《统计决策论及贝叶斯分析》和茆诗松教授编写的《贝叶斯统计》等书中的一些内容,以及《贝叶斯分析》一书中由张伟平博士编写的有关贝叶斯统计计算的一些内容。在此表示衷心感谢。  本书编写准备过程中,中国科学技术大学统计与金融系的几个研究生帮助完成了本书部分中文的录入和排版,作者对他们的辛勤工作表示真诚的感谢。高等教育出版社为本书的出版给予了大力支持。在此一并致谢。

上一篇: 回归博客
下一篇: Linux中操作SVN
Tectool
博客等级 码龄11年 11粉丝 13原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值