【异周话题 第 8 期】一个好的程序,规范与性能哪个更重要?(已结束)

图像说明文字

【异周话题 第 8 期】一个好的程序,规范与性能哪个更重要?

话题背景

经过247天的持续研发,阿里巴巴于10月14日在杭州云栖大会上,正式发布众所期待的《阿里巴巴Java开发规约》扫描插件! Alibaba Java Coding Guidelines把《阿里巴巴Java开发规约》强制条目转化成自动化插件,并实现部分的自动编程。

Alibaba Java Coding Guidelines发布后,瞬间被传播在很多公众号和技术群。随之,很多开发者在自己的 IDE 里安装了其插件,开始约束自己的coding规范。尽管如此,由于编程规范是一个老生常谈的问题,业界程序员千千万,code风格各异,不同开发者码出来的程序,阅读性还是差别很大。

本周的【异周话题】我们就请各位程序员大咖就来聊聊你们心目中的coding规范。

话题内容

大家可以围绕以下一个或多个问题展开讨论:
1. 自己开发中有没有砍过代码?砍掉大片的代码感觉如何?
2. 在阅读别人的程序时,最不能忍受的“不规范”是?
3. 《阿里巴巴 Java 开发手册》里的[强制]部分是否大多符合自己的日常规范?谈谈有哪些是自己以前不规范的?
4. 您觉得一个好的程序,是可读性第一呢?还是性能第一?
5. 畅谈自己的编程规范,与其他人交流。

欢迎各位同学积极在文章的底部发表评论,参与话题!

话题时间

2017年11月07日-11月12日

话题奖励

感谢我们的用户 @code小生 发起本期话题。话题结束后,我们将选取 3 位讨论精彩的同学,可以从以下 3 本书中任选 1 本作为奖品《代码整洁之道》《代码整洁之道:程序员的职业素养》《重构:改善既有代码的设计》


《代码整洁之道》

图书作者【美】Robert C. Martin,Robert C. Martin,世界级软件开发大师,设计模式和敏捷开发先驱,敏捷联盟首任主席,C++ Report前主编,被后辈程序员尊称为“Bob大叔”。20世纪7 0年代初成为职业程序员,后创办Object Mentor公司并任总裁。Martin还是一名多产的作家,至今已发表数百篇文章、论文和博客文章。除本书外,还著有《代码整洁之道》《敏捷软件开发:原则、模式和实践》《UML:Java程序员指南》等。他最近创办了cleancoders.com网站,专为软件开发人员提供教育视频。

图书简介:《代码整洁之道》提出一种观念:代码质量与其整洁度成正比。干净的代码,既在质量上较为可靠,也为后期维护、升级奠定了良好基础。作为编程领域的佼佼者,《代码整洁之道》作者给出了一系列行之有效的整洁代码操作实践。这些实践在《代码整洁之道》中体现为一条条规则(或称“启示”),并辅以来自现实项目的正、反两面的范例。只要遵循这些规则,就能编写出干净的代码,从而有效提升代码质量。



《代码整洁之道:程序员的职业素养》

图书作者【美】Robert C. Martin,Robert C. Martin,世界级软件开发大师,设计模式和敏捷开发先驱,敏捷联盟首任主席,C++ Report前主编,被后辈程序员尊称为“Bob大叔”。20世纪7 0年代初成为职业程序员,后创办Object Mentor公司并任总裁。Martin还是一名多产的作家,至今已发表数百篇文章、论文和博客文章。除本书外,还著有《代码整洁之道》《敏捷软件开发:原则、模式和实践》《UML:Java程序员指南》等。他最近创办了cleancoders.com网站,专为软件开发人员提供教育视频。

图书简介:本书是编程大师“Bob 大叔”40 余年编程生涯的心得体会的总结,讲解成为真正专业的程序员需要具备什么样的态度,需要遵循什么样的原则,需要采取什么样的行动。作者以自己以及身边的同事走过的弯路、犯过的错误为例,意在为后来者引路,助其职业生涯迈上更高台阶。



《重构:改善既有代码的设计》

图书作者【美】Martin Fowler,Martin Fowler,世界软件开发大师,在面向对象分析设计、UML、模式、XP和重构等领域都有卓越贡献,现为著名软件开发咨询公司ThoughtWorks的首席科学家。他的多部著作《分析模式》、《UML精粹》和《企业应用架构模式》等都已经成为脍炙人口的经典。

图书简介: 本书清晰揭示了重构的过程,解释了重构的原理和最佳实践方式,并给出了何时以及何地应该开始挖掘代码以求改善。书中给出了70 多个可行的重构,每个重构都介绍了一种经过验证的代码变换手法的动机和技术。本书提出的重构准则将帮助你一次一小步地修改你的代码,从而减少了开发过程中的风险。


【异周话题 第 8 期】获奖名单

图像说明文字

恭喜以上 3 位获奖的同学,尽快私信小编,提供图书书名,小编会尽快为大家生成样书兑换券,并私信给大家!

