Writing clean code

Writing Clean Code: A Guide to Writing Better Tests Usi 作者:禅与计算机程序设计艺术 1.简介 1.1文章背景 经过几年的软件开发生涯,我们从学生时代写的代码到如今流行的前后端分离,面对复杂系统的开发测试需求越来越多,单元测试就显得尤其重要。而测试用例编写往往是一项耗时的工作,代码质量也需要不断提升。因此,自动化测试 阅读详情

今天下午没事,又下载了以前看过的MS Press的<Writing clean code>来看看,虽然说比较老了(92年写的),但很多东西依然有很强的借鉴意义,以下几点觉得很有感触:

1.使用assert

   在函数中检查参数及某些值得合法性,因为assert只会在debug模式下起作用,所以不会有性能问题,有些人喜欢用错误处理来代替assert,这是不对的,会使程序变大变慢,assert的正确使用会尽早的暴露出问题来

(一个重要的条件是,如果自己assert实现的话,必须是个宏而不是函数,并且不能有任何副作用,否则会影响程序的堆栈或内存布局)
2. 防止过度使用assert

  一旦认识到assert的有点后,很多人会不遗余力的使用assert,而很多情况是应该又错误处理来做的,如果用assert那么在release版本中就没有任何控制,区分的关键是考虑下这个判读失败会不会在release的情况下发生
3. 用一个慢的没有优化的程序来检测一个新的快的功能

   很多程序为了效率或者其他原因会非常复杂,这就会导致此函数对各种输入值产生的结果是否正确很难判断,一个比较好的方法是,写一个算法效率比较低但很简单的版本来对比(debug模式下),如下

 
4. 单步调试

   程序写完后最简单的办法就是单步调试进去看每条语句的执行,对于有些很难执行到的(如错误分支),可以手动改变函数或变量的值来达到。
5. 避免把错误值和有效值一起返回

   如很多函数把正确的值返回为正数,错误为负数,但更好的则是返回bool, 然后结果在参数中返回。
6. 每种特殊情况之处理一次

   尽量减少特殊分支如if/else为同一种情况多次出现,一是程序结构混乱,二是分跳转语句太多影响性能

Writing Clean Code(PDF版本) 编程精粹 ── Microsoft编写优质无错 C程序秘诀 PDF的版本 立即下载

相关推荐

Writing Clean Code

Writing Clean Code资料,对学习编码很有帮助。

养成良好的代码习惯_让我们养成保持代码清洁的习惯

养成良好的代码习惯 重点 (Top highlight)Writing clean code is not a simple task. The matter is there are numerous practices, tips, and tasks on this subject which is often overwhelming. As a result, it is often h...

weixin_26746861的博客 239

Writing Clean Code.rar

Writing Clean Code.rar aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

《编程精粹-Writing Clean Code》编码检查表摘录

《编程精粹-Writing Clean Code》编码检查表摘录

zhushuanghe的博客 268

Android HTTPS抓包证书配置全解:Proxyman实战避坑指南

HTTPS抓包本质是中间人(MITM)通信的可信建立过程,其核心在于客户端对代理根证书的信任链配置。在Android平台,自7.0起系统默认不信任用户安装的CA证书,必须通过Network Security Config显式声明trust-anchors,将Proxyman导出的PEM格式根证书纳入App级信任锚点。这一机制区别于iOS和桌面浏览器,导致大量开发者卡在‘证书已安装却无法解密’的误区。技术价值在于打通开发调试闭环:精准定位SSLHandshakeException、绕过证书固定、支持React

weixin_32175665的博客 650

字节开源 DeerFlow 2.0:从 Deep Research 到 Super Agent Harness 的进化之路

GitHub Trending 冠军项目,字节跳动完全开源的超级智能体框架。支持子代理、沙箱执行、长期记忆、技能扩展,可完成从几分钟到几小时的复杂任务。本文深度解析架构设计、安装实战、技能系统,并附上独家配置指南。

qq_38610923的博客 1712

Write Clean Code

