设计模式之美
王争
前Google工程师,《数据结构与算法之美》专栏作者
立即订阅
19210 人已学习
课程目录
已更新 36 讲 / 共 100 讲
0/6登录后,你可以任选6讲全文学习。
开篇词 (1讲)
开篇词 | 一对一的设计与编码集训,让你告别没有成长的烂代码!
免费
设计模式学习导读 (3讲)
01 | 为什么说每个程序员都要尽早地学习并掌握设计模式相关知识?
02 | 从哪些维度评判代码质量的好坏?如何具备写出高质量代码的能力?
03 | 面向对象、设计原则、设计模式、编程规范、重构,这五者有何关系?
设计原则与思想:面向对象 (11讲)
04 | 理论一:当谈论面向对象的时候,我们到底在谈论什么?
05 | 理论二:封装、抽象、继承、多态分别可以解决哪些编程问题?
06 | 理论三:面向对象相比面向过程有哪些优势?面向过程真的过时了吗?
07 | 理论四:哪些代码设计看似是面向对象,实际是面向过程的?
08 | 理论五:接口vs抽象类的区别?如何用普通的类模拟抽象类和接口?
09 | 理论六:为什么基于接口而非实现编程?有必要为每个类都定义接口吗?
10 | 理论七:为何说要多用组合少用继承?如何决定该用组合还是继承?
11 | 实战一(上):业务开发常用的基于贫血模型的MVC架构违背OOP吗?
12 | 实战一(下):如何利用基于充血模型的DDD开发一个虚拟钱包系统?
13 | 实战二(上):如何对接口鉴权这样一个功能开发做面向对象分析?
14 | 实战二(下):如何利用面向对象设计和编程开发接口鉴权功能?
设计原则与思想:设计原则 (12讲)
15 | 理论一:对于单一职责原则,如何判定某个类的职责是否够“单一”?
16 | 理论二:如何做到“对扩展开放、修改关闭”?扩展和修改各指什么?
17 | 理论三:里式替换(LSP)跟多态有何区别?哪些代码违背了LSP?
18 | 理论四:接口隔离原则有哪三种应用?原则中的“接口”该如何理解?
19 | 理论五:控制反转、依赖反转、依赖注入,这三者有何区别和联系?
20 | 理论六:我为何说KISS、YAGNI原则看似简单,却经常被用错?
21 | 理论七:重复的代码就一定违背DRY吗?如何提高代码的复用性?
22 | 理论八:如何用迪米特法则(LOD)实现“高内聚、松耦合”?
23 | 实战一(上):针对业务系统的开发,如何做需求分析和设计?
24 | 实战一(下):如何实现一个遵从设计原则的积分兑换系统?
25 | 实战二(上):针对非业务的通用框架开发,如何做需求分析和设计?
26 | 实战二(下):如何实现一个支持各种统计规则的性能计数器?
设计原则与思想:规范与重构 (7讲)
27 | 理论一:什么情况下要重构?到底重构什么?又该如何重构?
28 | 理论二:为了保证重构不出错,有哪些非常能落地的技术手段?
29 | 理论三:什么是代码的可测试性?如何写出可测试性好的代码?
30 | 理论四:如何通过封装、抽象、模块化、中间层等解耦代码?
31 | 理论五:让你最快速地改善代码质量的20条编程规范(上)
32 | 理论五:让你最快速地改善代码质量的20条编程规范(中)
33 | 理论五:让你最快速地改善代码质量的20条编程规范(下)
不定期加餐 (2讲)
加餐一 | 用一篇文章带你了解专栏中用到的所有Java语法
加餐二 | 设计模式、重构、编程规范等相关书籍推荐
设计模式之美
登录|注册

32 | 理论五:让你最快速地改善代码质量的20条编程规范(中)

王争 2020-01-15
上一节课中我们讲了命名和注释,这一节课我们来讲一下代码风格(Code Style)。说起代码风格,我们其实很难说哪种风格更好。最重要的,也是最需要我们做到的,是在团队、项目中保持风格统一,让代码像同一个人写出来的,整齐划一。这样能减少阅读干扰,提高代码的可读性。这才是我们在实际工作中想要实现的目标。
关于代码风格,我总结了 6 点我认为最值得关注的,今天跟你一块讨论学习一下。

1. 类、函数多大才合适?

