clean code之路——函数

clean-code-javascript系列之函数 这是软件工程中最重要的一条规则, 当函数需要做更多的事情时, 它们将会更难进行编写、 测试和推理。当你能将一个函数隔离到只有一个动作, 他们将能够被容易的进行重构并且你的代码将会更容易阅读。没有参数是最理想的, 一个或者两个参数也是可以的, 三个参数应该避免, 超过三个应该被重构。通常, 如果你有一个超过两个函数的参数, 那就意味着你的函数尝试做太多的事情。由于 JavaScript 允许我们不定义类型/模板就可以创建对象, 当你发现你自己需要大量的参数时, 你 可以使用一个对象。 阅读详情

函数代码总原则

  • 函数代码长度要短;
  • 一个函数只做一件事;
  • 写函数代码如同给写文章段落,要在合适的地方分段;
  • 写代码如磨论文,休想一次成形,优美的代码需要多次打磨。

函数代码方法论

  1. 函数最好不要超过20行,切函数内代码的缩进不超过两级。
  2. 衡量一个函数是否只做一件事的标准:
    - 是函数体代码实现的功能是否超出了函数名所限定的功能;
    - 函数体代码是否能够分成多个逻辑部分,如果能分,则函数可能做了超过一件事情;
    - 包含switch语句的代码一般处理超过一件事情。
  3. 一个函数完成的功能需在一个抽象层次上,例如get_address和get_addr_state是两个层次,这两个功能不混合写在一个函数中。
  4. 函数参数:
    - 越少越好,一般不超过两个,因为超过两个很难记住函数需要传递的参数及其顺序;
    - 不要使用使用输出参数,既通过实参传递函数处理结果,因为通常的逻辑是通过return返回处理结果,非常直观;
    - 不要使用Flag参数,如boolean is_address_absent,这种情况下一般都可以拆成两个函数,既分别处理两件事情,一个函数处理地址不为空的情况,一个函数处理地址为空的情况;
    - 当一个函数的参数超过三个时,可以将某些参数封装成一个类;
  5. 函数命名:
    - 函数名为动词,参数名为名词,二者连起来组成有意义的表达,如open(‘file_name’);
    - 在函数名中携带参数及其顺序的信息,如set_addr_state_and_street(state, street)。
  6. 函数最好不要返回错误代码,而是用Exception代替,好处是不用再调用函数时立即处理错误代码,导致代码变负责。例如:
# Error code
if delete_page(page) == E_OK:
    if registry.delete_reference(page.name) == EOK:
        logger.log('page deleted')
    else:
        logger.log('delete reference fro registry failed')
else:
    logger.log('delete faild')
# Exception
try:
    delete_page(page)
    registry.delete_reference(page.name)
except Exception e:
    logger.log(e.get_msg())

7. 将try和except下的代码块封装为函数,如果一个函数中出现try和except,则该函数只能包含try和except这一代码块,例如

def delete(page):
    try:
        delete_page_and_all_reference(page)
    except Exception e:
        log_error(e)

8. 不要在代码中出现重复的代码,可以选择将重复两次及以上的代码封装为函数。
9. 尽量不要在函数中出现多个return语句,不要在循环中出现break或者continue语句。

参考文献:code clean

大模型-internvl高通qnn运行源码解读 模型链接:https://huggingface.co/OpenGVLab/InternVL2-2B论文官方简要说明 https://internvl.github.io/blog/2024-07-02-InternVL-2.0中文解读 https://zhuanlan.zhihu.com/p/702946079在线demo https://internvl.opengvlab.com/ 阅读详情

相关推荐

WRF-BEM相关参数说明

本参数适用于WRF-BEM模拟武汉市气候。

m0_60013472的博客 1896

Clean Code(整洁代码)

大虫虫是魔鬼 SOLID 好莱坞的迪米特喜欢组合而不是继承 封装,高内聚,内部信息隐藏 继承,实现代码重用 多态 魔鬼数字,硬编码 常量应该统一定义,集中管理; 避免魔鬼数字和硬编码。 拒绝重复代码 使用优秀开源方法,不要重复造轮子 函数要短小优美,大函数提取函数,大类 尽可能使用枚举 针对接口编程,而不是实现编程。成员变量,参数,返回值,局部变量,尽量定义为接口。 定义类和方法时,优先使用泛型,...

