好代码是廉价的代码

长久以来我一直主张:好代码是廉价的代码。

当我跟做开发的同事说出这话时,他们的第一反应是一种惊愕,然后是将近一个星期的嘲笑,把它当作一个笑话来讲。 当他们走近看我的表情、知道我是认真的时,才收敛一点。

当最初的惊愕消退后,他们会用一些这样的话来反驳: “好代码不廉价,好代码是采用经过数十年计算机科学研究和积累得出的最佳实践设计模式和方法论建立起来的精心制作的程序代码。”

我只好继续解释为什么他们给出的好代码的定义有问题的原因是(这是很多开发人员都忽视了的一个原因): 知晓各种设计模式,框架,技术技巧只是事情的一方面,而知道何时该、何时不该应用他们才是更重要的问题。 在不知道一种技巧方式如何能对系统的开发有帮助的情况下,这种模式方法极有可能成为一种开发的阻碍,而不是一种有益的帮助。

我还要解释说,我所说的“廉价的代码”是指这些代码只需要很少的人/天数就能开发出来, 并不是说是由没有经验的开发人员、在很少的工资报酬下、用6个月封闭式、只有烤白薯和豆腐汤可吃的环境中开发出来的东西。

但是 … 设计模式毕竟是个好东西 … 不是吗?当然,但它们好在哪里?它们能提供什么好处?

  • 容易维护
  • 产品更健壮
  • 容易理解
  • 易于日后的改进提高
  • 更好的可跟踪性

你会发现所有的这些最终都落到一点上:从长期的角度看,它们能让你更快的做事情。 这事情有可能是系统迁移,或是增加一个新功能,不论是什么,通过运用这些方法模式,你会在时间效率上获得实实在在的好处。

这么说,我们观点一致吗?

怎么说呢,让我给你们说个例子,我们看看实现它的几种方式。

系统用PHP创建一个发邮件的表单,表单里有几个表单项,用邮件把这些数据发送给某个人。 除此之外,表单里的内容还要存入MySQL数据库里。

现在,用什么方式实现它们最好?按照传统的说法,采用最好的实践设计模式,你可能会想到这些:

  • MVC
  • N-层设计,包括数据库抽象层
  • 对象关系映射(ORM)
  • 可能用到的框架
  • XML配置和相关模型
  • 等等.

我可以说,这简直是疯了,客户的这些需求完全可以用10几行代码、一个小时里(包括测试时间)完成, 而且所有的那些方法模式所希望达到的效果(诸如可读性,可移植性,稳定性)都有了。 如果使用上面列出的那些,反而真正的会达不到这个目标,使代码复杂化,难于理解和维护修改。

那现在,假设客户又来了,要求做一些改动,比如要增加一个管理员的界面。这样的话,你就胜利了,你已经实现了很多很有用处的东西; 然而这是因为你在第一次开发这个系统时付出了很大的代价。 我要向你声明的是,即使我现在把这些简单的代码进行重构,增加一些简单的业务层,也仍然比按你要求的那种过度技术化的初始实现方案要简单的多。

再说了,如果客户要求的只是在表单里增加一个属性,那你的N-层设计方案会让你痛苦不堪,因为你需要改动各个层,包括那些CRUD代码。

SCRUM我发现Scrum能吸引我的最大一个原因是它能迫使你敏捷开发;它能迫使你在每个Sprint结束的时候把东西都实现、发布。 它不会让你做出目前用不到的多余的东西;它不会允许你在实现东西上有任何所谓“正确方式”的奢侈行为。

相反,在你需要的时候你才去重构。 当然,这会有一定的风险,因为在实现某些功能上你会花去比当初已经做了一些基础工作的情况下要更长的时间。 然而,产品开发就像是一个沙漠中四处漂移的沙丘,你永远不可能准确的知道一个产品在将来会做如何的改动。 所有的你花在实现这些很有吸引力的各种模式上的时间很可能会成为一种完全的浪费。

