阅读更多

14顶
4踩

研发管理

翻译新闻 最少编码原则

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

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

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

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

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

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

  • 软件编码原则

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

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

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

  • 基于java的-28-“智慧食堂”设计与实现--LW-源码.zip

    提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

  • C#,回文分割问题(Palindrome Partitioning Problem)算法与源代码

    C#,回文分割问题(Palindrome Partitioning Problem)算法与源代码 1 回文串 “回文串”是一个正读和反读都一样的字符串,初始化标志flag=true,比如“level”或者“noon”等等就是回文串。 2 回文分割问题 给定一个字符串,如果该字符串的每个子字符串都是回文的,那么该字符串的分区就是回文分区。 例如,“aba | b | bbabb | a | b | aba”是“abababababa”的回文分区。 确定给定字符串的回文分区所需的最少切割。 例如,“ababababababa”至少需要3次切割。 这三个分段是“a | babbab | b | ababa”。 如果字符串是回文,则至少需要0个分段。 如果一个长度为n的字符串包含所有不同的字符,则至少需要n-1个分段。

  • node-v9.2.1.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

  • 贪心算法解决活动选择问题,Java版源码

    贪心算法是一种在每一步选择中都采取在当前状态下最好或最优的选择,从而希望导致结果是全局最好或最优的算法策略。贪心算法在有最优子结构的问题中尤为有效。最优子结构的意思是局部最优解可以决定全局最优解。 附件中一个使用贪心算法解决活动选择问题(也称为会议时间安排问题)的 Java 示例代码。这个问题的目标是选择最大的活动数量,使得活动之间互不重叠。 在示例中,我们定义了一个 Activity 类来表示每个活动的开始和结束时间。然后,我们创建了一个活动数组,并使用 Arrays.sort() 方法按照活动的结束时间对它们进行排序。 接下来,我们遍历排序后的数组,使用贪心算法的策略选择活动。选择的标准是当前活动的开始时间是否晚于或等于之前选择的最后一个活动的结束时间。如果是,我们就选择这个活动,并更新 lastActivityEnd 为当前活动的结束时间。最后,我们打印出可以执行的最大活动数量。

  • 小程序-2-“最多跑一次”微信小程序--LW-源码.zip

    提供的源码资源涵盖了小程序应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

  • 基于java的-198-ssm智能新冠疫苗接种助手--LW-源码.zip

    提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

  • 酒店管理系统的设计与实现.zip

    本项目基于jsp框架,数据库采用mysql,采用tomcat服务部署,适合学生论文、课设参考及学习。 功能介绍: 1)基本操作 2)客户管理 3)客房管理 4)菜品管理 5)餐桌预定 6)餐饮消费管理

Global site tag (gtag.js) - Google Analytics