阅读更多

14顶
4踩

研发管理

翻译新闻 最少编码原则

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

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

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

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

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

大量的代码需要执行大量的逻辑,很容易造成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)类型用层次的形式来表示标准规范.标识符树通过一个点分的十进制符号来定义,这个符号以组织,子部分...

  • 软件编码原则

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

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

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

  • spring-boot-2.6.6.jar中文-英文对照文档.zip

    # 压缩文件中包含: 中文-英文对照文档 jar包下载地址 Maven依赖 Gradle依赖 源代码下载地址 # 本文件关键字: jar中文-英文对照文档.zip,java,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,中文API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压最外层zip,再解压其中的zip包,双击 【index.html】 文件,即可用浏览器打开、进行查看。 # 特殊说明: ·本文档为人性化翻译,精心制作,请放心使用。 ·只翻译了该翻译的内容,如:注释、说明、描述、用法讲解 等; ·不该翻译的内容保持原样,如:类名、方法名、包名、类型、关键字、代码 等。 # 温馨提示: (1)为了防止解压后路径太长导致浏览器无法打开,推荐在解压时选择“解压到当前文件夹”(放心,自带文件夹,文件不会散落一地); (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件;

  • LabVIEW中最小二乘法曲线拟合与报表生成:流程图自动化实现波形拟合的最佳方法

    内容概要:本文详细介绍了LabVIEW中最小二乘法的应用及其在曲线拟合和报表生成中的具体实现。LabVIEW作为一种流程图编程语言和开发环境,能够通过图形化编程的方式,使用户轻松构建拟合模型并计算最佳拟合曲线的参数。此外,LabVIEW还提供了丰富的波形处理和分析工具,支持对波形数据进行预处理(如滤波、降噪和采样),并通过最小二乘法进行波形拟合,最终生成详细的报表。最小二乘法通过最小化数据点与拟合曲线之间的误差平方和,广泛应用于统计学、工程学和物理学等领域。 适合人群:从事科学研究、工程设计和数据分析的专业人士,尤其是那些希望通过图形化编程提高工作效率的人群。 使用场景及目标:适用于需要对大量数据进行拟合分析并生成报告的场合,如实验数据分析、工程设计验证等。目标是通过LabVIEW提供的强大工具,快速准确地找到最佳拟合曲线,提升数据分析效率。 其他说明:LabVIEW不仅简化了编程过程,还提高了数据分析的直观性和准确性,使得即使是非专业程序员也能轻松上手。

  • C语言编程入门教程精简版专题培训课件.ppt

    C语言编程入门教程精简版专题培训课件.ppt

  • spring-boot-2.4.4.jar中文文档.zip

    # 压缩文件中包含: 中文文档 jar包下载地址 Maven依赖 Gradle依赖 源代码下载地址 # 本文件关键字: jar中文文档.zip,java,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,中文API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压最外层zip,再解压其中的zip包,双击 【index.html】 文件,即可用浏览器打开、进行查看。 # 特殊说明: ·本文档为人性化翻译,精心制作,请放心使用。 ·只翻译了该翻译的内容,如:注释、说明、描述、用法讲解 等; ·不该翻译的内容保持原样,如:类名、方法名、包名、类型、关键字、代码 等。 # 温馨提示: (1)为了防止解压后路径太长导致浏览器无法打开,推荐在解压时选择“解压到当前文件夹”(放心,自带文件夹,文件不会散落一地); (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件;

  • DNA进化算法及其改进研究样本.doc

    DNA进化算法及其改进研究样本.doc

  • 智慧城市-【精品】2019年百度地图城市大数据平台解决方案.zip

    智慧城市-【精品】2019年百度地图城市大数据平台解决方案.zip

  • spring-data-redis-1.2.0.RELEASE.jar中文-英文对照文档.zip

    # 压缩文件中包含: 中文-英文对照文档 jar包下载地址 Maven依赖 Gradle依赖 源代码下载地址 # 本文件关键字: jar中文-英文对照文档.zip,java,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,中文API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压最外层zip,再解压其中的zip包,双击 【index.html】 文件,即可用浏览器打开、进行查看。 # 特殊说明: ·本文档为人性化翻译,精心制作,请放心使用。 ·只翻译了该翻译的内容,如:注释、说明、描述、用法讲解 等; ·不该翻译的内容保持原样,如:类名、方法名、包名、类型、关键字、代码 等。 # 温馨提示: (1)为了防止解压后路径太长导致浏览器无法打开,推荐在解压时选择“解压到当前文件夹”(放心,自带文件夹,文件不会散落一地); (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件;

Global site tag (gtag.js) - Google Analytics