daoshu 4127

STM32F103C8T6 + GY-906红外测温:手把手教你用CubeMX和HAL库搞定IIC驱动(附完整工程)

本文详细介绍了如何使用STM32F103C8T6和GY-906红外测温传感器(基于MLX90614芯片)实现非接触式温度测量。从STM32CubeMX工程创建、HAL库驱动适配到温度数据采集与处理,提供完整的开发流程和常见问题解决方案,帮助开发者快速掌握红外测温技术。

weixin_29188043的博客 253

Clean Code,了解Clean Code

Clean Code是什么?Clean Code的优缺点!了解Clean Code

哈哈哈哈哈,前端开发工程师啊 1764

C# 实现文件和字符串的AES加密解密

C# 实现文件和字符串的AES128加密解密

m0_72044573的博客 5935

危废焚烧优化控制系统设计与实现:基于数据驱动的控制参数预测

本文提出了一种基于数据驱动的危险废物焚烧过程优化控制方法。系统利用历史运行数据和实时监测数据,通过深度学习模型预测关键控制参数,实现焚烧过程的智能化控制。系统采用Python开发,结合TensorFlow/PyTorch框架,构建了完整的数据采集、预处理、特征工程、模型训练和实时预测闭环系统。该系统能够处理多变量非线性关系,适应工况变化,从历史数据中学习最优控制策略,相比传统PID控制方法具有显著优势。论文详细介绍了系统架构、算法设计和实现细节,为危废焚烧过程的优化控制提供了有效解决方案。

huanghm88的专栏 206

《Clean Code《代码整洁之道》解读

编写整洁代码是一个过程:它需要不断地审视、修改和改进代码。通过坚持这些原则和实践,开发者可以编写出高质量、易于维护的代码。关注代码的细节:整洁代码的本质是对代码细节的关注。它不仅仅是为了让代码“工作”,更是为了让代码“好用”。整洁的代码文化:整洁的代码不仅是个人的追求,更需要团队文化的支持。团队成员应共同努力,维护代码库的整洁。《Clean Code》不仅提供了编写整洁代码的指南,更是一种职业素养的体现。通过实践这些原则,开发者可以不断提高代码质量,提升软件开发的整体效率。

刘皇叔说Java的博客 2356

Calibre 3Dstack Flow Example(5-2)

本文详细介绍了Calibre3DSTACK工具在3D-IC设计验证中的应用。主要内容包括:1)连通性检查(LVS)规则编写,重点说明connected命令的使用方法和多文本标签处理;2)设计规则检查(DRC)实现,涵盖层间距检查和焊盘重叠检查;3)系统网表生成器操作流程,从芯片导入到网连通性定义;4)两种规则文件语法(扩展语法和传统语法)的编写示例;5)验证报告文件格式解析。通过具体案例演示了如何建立完整的3D-IC验证流程,包括芯片定义、装配操作、电气连接验证和物理规则检查等关键步骤,为3D-IC设计验证

u013620135的博客 2336

CleanCode---代码整洁之道笔记

一、整洁代码 糟糕 的代码想做太多事,它意图混乱、目的含混。整洁的代码只做好一件事,力求每个函数、每个类和每个模块都全神贯注于一事,完全不受四周细节的干扰和污染。如果对象功能太多,最好是切分为两个或者多个对象。如果方法功能太多,可以使用抽取手段进行重构,从而得到一个能较为清晰地说明自身功能的方法,以及另外数个说明如何实现这些功能的方法。 整洁的代码从 不隐藏设计者的意图,充满了干净利落的抽象和直截了当的控制语句。 简单的代码有以下几点要求: 能通过所有测试。高效可用的代码是第一位。 没有重复的代码。如果同

zhaozhen的博客 1841

100 道大数据开发技术原理与实战面试宝典(必过答案详细解析)I

在数字化浪潮席卷全球的今天,大数据开发工程师已成为企业数字化转型的核心力量。无论是互联网巨头的用户行为分析,还是金融机构的风险控制,亦或是智慧城市的数据中枢,都离不开大数据技术的支撑。然而,面对BAT等头部企业严格的面试要求,候选人不仅需要掌握扎实的理论基础,更需具备将技术落地的实战能力。本文基于历年高频面试题与企业真实场景需求,梳理100道必考题目,涵盖基础概念、框架原理、算法设计、性能优化等核心领域,助你构建完整的知识体系,从容应对面试挑战。

