`

代码整洁之道--函数

 
阅读更多

 

函数

 

短小,函数的第一规则就是短小。

每个函数都一目了然,每个函数都只说一件事。

而且,每个函数都依序把你带到下一个函数。

这就是函数短小应该达到的程度。

 

代码块和缩进

if语句、else语句、while语句

 

 

只做一件事

函数应该做一件事,做好这件事,只做一件事。

 

只做一件事的函数用起来应该是最方便的,复用性最好的。

是大的组合的基本单元。

 

每个函数一个抽象层级

要确保函数只做一件事,函数中的语句都要在同一抽象层级上。

自顶向下度代码:向下规则j

我们想要让每个函数后面都跟着位于下一抽象层级的函数,这样一来,在查看函数列表时,就能循抽象层级向下阅读了。

 

switch语句

 

使用描述性的名称

命名方式要保持一致,使用与模块名一脉相承的短语名称或者动词给函数命名。

 

函数参数

最理想的参数数量是0参数,其次是一,再次是二,应该尽量避免三

 

一元函数的普遍形式

标识参数

二元函数

 

参数对象

如果函数看来需要两个三个或者三个以上参数,

就说明其中一些参数应该封装为类了。

 

参数列表

动词与关键词

给函数取个好名字,能较好的解释函数的意图,以及参数的顺序和意图。

 

无副作用

古怪的时序性耦合及顺序依赖

都有可能出现在,函数多做无关的事情

典型的案例,在进行用户密码校验时,初始化了session对象。

在会话开始是可以的,在其他的地方就会有可能导致程序出错。

 

输出参数

 

分割指令与询问

函数要么做什么事,要么回答什么事,但是二者不可都做。

 

使用异常替代返回错误码(应当这么做)

从指令式函数返回错误码违反了指令与询问分隔的规则。

 

抽离Try/Catch代码块

Try/Catch代码块丑陋不堪,他们搞乱的代码结构,把错误处理和正常流程混为一谈。

最好把try/catch代码块主体部分抽离出来,另外形成函数。

 

错误处理就是一件事

函数应该只做一件事,错误处理就是一件事,因此处理错误的函数不该做其他事。

 

Error.java依赖磁铁

返回错误码通常暗示有个类或者枚举,定义了所有错误码。

这样的类就是一块磁铁,其他许多类都得导入和使用它。

Error枚举修改时,所有其它的类都需要重新编译和部署。

使用异常代替错误码,新异常就可以从异常类派生出来,无需要重新编译或重新部署。

 

别重复自己

重复会导致代码臃肿,当需要改变时,要改变多次,增加了错误产生的几率。

重复可能是软件中一起邪恶的根源,许多原则与实践规则都是为控制与消除重复而创建。

 

结构化编程

遵循Edsger Dijkstra 的结构化编程规则

每个函数、函数中的每个代码块都应该有一个入口、一个出口。

函数中只有一个return瑜伽,循环中不能有breakcontinue语句,而且永远不能有任何goto语句。

但是小函数中,偶尔出现的return breakcontinue语句,比单入单出原则更具有表达力,没有坏处。

 

 

如何写出这样的函数

写代码和写被动东西很像,先想什么写什么,然后再打磨

写函数是,一开始都冗长而复杂,有太多缩进和嵌套循环,有过长的参数列表,名称是随意取的,也有重复的代码

然后打磨这些代码,分解函数就、修改名称、消除重复,缩短和重新安置方法,有事还拆散类。

最后遵循本章列出的规则,组装好这些函数。

并不从一开始就按照规则写函数,没人做得到

 

大师级程序员把系统当作故事来讲,而不是当作程序来写。

他们使用选定编程语言提供的工具构建一个更为丰富更具表达力的语言,用来讲那个故事。

那种领域特定语句的一个部分就是描述在系统中发生的各种星湖的函数层级。

遵循这些规则,函数会短小,有个好名字,而且被很好的归置,

真正的目标在于讲述系统的故事,而你编写的函数必须干净利落的拼装到一起,

形成一种精确而清晰的语言,帮助你讲故事。

 

 

分享到:
评论

相关推荐

    代码整洁之道-----读书笔记

    《代码整洁之道》是软件开发领域的一本经典之作,作者是Robert C. Martin(简称Uncle Bob)。这本书主要探讨了如何通过编写整洁、易于理解的代码来提高软件的质量和可维护性,尤其针对Java编程语言提供了许多实用的...

    读代码整洁之道幻灯片笔记

    《代码整洁之道》是软件开发领域的一本经典著作,作者是Robert C. Martin(简称Uncle Bob)。这本书强调了编写可读性好、易于维护的代码的重要性,提出了许多关于代码整洁性的原则和实践方法。以下是对书中核心知识...

    FPGA整洁代码之道3-信号命名和定义应该明确.pdf

    FPGA A 整洁代码之 道 3- 信号命名和定义应该 明确 在设计中,我们不断的给目录、源代码、文件、函数、变量、参数、类、封包进 行命名与定义。当一件工作需要进行的次数非常之多,足以证明它是不可或缺的 基本工作。...

    代码整洁之道读书笔记.zip

    * 整洁代码的意义? 可读性,可维护性。 * 如何写出整洁代码? 1.只做一件事 2.不重复 3.有表达力 * 整洁代码的态度要求,要遵守的军规? 专业 和责任。让营地比你来时更干净,拒绝破窗效应。 * 写出整洁...

    代码整洁之道幻灯片笔记

    《代码整洁之道》是软件开发领域的一本经典著作,由著名程序员Robert C. Martin(也称为Uncle Bob)所著。这本书主要关注如何通过编写整洁、可读性强的代码来提高软件的质量和可维护性。幻灯片笔记是对这本书内容的...

    代码整洁之道笔记

    ### 代码整洁之道的核心知识点梳理 #### 一、基本原则与理念 **1. LeBlanc & Late equals never:** - **原则概述:** 这条原则强调的是代码编写的时间节点对于后期维护的重要性。如果在项目初期没有良好的规划与...

    《代码整洁之道》学习笔记

    ### 《代码整洁之道》学习笔记关键知识点梳理 #### 第一章 整洁代码 **1.3.5 什么是整洁的代码?** - **Bjarne Stroustrup(C++语言发明者)的观点:** - 代码逻辑应当直截了当,使缺陷难以隐藏。 - 尽量减少...

    《架构整洁之道》读书笔记.pdf

    《架构整洁之道》是软件开发领域的一本经典著作,由知名专家Robert C. Martin撰写。Martin先生不仅是cleancoders.com的联合创始人,还是Uncle Bob Consulting LLC的创始人,他在全球范围内提供软件开发咨询服务,...

    你所需要知道的代码整洁之道1

    《你所需要知道的代码整洁之道》 编程不仅仅是让计算机执行指令,更是一种沟通的艺术,它面向的是人类读者。Donald Ervin Knuth的名言“程序是写给人读的,只是偶尔让计算机执行一下”强调了代码的可读性和可维护性...

    代码-------生成器.zip

    Lombok则是一个库,通过注解处理器在编译时自动插入代码,例如自动实现getter和setter,消除冗余的构造函数等,让代码更加简洁。 除了这些开源工具,还有一些IDE集成的代码生成功能,如IntelliJ IDEA和Eclipse等,...

    clean_code(中文完整版)

    《代码整洁之道》是由美国著名软件工程师、软件领域权威作者Robert C. Martin所著。这本书的中文版本由韩大翻译,并由人民邮电出版社在2010年1月首次出版,随后在同年5月进行了第二次印刷。书籍的英文原名是《Clean ...

    Linux C函数手册 清晰

    此外,C陷阱与缺陷、C和指针、C语言参考手册、代码整洁之道、C语言趣味算法、C语言详解、C Primer Plus、妙趣横生的算法(C语言实现)、嵌入式Linux_C语言应用程序设计等等书籍都已经上传,并且全部免费!...

    Python语言程序设计教程 北理工Python课程第6章-函数与递归-1-函数定义 共22页.pdf

    通过定义和调用函数,我们可以使代码更加整洁和可复用。例如,我们可以定义一个`happy`函数来打印歌词的前三行,然后在主程序中根据需要调用这个函数,传递不同的名字作为参数。 ```python def happy(name): print...

    matlab开发-内联定义函数inscripts

    通过在脚本中定义这些函数,我们可以保持代码的整洁,并根据需要轻松地调整函数行为。`license.txt`可能是关于该代码的授权信息,而`.html`文件可能包含相关文档或帮助信息。 总之,内联函数在MATLAB中是一个强大的...

    Study代码整洁Study代码整洁

    《代码整洁之道——C#实践篇》 在编程领域,代码整洁性是衡量代码质量的重要标准之一。"Study代码整洁"的主题着重强调了编写清晰、易于理解和维护的代码的重要性。在C#这样的面向对象编程语言中,代码整洁不仅关乎...

    第6章 函数-4代码风格1

    【标题】:“第6章 函数-4代码风格1” 【描述】:“第6章 函数——代码风格C语言程序设计第6章 函数基本的代码规范Basic rules and guidelines of Coding Style程序版式程序注释命名规则追求清晰、整洁、美观、...

Global site tag (gtag.js) - Google Analytics