复用性有些人会指出,我所说的方式产生的代码不具有太多的复用性,不能在新开发的一些其它系统中使用。 我对这个问题的回复就是,在根本不知道某些东西是否/如何/在哪将会被复用的情况下去设计一个可复用的东西, 这就跟去实现一些你根本用不到的功能或你的应用里跟本用不到的功能一样愚蠢而糟糕。 如果你有一个清楚的远见,知道什么地方会复用这些东西,这就不同了,因为你确实有一个内部的业务需求在指导你正确的开发方向。

我的最后的思考 …

  • 了解你的设计模式,知道它们各自的好处(我一直认为,好的程序员和伟大的程序员之间的区别就在于伟大的程序员理解他们的模式);
  • 让你的代码廉价:
    • 当模式能够给你带来好处,而且为你省时时才去使用它们;
    • 如果不是这样就不要使用它们(例如:想想你最近的一次为什么要把系统迁移到一个不同的数据库上?);
    • 当框架能够帮你提高开发速度时才使用它们;
  • 在必要的时候重构,不要做一些超前性的开发;

我想,如果你能按照这些指导原则做事,你会发现开发周期变短、实现的代码更简洁,易于调试,易于维护修改。

本文英文原文链接:Good code is cheap code

代码并不廉价:用软件基础原理提升AI输出效率 作者:AI拉呱(Errol Yan)定位:AI领域深度内容与实战方法分享2025年2月,Andrej Karpathy创造了""这个词:描述你想要什么,让AI编写代码,忘记代码存在。这个概念火了。每个人都想相信编码变得像说话一样容易。一年后,Karpathy重新命名了它。新术语是"他的解释很尖锐:"用’工程’来强调这其中有艺术、科学和专业知识。“他在几周内从80%手动编码转变为80%智能体编码,并艰难地发现模型是"参差不齐的”——在难题上表现出色,却在明显的问题上绊倒。数据支持他的观点。 阅读详情

相关推荐

用Python对CAPM和Fama French Three Factor model的初步学习

用Python对CAPM和Fama French Three Factor model的初步学习概述介绍建模与分析CAPMFama French Three-Factor Model总结 概述 本文主要使用CAPM(资本资产定价模型)和Fama French Three Factor model来评估中国股票市场的股票价格。 使用CAPM来选择投资组合,然后建立Fama法国三因素模型来评估投资组合...

weixin_43168138的博客 5461

廉价raid_如何查找80行代码中的廉价航班

廉价raidSince travelling has become practically impossible, I decided to think about how I could start preparing for my next trip. That’s right, I got travel on my mind. 由于实际上已经不可能旅行了,所以我决定考虑如何才能为下次旅行做准...

weixin_26752765的博客 217

网易CodeWave智能生成应用实战:5分钟搞定库存管理系统(附详细配置截图)

本文详细介绍了如何利用网易CodeWave智能生成应用在5分钟内快速构建定制化库存管理系统。通过自然语言描述需求,无需编程即可生成包含产品管理、库存预警等核心功能的应用,并支持字段微调、业务流程注入等深度优化。文章附有详细配置截图,帮助用户高效实现数字化转型。

julia4scientist的博客 888

VS Code + ESP-IDF原生开发实战:从环境搭建到LAN8720以太网调试

ESP-IDF是Espressif为ESP32系列构建的系统级开发框架,深度集成FreeRTOS、LWIP、VFS与硬件安全模块,远超Arduino Core的封装层级。其核心价值在于对底层资源(如PHY寄存器、电源管理、TCP/IP栈参数)的精确控制能力,支撑工业级可靠性需求。在Windows平台,Python路径注册、终端环境一致性及工具链完整性是三大高频故障源;而VS Code通过ESP-IDF Tools、C/C++与CMake Tools插件协同,实现编译配置、智能感知与构建流程的全链路可控。典型

weixin_33816300的博客 387

Trans论文复现:电池储能调峰和调频:超线性增益的联合优化程序代码!

