阅读更多

14顶
4踩

研发管理

翻译新闻 最少编码原则

2012-03-30 10:00 by 正式编辑 sherry617 评论(23) 有13629人浏览
本文作者是一位资深软件工程师,他根据多年的编程经验,把自己的观点组织整理成本文,希望能给大家一点启发。

“最少编码原则”并不是说写的代码少到令意思表达不清楚。其实在很多情况下,可以只写几行代码就能执行相同的逻辑,但这对于后来接手的开发者来说是非常棘手的。最少编码不只是写最少量的代码,还意味着优雅的代码。如果你是有经验的程序员,可能就会明白我将要说什么了。本文的目的是尝试着去阐述清楚这个原则,虽然程序员们都听过都了解该原则,却很少能在每天的工作中将其运用起来。

最少编码指的是代码不仅仅全面解决了问题,而且除了执行能够准确地解决问题的逻辑行,没有其他多余的行。代码要尽可能普通,简单的代码也是优雅的代码,程序员看到这样的代码会感到愉悦。

最少编码和设计良好的解决方案之间有着密切的关系,优秀的解决方案可以大大减少代码量。使用组态代码(不同功能的代码可以很容易地组合)以及减低代码行或逻辑之间的耦合度,就是很好的代码设计例子,同时也符合最少编码原则。

将一段代码转换成最少代码就是我们通常所说的重构,重构可以删掉多余的不必要的部分,精简代码。

大量的代码需要执行大量的逻辑,很容易造成bug。没有写出来的代码才没有bug,只要在编辑器中输入了字符,那么bug也可能潜伏在其中。重点是,如果代码不是特别繁琐,那么潜在的bug也会相应减少,最少编码原则可以将出现bug的可能性降到最低。

如何写出最少代码?通常在写代码前要进行代码设计,而不是一来就开始敲代码,这是毋庸置疑的。简单的、通用的逻辑能减少代码量。对第一稿代码运用代码重构可以使代码简练,将最终版本转化为优雅的解决方案等,这都遵循了最少编码的原则。其实反复思考以及不断运用最少编码原则能够使任何垃圾代码变得优雅。

原文链接:Principle of least coding
14
4
评论 共 23 条 请登录后发表评论
23 楼 Frederic 2012-04-01 00:56
我推荐大家看看《编程艺术》吧,重在编码思想!
22 楼 java-xb 2012-03-31 17:55
白说了一大堆 没说明白怎么简单写代码,太笼统了
21 楼 tlde_ti 2012-03-31 16:19
fyunli 写道
简洁、优雅不代表代码量就最少了

在代码层面,代码量少的不一定优雅,不过代码量一大堆的肯定不优雅。
20 楼 jayjayjays 2012-03-31 14:04
泡咖啡 写道

Martin Flower在《重构》中有一句经典的话:"任何一个傻瓜都能写出计算机可以理解的程序,只有写出人类容易理解的程序才是优秀的程序员。

经典经典,想要用java写出少的代码还是把 设计模式 用个滚瓜烂熟的。
19 楼 fyunli 2012-03-31 13:33
简洁、优雅不代表代码量就最少了
18 楼 kimmking 2012-03-31 12:23
少的代码,优雅的代码,,,

这个还是太虚了
17 楼 wenjinglian 2012-03-31 10:59
编程是一门艺术
16 楼 redsea 2012-03-31 10:12
>其实反复思考以及不断运用最少编码原则能够使任何垃圾代码变得优雅

看来 "反复思考以及不断运用最少编码原则" 可以是大便变成黄金.


15 楼 cheneyjuu 2012-03-31 08:38
说了一堆废话
14 楼 gfdice 2012-03-31 08:23
外包公司永远在赶进度,真心没时间。
13 楼 colinsage 2012-03-31 08:13
815517253 写道
代码就是要不断的优化和重构,这样才能写出好的代码来!

正解。
设计不仅体现在写代码前,也体现在重构的过程中。
12 楼 shirne 2012-03-31 07:31
comsci 写道
写一段代码,往往都没有时间去对其进行优化,而一段代码要真正精简,是肯定要进行多次优化的,但是项目时间很紧张啊。。。哪里有时间去做后续的优化哦。。说不定,这段代码一完成,还没有来得及做优化,就已经。。。。。离开公司了。。。接班的小伙子才懒得看你的代码呢。。哈哈