一、 代码风格上 a 一定要写上source description. 理由: 因为无论是重组代码或者是重新修改代码都应该 b source name should be clear and easy-understanding 理由:源代码的命名规则应该是见名知意,这样能够最快的帮助以后定位文件的位置,通过搜索就能够很快的检索出来。 二、 在代码内容上 a 在操作所有函数

蜗牛的远航 953

避坑指南:QT Creator报Unknown module(s) in QT: serialport的5种解决方法

本文详细解析了Qt Creator报'Unknown module(s) in QT: serialport'错误的5种解决方法,包括检查Qt版本兼容性、安装缺失组件、配置Kit环境等。针对Windows和Linux平台提供具体操作步骤,帮助开发者快速解决串口通信模块问题,提升开发效率。

weixin_29197051的博客 156

《Writing clean code》读书笔记

<!-- /* Font Definitions */ @font-face {font-family:Wingdings; panose-1:5 0 0 0 0 0 0 0 0 0;}@font-face {font-family:"MS Mincho"; panose-1:2 2 6 9 4 2 5 8 3 4;}@font-face {

hopesophite的专栏 6346

避坑指南:STM32H7不同DMA控制器(MDMA/DMA2D/BDMA)到底该用哪个?

本文深入解析STM32H7系列芯片的DMA控制器选型策略,涵盖MDMA、DMA2D、BDMA等不同控制器的架构原理与性能对比。通过实际项目案例,提供高速TCM数据搬运、GUI加速、低功耗传输等场景的选型决策树,并分享性能优化与调试技巧,帮助工程师避开常见陷阱,提升系统效率。

weixin_26876073的博客 447

3D Slicer隐藏技巧:这样玩转医学影像分割与3D建模(含DICOM处理)

本文深入探讨3D Slicer在医学影像分割与3D建模中的高级应用技巧,包括多模态分割策略、三维可视化优化及DICOM数据处理。通过专业配置和Python脚本示例,帮助医疗AI开发者和影像科医师提升工作效率,实现精准的医学图像分析与建模。

weixin_28559803的博客 433

《Writing clean code》读书笔记 (转载)

<br /><br />转载于: http://blog.youkuaiyun.com/hopesophite/archive/2006/08/02/1010643.aspx<br /> <br />《Writing clean code》读书笔记<br /> hopesophite<br />2006-8-1<br />写在前面的话:<br />这两天看了《Writing Clean Code》,很受启发,感觉值得再读,于是整理了一点笔记,作为checklist,以备速查。<br />原书共8章,每章都举一些例子,指

迷失的小书童 1677

手机相机Tuning专项调优(一):基础流程与图像主观评价标准建立实战解析

本篇为手机相机系统“Tuning专项调优”系列的开篇,深入剖析了当前手机相机Tuning的基本流程与图像主观评价标准的构建方法。结合实际工程经验与最新业界案例,详细介绍ISP调优和3A控制中涉及的主观评价标准,如锐度、色彩饱和度、噪声感知等,并提出一套可工程化落地的标准制定与评测实践体系,帮助工程师有效提升图像品质。

努力分享一些人工智能、计算机视觉、影像等相关的知识干货! 1933

Writing Clean Code 读后感

最近花了一些时间看了这本书,书名是《Writing Clean Code──Microsoft Techniques for Developing Bug-free C Programs》这里主要总结了一些里面的编程思想。为空语句加上NULL当需要使用空语句的时候,最好写上NULL, 比如:if (music_on()) NULL;else turn_it_on();参数类型相同的问...

weixin_30421809的博客 186

【YOLOv11改进- 主干网络】YOLOv11+RepViT: 从ViT的角度重新审视Mobile的CNN助力YOLOv11有效涨点;

本文给大家带来的改进内容是在YOLOv11中更换主干网络为RepViT,助力YOLOv11有效涨点,论文通过集成轻量级 ViT 的高效架构设计,逐步增强了标准轻量级 CNN(即 MobileNetV3)的移动友好性。这最终产生了一个新的纯轻量级 CNN 系列的主干网络。

qq_41304809的博客 786

YOLOv11改进 - C3k2融合 | C3k2融合融合WDBB宽度多样分支模块(Width Diverse Branch Block)通过多尺度分支增强特征表征能力

本文着眼于灰度图像目标检测所面临的挑战,提出了增强型目标检测网络 YOLO - MIF,该网络整合了多种多信息融合策略以对 YOLOv8 网络进行改进。文章开篇介绍了一种可创建伪多通道灰度图像的技术,此技术能增加网络的通道信息,同时缓解潜在的图像噪声与虚焦模糊问题。随后运用网络结构重新参数化技术,在不增加推断时间的情况下提升网络的检测性能。此外,引入了一种新颖的解耦式检测头,增强了模型处理灰度图像时的表现能力。

魔改工程师的博客 770

Writing clean code 读书笔记

第X章 异常     推崇使用异常,但在C语言中无法实现。而且,采用异常的代码也不见得清晰。 第14章 一个实例,逐渐由丑陋的代码,扩展特性,并且一步一步重构为易读的代码。 1)采用JUnit编写测试案例,保证每一步的修改都是安全的 2)分而治之,每一步的动作要小,避免一开始就伤筋动骨,大规模个性