本程序参考一区SCI期刊《Using Battery Storage for Peak Shaving and Frequency Regulation: Joint Optimization for Superlinear Gains》,程序。与之前将电池储能用于单一应用相比,研究结果表明,如果电池联合提供多种服务,它们可以获得比以前想象的更大的经济效益。欢迎感兴趣的小伙伴关注下方公众号获取完整版代码哦~,小编会继续推送更有质量的学习资料、文章程序代码~限于篇幅,仅列出部分算例的结果!

weixin_48747334的博客 567

三相电路小白必看:正弦量向量表示法保姆级教程(附欧拉公式推导)

本文为电气工程初学者详细解析了三相电路中正弦量的向量表示法,即相量法。通过几何直观和欧拉公式推导,阐明如何将时变正弦量转化为静态复平面向量进行运算,并利用平行四边形法则简化同频正弦量的加减计算。文章结合Python代码进行可视化验证,帮助读者牢固掌握这一分析交流电路的核心工具。

linux6sysadmin的博客 997

improve完整指南:让AI高级顾问审计你的代码库,为廉价模型生成可执行计划

improve 是一个开源 AI 代码审计工具(Agent Skill):它让能力最强的 AI 模型担任代码库高级顾问,全面审计你的代码库,输出带优先级的发现表,并为更便宜的 AI 模型写出自包含、可执行的实施计划。计划就是产品——improve 自己从不写一行业务代码。 🎯 **适合谁用**:正在使用 AI 编码智能体的开发者。想实现"聪明的模型动脑、便宜的模型动手"的分工,让 AI 代码审

gitblog_00403的博客 391

使用HART Server PC软件进行HART设备的组态、调试和分析的完整指南

HART协议是一种用于工业自动化中的双向通信协议,能够在4-20mA模拟信号的基础上叠加数字信号,从而实现设备的远程监控和管理。HART协议兼具模拟和数字通信的优点,被广泛应用于过程控制系统中。设备组态:通过软件可以对HART设备进行组态,配置设备参数。设备调试:支持设备的在线调试和故障诊断,方便快速解决问题。数据分析:提供设备运行数据的实时监控和历史数据分析功能。报表生成:支持生成各类报表,便于数据记录和管理。

qq_38334677的博客 2471

AI代码评审:完整上下文如何让廉价模型超越旗舰模型

在AI辅助编程领域,大型语言模型(LLM)的应用正从简单的代码补全扩展到更复杂的任务,如生成高质量的Pull Request描述。其核心原理在于模型根据输入的上下文信息进行理解和生成。这项技术的价值在于能极大提升开发效率,将开发者从重复性的文档工作中解放出来,并生成更具技术深度和文档价值的产出。然而,其效果高度依赖于输入信息的质量,即模型所“看到”的上下文。实验表明,当为模型提供完整、结构化的代码变更上下文(如包含所有修改文件的完整差异、按时间顺序组织的提交信息)时,即使是像Claude Haiku这样的“

weixin_30781433的博客 835

操作系统 | 知识梳理 | 复习(上)

操作系统复习

知识库搭建ing 3476

Halcon 形态学 开发案例 (开运算opening(先腐蚀再膨胀)、闭运算closing(先膨胀再腐蚀))

算子方法:功能:使用用户自定义的结构元素对区域进行开运算参数: Region(输入参数) :输入区域 StructElement(输入参数) :结构元素(区域) RegionOpening(输出参数) :开运算后的区域功能:使用圆形结构元素对区域进行开运算参数: Region(输入参数) :输入区域 RegionOpening(输出参数) :开运算后的区域 Radius(输入参数) :圆形结构元素的半径功能:使用矩形结构元素对区域进行开运算。

程序员,他们想的是什么?他们想的永远都是技术,他们崇尚的也永远都是技术。 1619

生成代码越廉价,理解代码越珍贵!

生成代码越廉价,理解代码越珍贵!

程永强 1170

Qt Creator牵手DeepSeek,开启AI开发新征程

