代码精进之路
范学雷
前 Oracle 首席软件工程师,Java SE 安全组成员,OpenJDK 评审成员
38234 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 48 讲
结束语 (1讲)
代码精进之路
15
15
1.0x
00:00/00:00
登录|注册

06 | 代码整理的关键逻辑和最佳案例

同行内代码块空格区隔
换行规则
每行代码字符数的限制
3. 代码块数量要适当
2. 注意代码块的完整性
1. 保持代码块的单一性
使用小段落、子标题、大量留白分解文章、版面
一块是一个可识别的信息
展现思考逻辑
提高编程速度与效率
减少错误
欢迎分享和讨论
修改代码的编排
整理代码的好处
整理代码的基本思想
基本的换行原则
每一行代码仅表示一个行为
分割代码块通过空格、缩进和空行
空白区域展示了代码之间的关系
有效地使用空白空间
代码块分块时需要注意的点
代码整理就是给代码分块
大脑接收信息是按照分块的模式进行的
干净整洁的代码带来的好处
一起来动手
小结
一行一个行为
使用空白空间
给代码分块
代码整理的重要性
整理代码的关键逻辑和最佳案例

该思维导图由 AI 生成,仅供参考

写一篇文章,要层次清楚、段落分明,写代码也是这样。杂志排版,要布局合理,阅读舒适,代码的编排也要这样。
可是很多人想的是,代码能工作就行,不用讲究格式;时间紧,哪有时间整理代码。
可事实上,干净整洁的代码带给我们的,远远不止格式上的赏心悦目,它更可以减少错误,提高我们的编程速度与效率。因为代码的层次结构、格式部署,是我们对自己思维的整理,也是我们思考逻辑的展现。
很多人不愿意整理代码,觉得这项工作很麻烦。其实代码的整理并不复杂,也不需要什么高深的技巧。有效地使用空行、空格和缩进,简单的分割与对齐,就可以使得代码的视觉效果甚至质量发生巨大的变化,理顺编码的思路,提高编码的效率。这是一个付出少、收获大,值得养成的好习惯。

给代码分块

其实整理代码,就是给代码分块。我们的大脑接收信息是按照分块的模式进行的。一块就是一个可识别的信息,它被安放到短期记忆的“插槽”里。信息块的实际信息量是可变的,但是越简单、越具体的信息块越容易被记住和理解。
一份好的报纸或者杂志,文章本身往往很简短,或者被分割为简短的块。使用小段落、子标题,大量留白,版面切割,尽一切可能分解文章、版面,让眼睛舒适,让大脑有时间停留下来接受每个信息快。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