总体上来讲,类或函数的代码行数不能太多,但也不能太少。类或函数的代码行数太多,一个类上千行,一个函数几百行,逻辑过于繁杂,阅读代码的时候,很容易就会看了后面忘了前面。相反,类或函数的代码行数太少,在代码总量相同的情况下,被分割成的类和函数就会相应增多,调用关系就会变得更复杂,阅读某个代码逻辑的时候,需要频繁地在 n 多类或者 n 多函数之间跳来跳去,阅读体验也不好。
那一个类或函数有多少行代码才最合适呢?
我们在第 15 讲中提到过,要给出一个精确的量化值是很难的。当时我们还跟做饭做了类比,对于“放盐少许”中的“少许”,即便是大厨也很难告诉你一个特别具体的量值。
对于函数代码行数的最大限制,网上有一种说法,那就是不要超过一个显示屏的垂直高度。比如,在我的电脑上,如果要让一个函数的代码完整地显示在 IDE 中,那最大代码行数不能超过 50。这个说法我觉得挺有道理的。因为超过一屏之后,在阅读代码的时候,为了串联前后的代码逻辑,就可能需要频繁地上下滚动屏幕,阅读体验不好不说,还容易出错。
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《设计模式之美》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(43)

  • 辣么大 置顶
    这阵争哥节奏放缓,大家都能歇歇。前些篇文章确实硬核。我每篇看下来加查资料来至少要两个小时,总这么整谁能扛得住呀。争哥加油!
    2020-01-15
    3
  • 何用
    “不管是用两格缩进还是四格缩进,一定不要用 tab 键缩进。”
    ———
    老师的这个观点我持相反的意见。我是推崇使用 tab 缩进的,这样每个人可以根据自己的喜好,在 IDE 自行定义一个 tab 在视觉上等于几个空格,富于弹性。至于 tab 和空格缩进可能混用的问题,工具可以很好地帮我们解决。
    2020-01-15
    6
    7
  • Jeff.Smile
    争哥,多来点硬核的,这种编码规范来的有点多了,我们公司经常组织的,哈哈😄!
    2020-01-15
    8
    5
  • Binary
    没有人发现Spring的源码全都是用tab缩进的吗,这是为什么呢?
    2020-01-16
    1
  • 火车日记
    提问:返回前端接口中的key的书写风格,是和变量名的驼峰风格保持一致,还是和表中字段下划线式的风格保持一致?
    2020-01-16
    1
  • 守候、
    打卡,在idea中安装alibaba规约以及google-java-format Settings 对于code style很有帮助。
    2020-01-15
    1
  • 守拙
    补充一点: <Google Java Style Guide>中明确要求:

    Tab不能用于缩进.

    原文:
    2.3.1 Whitespace characters
    2. Tab characters are not used for indentation.

    从今日起,改掉坏习惯,不再使用tab缩进.

    2020-01-15
    1
  • 小可
    既然是规范,就不是为了表达个性化的代码风格。花括号同行还是换行,缩进两格还是四格,现实当中没有绝对的标准,只要在公司或部门内统一就行,即使换了地方,标准不一样只要统一,适应几天就好了。不然每次更新代码,都要格式化,提交后连上次修改的地方都找不出来,因为diff出来全变了😂
    2020-01-15
    1
  • 李小四
    设计模式_32

    缩进这个我要看一下了,因为一直都用tab缩进,可能是团队中都习惯tab缩进(并没有规定),所以没遇见过问题。

    有的时候,代码风格没有优劣,统一的风格就像统一度量衡,光是统一就带来错误率降低和效率提升。
    2020-01-15
    1
  • Kang
    打卡
    2020-01-15
    1
  • 黄林晴
    打卡
    人越来越少啦😂
    2020-01-15
    1
  • Jackey
    总的来说还是整齐最重要,一个团队就像一个人。大家都严格按照规范来写,再辅之以自动化检查工具,代码质量还是可以有保证的。就怕为“某段代码”破例,一破例就容易“决堤”😂
    2020-01-15
    1
  • Aliliin
    不知道为啥身为PHP程序员的我听这节课莫名的感动。
    2020-01-16
  • 刘强
    突然觉得自己习惯还蛮好,开心😁
    2020-01-16
  • 木杉
    使用golang 就没有这些烦恼了
    2020-01-16
  • 微凉
    哈哈,我的空格和大括号习惯和争哥一样,大部分做java的应该都是这样。
    2020-01-16
  • 全炸攻城狮
    习惯tab缩进。其实ide能很好的帮助我们规范缩进、导包、换行的问题。保证每次commit之前都对代码做format
    2020-01-16
  • 代码搬运工
    大公司都有编码规范的code-style. xml文件,导入后,快捷键一次都把你的代码都整的明明白白。我所工作的公司规范了函数代码不能超过50行,这个是硬性指标。
    2020-01-16
  • gwen
    打卡
    2020-01-15
  • Frank
    目前主要使用Java语言开发项目。代码风格主要是参考团队的一些做法,其大部分都是参考业内一些推荐的规范。在项目中我设置IDE是四格缩进,左括号与语句在同一行。大学的时候写的C# 左括号是重新起一行的。平时我自己还有一个习惯,在方法写完后,会使用IDE的格式化功能做一下格式化。
    2020-01-15
收起评论
43
返回
顶部