liang0356的专栏 537

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

writing clean code 第八部分 剩下来的就是态度问题

l         错误既不会自己产生,也不会自己改正。如果你得到了一个错误报告,但这个错误不再出现了。不要假设测试员发生了幻觉,而要努力查找错误,甚至要恢复程序的老版本。l         不能“以后”再修改错误。这是许多产品被取消的共同教训。如果在你发现错误的时候就及时地更正了错误,那你的项目就不会遭受毁灭性的命运。当你的项目总是保持近似于0个错误时,怎么可能会有一系列的错误呢?l  

luckycjs 3092

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

30 Tips for Writing Clean and Maintainable Kotlin Code

1.背景介绍 Kotlin 是一个静态类型的编程语言,它在 Java 的基础上提供了更简洁的语法和更强大的功能。Kotlin 已经被广泛地用于 Android 开发和其他领域。在这篇文章中,我们将讨论如何编写清晰、易于维护的 Kotlin 代码。 Kotlin 的设计目标是让开发人员更快地编写更好的代码。它提供了一些特性,如null安全、扩展函数、数据类、协程等,这些特性使得编写高质量的代码变...

AI天才研究院 1014

NTscan扫描工具

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

7 tips on writing clean code(ZZ)

My job has required me to read quite a bit of code written by other people, and over the years I've found that there are some problems that tend to recur again and again. The idea with this blog entry...

wujunrat 151

高质量C /C编程指南---参考文献

参考文献 [Cline] Marshall P. Cline and Greg A. Lomow, C FAQs, Addison-Wesley, 1995 [Eckel] Bruce Eckel, Thinking in C (C 编程思想,刘宗田 等译),机械财产出书社,2000 [Maguire] Steve Maguire, Writing Cle...

weixin_30606669的博客 169

最近在读的技术类书籍

华为技术有限公司c语言编程规范 Writing Clean Code     ───     Microsoft Techniques for Developing Bug-free C Programs        Steve Maguire C语言核心技术    Peter Prinz & Tony Crawford C语言常见问题集 Steve Summit C++primer 第

823

高质量C++/C编程指南(参考文献)

 参考文献[Cline] Marshall P. Cline and Greg A. Lomow, C++ FAQs, Addison-Wesley, 1995 [Eckel] Bruce Eckel, Thinking in C++(C++ 编程思想,刘宗田 等译),机械工业出版社,2000 [Maguire] Steve Maguire, Writing Clean C

好色天使的专栏 6885

The first article "step bye step"

c++历程:>      1>        0.5>        1>                                     1.5>          1>                                      0.8>                        0.8>                           1>           

visual4825的专栏 2160
上一篇: 程序crash后为什么没有启动JIT调试器?
下一篇: 一个进程可以创建多少线程?
icecools
博客等级 码龄26年 4粉丝 6原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值