代码整理对于程序员来说非常重要。整洁的代码不仅在视觉上更易于阅读,还可以减少错误,提高编程速度与效率。本文介绍了通过有效地使用空行、空格和缩进来整理代码,以提高代码的视觉效果和质量,理顺编码的思路,提高编码的效率。文章强调了通过空白空间的合理运用,可以让代码分块更清晰,通过空格、缩进和空行来分割和整理代码,使得每一小块在视觉上和逻辑上都是可以区分的,从而帮助程序员阅读和记忆,减轻眼睛和大脑的疲劳。此外,文章还介绍了不同缩进方式的优缺点,以及同行内代码块空格区隔的注意事项。整理代码的好处远远不止格式上的赏心悦目,它更可以减少错误,提高我们的编程速度与效率。整理代码的基本思想是把代码分割成大脑能够有效识别并记忆的信息块,通过合理地使用空行、空格和缩进,把这些信息块清晰地呈现出来。清晰的代码结构可以帮助理顺编码思路,提高编码效率,减少编码错误,提高代码可读性,降低代码维护成本。文章还提供了一些代码整理的基本原则和规范,如每行代码字符数的限制、换行规则等。通过这些方法,程序员可以更好地整理和优化代码,提高代码质量和可维护性。文章最后还鼓励读者动手实践,通过修改代码的编排来加深理解。整体而言,本文通过详细介绍代码整理的重要性和方法,为程序员提供了实用的技术指导和建议。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《代码精进之路》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(36)

  • 最新
  • 精选
  • hua168
    老师,像我这种没有项目经验,知道类、接口及其修饰符、方法,但不知道什么情况下使用: 1. 接口:是抽象方法的集合,一个实现接口的类,必须实现接口内所描述的所有方法。 理解是当有些方法规定死的就要用接口,比如人的身份证,设置名字、地址、性别等 2. 类:类是一个模板,它描述一类对象的行为和状态。对象是类的实例化。 访问控制修饰符:default、private、public、protected 非访问修饰符:static、final、abstract(只能继承)、synchronized、transient volatile 继承、多态、 3.方法: 语句的集合,它们在一起执行一个功能。 这些基础概念都懂,但是就不知道怎么在项目中应用的,说懂好像又不懂,感觉基础不是很扎实一,我这种情况怎搞?有没有相关文章或书推荐一下,非常感谢?

    作者回复: 先要区分类和方法。在面向对象的设计中,类表示的是一个对象。比如人,身份,铅笔,钱包等。一般地,名词或者可以看作名词的词,需要用类来表示。 方法,一般表示的是行为,也就是你说的执行一个功能。比如买菜,拖地,钓鱼,吃没吃过晚饭,有没有购房资格,都可以看作是行为或者判断。一般地,动词和形容词,或者类似的词,要用方法来表示。 通常地,一句话,有主语、谓语、宾语,主语和谓语一般表示为类,而谓语就是连接两个类的方法。 举个例子,“授权的用户可以登录服务系统”这句话里的词语有“授权的", “用户”,“登录”,“服务系统”。那么,“用户”和“服务系统”就可以设计成类,而“授权的”是“用户”这个类的一个方法。“用户”和“服务系统”这两个类里,要分别有方法处理“登录”这个行为。 而Interface呢,一般用在高度抽象的场合。什么是高度抽象呢? 比如说,我们知道资源的使用最后应该关闭,那么“关闭”就可以是一个高度抽象的方法。 不管是什么资源,什么类,都可以有一个“关闭”的方法。实现了“关闭”接口的类,都可以调用“关闭”这个方法。 这里面有一个小问题就是,房屋的门可以实现“关闭”,下水管道也可以实现“关闭。可是,房屋和下水管道之间,并没有可以继承的关系。这时候,Interface就可以突破class的继承限制,多个没有继承关系的类,都可以实现Interface。一个类,只能继承一个父类,但是可以实现多个Interface。 比如说,class MySubClass extends MyClass implements Closeablse, Comparable {// snipped}。 不知道市面上还有没有"面向对象软件构造"这本书。太厚了,可以当作工具书查阅。 另外,多看看、琢磨琢磨Java标准类库的设计。这些API的设计,用“苛刻”这个词形容一点都不过分。这些API的背后,有着大量的权衡和考量,大部分都经得住了时间的考验。琢磨琢磨这些API的设计方式,也是一个学习设计的好办法。

    2019-03-10
    2
    19
  • Dream
    总感觉给出的一些理论,在现实开发有一些是没有必要的。如果每一篇就讲针对性很强的一段代码,不好吗,理论性的东西太多了,对实践转换率不强,

    作者回复: 嗯,我理解你的看法。这也是这个专栏不讨巧的地方。如果讲代码的话,我写的也轻松,你学的也带劲。其实,这也是我一直想和大家讨论的一个问题。 讲代码很重要。但是,看再多的代码,就这一节来说,我觉得都不如知道“大脑按块接受信息”这个行为模式重要。理解了基础的理论,所有的规范都不用死记硬背,你还可以创造新规范、改进旧规范。 有时候,我们对于一些规范很纠结,比如使用四个空格的缩进问题,比如if语句后要跟个括号的问题,也很难再实践中被遵守。为什么哪? 说白了,就是不知道不这样做的危害。很多公司有一套一套的规则,就是执行不了。为啥呢?大家根本不知道规则对自己有什么好处。 编码规范这东西,随便网上找找,都是一大堆的规范。阿里的规范,Google的规范,Java的规范的规范,都可以找到,讲的比我们这个专栏要全要多。当我开始筹划这个专栏的时候,我给自己定下的目标,是让大家了解为什么;然后给一些例子,说明怎么办。理解了为什么,好多事情你自然就知道怎么办了,这样好多东西才可能成为你自己的东西,而不是我塞给你的东西。 很可惜的是,这样做的确存在很大的问题:理论成了我要硬塞给你的东西。所以,理论这一块,有人可能就有点抗拒。🤣又让我学没用的理论! 我们在看代码的时候,很少有人说,这是代码规范规定的,你必须这样改、那样改,按照规范改。这样说,可能没人愿意搭理我们。我们常说的是,这样看着不舒服,那样容易出问题,说的更多的是为什么。如果让我找一找为什么给出理论重要,也许更愉快地工作,算是一点吧。

    2019-01-17
    5
    17
  • 草原上的奔跑
    今天这篇内容很实用,我现在也有整理代码的习惯,但是只是用的都比较零散,不像本篇中这么系统,而且范老师给出了理论依据。代码块,人体接受信息的方式。有实践方法,有理论支撑,以后整理代码也会更有目标性,同时,在要求别人整理代码时,也会有理有据。最后说一句,看到写的排版很乱的代码,很影响阅读代码的心情,以及理解代码的速度。

    作者回复: 知道为什么乱,才好改。 这一篇的最后一节,我们会总结一些编码规范方面的一些心理学知识。到时候,你在回头看看这一篇的文章,可能会有新的收获。 编码规范比较杂,知道了背后的道理,运用的就自如些,方便些。

    2019-01-16
    10
  • 虢國技醬
    打卡 我有一个自己在实践且感觉不错的经验,分享一下: 举个栗子,我现在准备写一个控制器方法,我会先仔细想想要做一点什么?怎样的顺序?多想几次在脑袋里过一下,但是我不会深想到底怎么做,想好以后,我会先写注释(更准确说应该是提纲),以注释作为思路的引子同时也是一种代码实现思维的分块

    作者回复: 这个办法不错。我是在纸上各种画。

    2019-01-20
    4
  • 蓝色波浪
    // conventional indentation int runningMiles = runningSpeedOne * runningTimeOne + runningSpeedTwo * runningTimeTwo; 这个是不是违背了在操作符前换行这个原则?

    作者回复: 是的。

    2019-01-18
    4
  • 空知
    老师可不可以多出些题目,可以结合实际练练手~~

    作者回复: 嗯,我找找实际的代码。 就规范这一部分来说,你可以看看OpenJDK的String类的代码,或者其他基础类的代码,看看有什么可以改进的地方。 发现了问题,就给OpenJDK提交bug,提交补丁。 JDK用的太广泛了,每一个微小的修改,都会用到几十亿台设备上,都很有价值。还能成为OpenJDK成员😊

    2019-01-16
    4
  • 背着吉他的大漠狼
    老师,有的时候,在一个代码块里面逻辑较多,远远超过了25行,这个时候我们是在这个块里写完,还是再分块,分块了又使得同一个目标不同的代码块了,希望老师能看到

    作者回复: 一般来说,一个大的逻辑可以分成更小的逻辑,并列的小逻辑或者下层的小逻辑。这些小逻辑,可以分割成代码块,或者包装成方法。所以,一个大块里,你还可以再分小块。

    2019-01-21
    3
  • Sisyphus235
    留言里没有一条讨论习题的。。。 Line 2 后面习惯空两行,表示 import 和代码块之间的区分; Line 8 后面空一行,表示注释的区分; Line 10 后面空一行,表示初始化的区分; Line 17 后面空一行,表示异常的区分; 空格、空行、缩进都是很好的视觉手段,加上 IDE 提供的收起和展开功能往往能让开发者很直观的看到代码的意图。整理代码逻辑就能很好的分块,我一般代码会分为“基础校检”,“初始化”,“核心代码逻辑” *n,“LBYL”的异常处理等

    作者回复: “整理代码逻辑就能很好的分块”! 这个总结很棒!

    2019-05-21
    2
  • 学无涯
    1) if (hiTail == null) { hiHead = e; } else { hiTail.next = e; } 2) if (hiTail == null) { hiHead = e; } else { hiTail.next = e; } 老师,这两种写法,哪种好呢

    作者回复: 我通常使用第二种。第二种规范推荐的多些。

    2019-10-23
    1
  • hshayq
    我写Python一般都是在括号后换行,比如 a = get( arg1, arg2, arg3 ) 老师怎么看?

    作者回复: 挺好的。我建议在括号后换行,便于阅读和搜索,看到括号就知道这是一个方法或者函数。每个参数一行,这也是容易理解、视觉效果好的编排方式。

    2019-07-08
    1
收起评论
显示
设置
留言
36
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部