3 推荐
  • 前端三剑客 今年 11-12 14:52

    你觉得一个程序是可读性第一还是性能第一?

    就拿双十一这种情况来说,性能第一,要不然服务器什么的早就废了,这也是为啥马云把服务器建在湖底的缘故,方便散热啊。

    0
    • guwei4037
      guwei4037 今年 11-12 15:56

      性能是后期重要,而且是规模越大越重要,而可读性是一直重要,谢谢。

    • 前端三剑客
      前端三剑客 今年 11-13 10:59

      @guwei4037 其实现在写代码多多少少都会考虑到编程规范了,但是自己一开始写的时候,着实是想着赶紧实现功能,达到要求的性能,就跟流水账一样,也会有很多的重复代码,然后可读性这块是后来自己把功能实现性能保证之后,慢慢去改的。因为一开始的时候可能思路都不是很清晰,而可读性需要对模块的功能、业务的逻辑足够的清晰,这样才能够分模块的去写,这也是我当时这么做的理由。

  • 东风玖哥 今年 11-10 17:29

    1. 自己开发中有没有砍过代码?砍掉大片的代码感觉如何?

    删除冗余代码的感觉就像排除了肾结石等有害无益的物质后一样轻松

    2. 在阅读别人的程序时,最不能忍受的“不规范”是?

    引入两个以上功能差不多的开源框架或者第三方SDK

    3. 《阿里巴巴 Java 开发手册》里的[强制]部分是否大多符合自己的日常规范?谈谈有哪些是自己以前不规范的?

    即使自己以前的日常规范不符合手册内容也没关系,可以设置Android Studio的代码自动补齐功能嘛。

    4. 您觉得一个好的程序,是可读性第一呢?还是性能第一?

    可读性的重要程度是性能的100倍,因为程序员的工资比服务器贵。举一个极端的例子:“实现“3的3次方”有三种写法:

    “3^3”、“3*3*3”、“(3+3+3)+(3+3+3)+(3+3+3)”,显然正常人都会用第一种方法,但第三种方法的性能才是最好的。

    5. 畅谈自己的编程规范,与其他人交流。

    现在我已经把手册中的规范作为自己的规范了,IDE也配置好了代码自动补齐

    1
  • 钢笔布莱恩特 今年 11-10 16:20

     在阅读别人的程序时,最不能忍受的“不规范”是?

    我是一个本科生,最近在改一个硕士的算法,把它写成APP.

    卧槽,尼玛里面用了一大堆的神奇变量名:

    fuck

    yoursister

    sister1

    sister2

    sister3

    sister4

    ......

    fuck = yoursister;

    ......

    感情您这是要fuck人家全家啊?!

    2
  • CathyRobin 今年 11-10 14:06

    2. 在阅读别人的程序时,最不能忍受的“不规范”是?

    我用过同事写的一个动态链接库,调用他的接口写代码,写完了发现怎么运行怎么崩,找自己的代码找了好久也没发现哪有问题,然后就开始怀疑是他的库有问题,问他要了库的源码看了看,发现那个接口函数他没有做输入参数检查,导致了程序崩溃。(ps:库是老大写的,可能他当时比较赶,所以不要完全相信别人的代码哦,即使是你老大写的)。

    4. 您觉得一个好的程序,是可读性第一呢?还是性能第一?

    好的程序,应做到可读性与性能并重,类似Linux的源码那样,做到开源出来后,大家都能够很快速的去共同开发,pull代码。这是我心中认为的好的程序。

    5. 畅谈自己的编程规范,与其他人交流。

    <1>函数中分配的内存,在函数退出之前要释放,尽量避免分配和释放在不同函数的情况。

    <2>仔细分析程序机器码大小(如指令空间大小、数据空间大小、堆栈空间大小等)是否超出系统有关限制。

    <3>使用宏时,不允许参数发生变化。

    <4>在编写代码之前,应预先设计好程序调试与测试的方法和手段,并设计好各种调测开关及相应测试代码如打印函数等。

    0
  • 孤灯残云 今年 11-09 23:47

    1. 自己开发中有没有砍过代码?砍掉大片的代码感觉如何?

    砍过,大片砍过,甚至推倒重来。感觉是战战兢兢,如履薄冰,因为很担心碰了这里,弄垮全部。

    2. 在阅读别人的程序时,最不能忍受的“不规范”是?

    最不能忍受的不规范就是,为什么有人能把变量名起得和类名一模一样呀?

    4. 您觉得一个好的程序,是可读性第一呢?还是性能第一?

    说实话,个人觉得大部分时间是可读性第一。毕竟都都不懂的代码,估计最后都会招人讨厌,要不就是被束之高阁,要不就是扔掉重写。但是在一些极端情况下,性能还是优先考虑的,特别是那些对计算资源有着相当严格要求的环境。

    5. 畅谈自己的编程规范,与其他人交流。

    我觉得编码规范就像文化一样,只要不是极端的,都还是能接受的。而且一个团队中存在各种各样的背景的人员,这些人员也有自己的风格,这样就会产生思想、文化上的碰撞,到了一定程度,应该就能取得一定的平衡。如果过度强调某种规范,倒容易导致分裂。

    0
异步君
异步君 V6

北京 丰台

3.1K经验值

相关技术

相关图书

相关文章

相关用户