这个很实在。
其实优化的任务很多在维护者身上
11 楼 815517253 2012-03-30 17:12
代码就是要不断的优化和重构,这样才能写出好的代码来!
10 楼 hiblue 2012-03-30 15:03
Zero编码原则...
9 楼 youarestupid 2012-03-30 14:09
zengming526 写道
srdrm 写道
泡咖啡 写道

Martin Flower在《重构》中有一句经典的话:"任何一个傻瓜都能写出计算机可以理解的程序,只有写出人类容易理解的程序才是优秀的程序员。

   


正确,那些以性能为借口写滥代码的人,可以闭嘴了。
8 楼 zengming526 2012-03-30 13:26
srdrm 写道
泡咖啡 写道

Martin Flower在《重构》中有一句经典的话:"任何一个傻瓜都能写出计算机可以理解的程序,只有写出人类容易理解的程序才是优秀的程序员。

   

7 楼 heguangyong 2012-03-30 13:25
TDD是优秀的实践
6 楼 srdrm 2012-03-30 12:20
泡咖啡 写道

Martin Flower在《重构》中有一句经典的话:"任何一个傻瓜都能写出计算机可以理解的程序,只有写出人类容易理解的程序才是优秀的程序员。

   
5 楼 泡咖啡 2012-03-30 12:02