AI天才研究院 1386

AI翻译工具自动翻译日语视频生成srt中文字幕,支持离线轻松生成任意日语视频字幕!可选择支持显卡模式和cpu模式低显存也能用

【AI离线字幕神器:日语视频一键转中文字幕】推荐一款基于Faster-Whisper的本地化字幕工具,可离线生成日语视频的中文字幕(.srt格式),支持CPU/GPU加速处理。实测1小时视频最快4-5分钟完成翻译,无需联网保护隐私。操作简单只需拖拽文件,支持批量处理音频(mp3/wav)和视频(mp4/mkv)文件,还能自定义输出格式和参数调整。特别适合需要观看无字幕日语资料的用户,堪称技术宅必备神器。下载地址附后,包含详细使用教程和参数配置说明。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 1万+

浅谈Clean Code

1. Clean Code起源 谈起Clean Code,大多数的程序员都不陌生,有时我们会将Clean Code也称之为代码整洁之道。 Clean Code的思源源于软件工程领域的大师级人物 - 罗伯特·马丁(Robert C. Martin)所著的一本重量级经典图书《Clean Code》,他在书中提出一种观念: 代码质量与其整洁度成正比 干净的代码,既在质量上较为可靠,也为后期维...

SAP领域技术博客 2747

手把手教你学Simulink--基于光伏(PV)系统的建模与仿真场景:-不同天气条件下光伏系统的输出性能分析

本文介绍了使用Simulink和Simscape Electrical工具箱进行光伏系统建模与仿真的完整流程。内容涵盖准备工作、模型构建、仿真分析三大步骤,重点演示了如何模拟不同天气条件(光照强度、温度变化)对光伏输出性能的影响。通过添加PVArray模块、配置参数、设置环境变化条件、连接测量仪器等操作,实现了光伏系统在动态天气条件下的输出特性分析。文章还提供了仿真参数设置建议和结果分析方法,帮助用户理解环境因素与光伏性能的关联性,为光伏系统设计和优化提供参考。

MHD0815的博客 189

Excel文本函数(char&unichar & code & unicode & clean)

通常用于特殊字符。

人不风流枉少年 549

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Clean-Code:函数

Clean-Code:函数 短小: 函数的第一规则是短小,第二规则还是短小, 很明显作者将短小放到第一个列出来的位置。说明对于函数而言,短小的重要性不言而喻。 可是函数多少行才算短小呢? 代码大全上说一个函数理论上应该小于50行,我认为这个数字有点

鍵盤農夫 727

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

如何写出单职责PHP函数:clean-code-php的终极指南

clean-code-php是一个专注于将Clean Code概念应用于PHP开发的项目,它提供了一系列实用指南帮助开发者编写更清晰、更可维护的PHP代码。本文将深入探讨如何利用clean-code-php的原则来优化函数设计,实现单一职责原则,让你的PHP代码质量提升到新高度。 ## 为什么单职责函数对PHP开发至关重要 在PHP开发中,函数是代码的基本构建块。一个函数只负责一项明确的任务,

gitblog_00215的博客 340

Python标志参数避免技巧:clean-code-python函数职责分离指南

编写干净的Python代码是每个开发者的追求,而clean-code-python项目正是为此而生!🚀 这个开源项目将经典的Clean Code概念适配到Python语言中,帮助开发者编写更易维护、更清晰的代码。在本文中,我们将重点探讨如何避免使用标志参数,实现函数职责的清晰分离。 ## 什么是标志参数问题? 标志参数(Flag Parameters)是指那些通过布尔值来控制函数行为的参数。

gitblog_00711的博客 922

Python函数组合技巧:使用clean-code-python提升代码质量

在Python开发中,函数组合是一种强大的编程技巧,能够让你的代码更加模块化、可维护和可测试。clean-code-python项目提供了实用的函数组合指南,帮助开发者编写更清晰的代码。本文将介绍如何使用clean-code-python的函数组合技巧来提升你的Python编程水平。🚀 ## 什么是函数组合? 函数组合是将多个简单函数组合成一个更复杂函数的过程。每个函数都专注于完成一个特定的

gitblog_00154的博客 780

如何优化PHP函数参数:clean-code-php的2参数原则详解