Qt Creator 是一款功能强大的跨平台集成开发环境(IDE),专为 Qt 应用程序开发量身定制。它支持在编程过程中使用 GitHub Copilot 等编码助手,能帮助开发者为桌面、移动端和嵌入式平台创建软件。在代码编辑方面,Qt Creator 具备代码补全、语法突出显示、重构等功能,内置文档也随手可得,极大提高了代码编写的效率和准确性。

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 7189

Agent让代码变廉价之后,什么变贵了?

你要做的,是成为「价值的源头」——能判断需求是否真实、能设计系统架构、能为Agent设定约束和护栏。这个过程中,你会发现自己真正的价值在哪里——不是「我能做多快」,而是「我知道什么该做、什么不该做」。英伟达的数据中心收入、SK海力士的HBM订单、英维克的液冷设备——这些不是概念,是正在被兑现的订单。过去,很多公司的竞争力来自于「我能招到更好的工程师」「我有更快的开发流程」「我的技术栈更先进」。——不是他写的,是他的Agent写的。现在,一个懂业务的人,可以直接对着Agent说需求,Agent把代码吐出来。

u013527895的博客 347

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

优秀的程序反而是廉价

长久以来我一直主张:好代码是廉价的代码。 当我跟做开发的同事说出这话时,他们的第一反应是一种惊愕,然后是将近一个星期的嘲笑,把它当作一个笑话来讲。当他们走近看我的表情、知道我是认真的时,才收敛一点。 当最初的惊愕消退后,他们会用一些这样的话来反驳:“好代码不廉价,好代码是采用经过数十年计算机科学研究和积累得出的最佳实践设计模式和方法论建立起来的精心制作的...

weixin_33881050的博客 89

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

VisualCodeGrepper实现廉价的代码基本安全问题排查

虽然对安全测试的原理和黑盒检测方法有所了解,但是白盒的方法去发现软件安全隐患确实让人倒吸一口凉气,但是,总有人了解我们的痛苦,这不VisualCodeGrepper就是这其中的一个便宜工具。          VCG是一个支持C++, C#,VB, PHP, Java and PL/SQL的自动化代码安全审查工具,如上所说,他能够在资源有限的情况下廉价快速地帮助我们快速找出工程代码中可能的安全问

敌测漏师 6177

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

在C++工程中main函数之前跑代码的廉价方法

// test.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include #include /// 在C++工程中main函数之前跑代码的廉价方法 /// 利用全局变量可以赋可变初值的事实 /// mainCRTStartup() => _cinit() => 全局变

博客标题不能为空 1161

代码正在变得廉价,判断力正在变得昂贵

过去几十年里,软件行业一直遵循着一个相对稳定的发展逻辑:需求分析、架构设计、编码实现、测试验证,再到最终上线交付。在这一过程中,程序员最核心的价值始终围绕着代码本身展开。谁能够写出更高质量的代码、设计更优雅的架构、解决更复杂的技术问题,谁就拥有更强的竞争力。然而,随着生成式AI和Agent技术的快速发展,这套逻辑正在被重新定义。从ChatGPT、Claude到Cursor、GitHub Copilot,再到近期不断涌现的AI Coding Agent,软件开发领域已经进入一个新的阶段。

2601_96286522的博客 390

外刊IT评论:好代码不值钱

<br /><br /> 长久以来我一直主张:好代码是廉价的代码。<br /><br />当我跟做开发的同事说出这话时,他们的第一反应是一种惊愕,然后是将近一个星期的嘲笑,把它当作一个笑话来讲。当他们走近看我的表情、知道我是认真的时,才收敛一点。<br /><br />当最初的惊愕消退后,他们会用一些这样的话来反驳:“好代码不廉价,好代码是采用经过数十年计算机科学研究和积累得出的最佳实践设计模式和方法论建立起来的精心制作的程序代码。”<br /><br />我只好继续解释为什么他们给出的好代码的定义有问题的

caoquanyang2011的专栏 653
上一篇: 移动Web界面样式-CSS3
下一篇: 名词王国里的死刑(翻译) - A Story of Hello World
SleepInDelphi
博客等级 码龄19年 32粉丝 388原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值