Martin Flower在《重构》中有一句经典的话:"任何一个傻瓜都能写出计算机可以理解的程序,只有写出人类容易理解的程序才是优秀的程序员。
4 楼 blackstreet 2012-03-30 11:37
业务性的代码优化不优化还好,平台级别代码,还是要优化的

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • 程序员的编码规则之最少编码原则

    “最少编码原则”并不是说写的代码少到令意思表达不清楚。其实在很多情况下,可以只写几行代码就能执行相同的逻辑,但这对于后来接手的开发  本文作者是一位资深软件工程师,他根据多年的编程经验,把自己的观点...

  • 最少化编码原则指导指导编码规范

    最少化编码原则指导 最少化编码原则指导 最少化编码原则指导最少化编码原则指导 最少化编码原则指导

  • 中文编码规则一网打尽

    Unicode字符编码规范 Unicode是一种字符编码规范 。 先从ASCII说起。ASCII是用来表示英文字符的一种编码规范,每个ASCII字符占用1个字节(8bits)因此,ASCII编码可以表示的最大字符数是256,其实英文字符并没有...

  • HDMI编码规则

    video data 编码原理 D 输入的8位数据 cnt 输出0或1的个数计数器,有正负可用【5:0】范围数据表示,每次传输完一行视频数据后清零 q_m 中间数据,8位转9位数据 q_out 10位输出数据 N1{x} x内1的个数 N0{x} x内0的...

  • 阿里高级工程师指出的5个编码原则

    SOLID是几个重要编码原则的缩写 SRP: The Single Responsibility Principle 单一责任原则 OCP: The Open Closed Principle 开放封闭原则-----对***开发?对***关闭? LSP: The Liskov Substitution Principle 里氏...

  • 【转】BASE64编码规则

    Base64编码要求把3个8位字节(3*8=24)转化为4个6位的字节(4*6=24),之后在6位的前面补两个0,形成8位一个字节的形式。(将字符串转换为二进制,从前往后,每6位一取,作为新的字节) 例如字符串“张3”: ...

  • Huffman编码

    如果所有字符编码都不会成为其他字符编码的前缀,那么就不需要分隔符了,含有这种性质的编码规则叫作前缀码。例如,我们进行如下编码: 字符 编码 频率 总位数 A 0 5 5 B 1111 2 8 C 110 1 3 D 100 1 3 R 1110 2 8 ...

  • ASN.1 -- 编码规则

    3.2.1更多限制规则的需求 在X.400和X.500中应用接力传递消息,会使用到X.509数字签名(Digital Signature),其过程如下图所示: Figure 3-25接力传递消息 发送方发送v的编码结果c1(v),同时发送其数字签名σ(c1...

  • 计算机网络:四类数据编码技术

    对数字数据的数字信号编码、数字数据的模拟信号编码:、模拟数据的数字信号编码、模拟数据在模拟信道上传输进行了相关的介绍!

  • OID的编码规则

    对象标识符(OBJECT IDENTIFIER, OID) 的编码规则 对象标识符类型  对象标识符(OBJECT IDENTIFIER, OID)类型用层次的形式来表示标准规范.标识符树通过一个点分的十进制符号来定义,这个符号以组织,子部分...

  • 软件编码原则

    每个程序开发人员都会受益于对编程的原则和模式的理解。为了给自己提供一个参考,我把这个概述写在这里。通过设计,讨论,或者回顾复习,它可能会对你有所帮助。要注意的是,它距离完成还有很长的距离,并且你也会...

  • 哈夫曼编码与二叉字典树

    你知道计算机底层是如何存储数据的吗?你了解什么是编码吗?你知道定长编码和变长编码的区别吗?你知道最优的变长编码是怎样的吗?我们今天就带着这些问题来一探究竟吧

  • 基于万能逼近原理的自适应模糊控制算法在多自由度AUV运动控制中的应用与抗干扰补偿Simulink仿真研究,自适应模糊控制算法的万能逼近原理与多自由度AUV运动控制的抗干扰补偿技术-基于Simulin

    基于万能逼近原理的自适应模糊控制算法在多自由度AUV运动控制中的应用与抗干扰补偿Simulink仿真研究,自适应模糊控制算法的万能逼近原理与多自由度AUV运动控制的抗干扰补偿技术——基于Simulink的仿真研究,万能逼近原理自适应模糊控制算法的多自由度AUV运动控制抗干扰补偿simulink仿真 ,核心关键词:万能逼近原理; 自适应模糊控制算法; 多自由度AUV运动控制; 抗干扰补偿; Simulink仿真。,基于万能逼近的模糊控制算法多自由度AUV抗干扰补偿Simulink仿真

  • 如何修复加载 DeepSeek 时出现的 500 内部服务器错误.pdf

    deepseek最新资讯、配置方法、使用技巧,持续更新中

  • DeepSeek-V3解析1:多头潜在注意力.pdf

    deepseek最新资讯、配置方法、使用技巧,持续更新中

  • 结合扩展卡尔曼滤波与滑模观测器的策略:优化电角度估计,反电势波形逼近完美正弦波,结合扩展卡尔曼滤波与滑模观测器的反电势波形优化:正弦波形展现近乎完美精度,电角度估算与实际应用差异微小,扩展卡尔曼滤波与

    结合扩展卡尔曼滤波与滑模观测器的策略:优化电角度估计,反电势波形逼近完美正弦波,结合扩展卡尔曼滤波与滑模观测器的反电势波形优化:正弦波形展现近乎完美精度,电角度估算与实际应用差异微小,扩展卡尔曼滤波与滑模观测器的结合,反电势波形近乎完美的正弦波形,观测器估算转子电角度与实际电角度相差0.3弧度左右,转速跟随效果较好。 ,核心关键词:扩展卡尔曼滤波; 滑模观测器; 反电势波形; 转子电角度估算; 转速跟随效果。,卡尔曼滑模观测器:优化正弦波转子角度与转速估算

  • 毕业设计-基于springboot+vue的学校公寓管理系统【前后端源码+SQL+可运行】50217.zip

    毕业设计_基于springboot+vue的**学生公寓管理系统**【源码+sql+可运行】【**50217**】.zip 全部代码均可运行,亲测可用,尽我所能,为你服务; 1.代码压缩包内容 代码:springboo后端代码+vue前端页面代码; 脚本:数据库SQL脚本 效果图:运行结果请看资源详情效果图 2.环境准备: - JDK1.8+ - maven3.6+ - nodejs14+ - mysql5.6+ - redis 3.技术栈 - 后台:springboot+mybatisPlus+Shiro - 前台:vue+iview+Vuex+Axios - 开发工具: idea、navicate 4.功能列表 - 系统设置:用户管理、角色管理、资源管理、系统日志 - **业务管理:业务管理:公寓信息、房间信息、入住记录、学生信息** 3.运行步骤: 步骤一:修改数据库连接信息(ip、port修改) 步骤二:找到启动类xxxApplication启动 4.若不会,可私信博主!!!

  • xorg-x11-server-source-1.20.4-29.el7-9.x64-86.rpm.tar.gz

    1、文件内容:xorg-x11-server-source-1.20.4-29.el7_9.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/xorg-x11-server-source-1.20.4-29.el7_9.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、更多资源/技术支持:公众号禅静编程坊

  • yum-plugin-ps-1.1.31-54.el7-8.x64-86.rpm.tar.gz

    1、文件内容:yum-plugin-ps-1.1.31-54.el7_8.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/yum-plugin-ps-1.1.31-54.el7_8.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、更多资源/技术支持:公众号禅静编程坊

Global site tag (gtag.js) - Google Analytics