在PHP开发中,编写简洁高效的函数是提升代码质量的关键。clean-code-php项目作为PHP代码整洁之道的实践指南,提出了许多实用原则,其中**函数参数优化**尤为重要。本文将深入解析clean-code-php中的"2参数原则",帮助开发者写出更易维护、可读性更强的PHP代码。 ## 为什么函数参数数量很重要? 函数参数过多会带来诸多问题: - **可读性下降**:调用函数时需要记住多

gitblog_00522的博客 889

Clean Code 第三章 函数 总结

函数的名称 函数名称最好不要使用一些很迷惑的缩写,例如说如果写了一个函数用于删除vector中的一系列连续的元素,将其命名成了remove。在之后的编写扩充过程中又写了一个新的函数,删去其中所有的奇数位元素,并且命名成rSValue,那么在这种情况下,写代码的人觉得既然有一个常用的函数叫remove,那么r缩写开头自然而然不就是连接上remove吗,但是阅...

diesi4520的博客 258

Clean code 笔记 - 优雅的代码(1)—— 代码命名和函数编写的基本原则

最近在读Clean Code英文原版,入行两年,也该开始逐步提升自己的代码质量了(避免被人吐槽像XX一样的code),以此为记,鞭策自己努力像一个正儿八经的程序媛迈进! 关于命名 优雅的代码: 通过所有的测试 没有重复 尽量少的实体,如类、方法、函数等 命名原则 名副其实: 名字所表达的具体含义、类型清楚 避免误导:避免使用具有特殊意义的字段,避免使用相近的命名造成误导 有意义的区分:如prod...

weixin_33819479的博客 398

函数长度与抽象层次:Clean Code拆分的核心原则

在软件工程实践中,函数长度一直是代码审查与重构中反复讨论的话题。很多人追求“短函数”,却往往陷入机械拆分的误区——代码被拆成多个中等函数,可读性依然没有改善。真正的关键并不在于行数多少,而在于抽象层次一致性:一个函数内部的代码应当处于同一抽象层级,避免业务意图与技术实现混杂。遵循这一原则,母函数可以像目录一样清晰描述业务流,子函数则聚焦独立职责,从而显著降低认知负担,提升代码可维护性与可测试性。当函数包含多个逻辑阶段或步骤间存在独立数据依赖时,基于抽象层次进行拆分,比单纯追求短小更具工程价值。文章结合订单取

weixin_31220401的博客 294

Clean Code (4):函数长度、抽象层次

维度建议目的参数控制数量与顺序提高调用可读性行数保持短小降低复杂度职责单一职责原则易于维护输出返回值代替输出参数消除副作用抽象一致的层次结构更高可读性与复用性干净的代码并非“短小即美”,真正的 Clean Code 是一种思维方式每一行函数都在服务于“清晰的意图表达”。

TracyCoder的博客 688

《clean code》第二章 函数

1.短小每个函数行数越短小越好,20行封顶为佳。2.只做一件事3.函数参数a.函数参数越少越好,不得多于三个以上的参数。b.不要传入标志参数,例如传入一个布尔类型,则意味着函数里不止做一件事,应当将此函数拆开成两个函数。c.如果参数过多,可以将参数封装成对象:4.分割指令与询问public boolean set(String attribute, String value);//设值属性值,成功...

iamxiapengfei的博客 342

clean code 第三章 函数

好的代码让人很快看懂,而不好的代码虽然功能可以实现,但让其他人难以阅读,而且不利于后期的维护。 记录: 每个函数只做一件事,每个函数依序把你带到下一个函数中。 if/else/while这样的语句中,代码块应该只有一行 函数的缩进不能多于2层 例1:看不懂版 例2:能看懂版 例3:简洁版 ...

troublemakers的博客 340

agentic-awesome-skills 的 clean-code-guard:命名与函数的十六条铁律实战指南

本指南以 [clean-code-guard](https://pre-link.gitcode.com/i/92a76e3b3eb5f0b4e2b235ccf7c6cf98) 技能的核心参考文档 [naming-and-functions.md](https://pre-link.gitcode.com/i/36b1199a9b2887cee68b08b99a1566b2) 为主体,系统讲解罗伯

gitblog_00259的博客 1041
上一篇: Clean Code之路——命名
下一篇: Lock对多线程执行效率的影响
无花果树
博客等级 码龄10年 12粉丝 22原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值