代码大全2,阅读2

news/2025/10/29 23:04:00/文章来源:https://www.cnblogs.com/wsh-wsh-/p/19175577

“布局清晰、控制逻辑严谨”,才是 “好代码” 的标配。但过程中也有不少和作者观点 “碰撞” 的地方,反而让思考更深入。
先说说 “数据声明的布局”。作者提了三个核心建议:每行只声明一个变量、变量声明贴近首次使用位置、合理组织声明顺序。后两点我很快就认同了,比如 “变量贴近使用位置”,之前我习惯把所有变量放开头,结果写着写着就忘了某个变量的用途,后来改成 “用之前才声明”,比如在循环前声明循环变量,调试时一眼就能找到,效率高了很多。但对 “每行只声明一个变量”,我起初有点不理解 —— 比如声明三个 int 类型的计数器(int a=0, b=0, c=0),放一行不是更省版面吗?后来翻到作者补充的说明:“在大型项目中,每行一个变量,方便添加注释、修改赋值,也能避免漏写逗号导致的语法错误”。我试了下:在一个多人协作的小项目里,把变量声明拆成每行一个,还加上注释(//a:用户数量计数器 //b:订单数量计数器),后来队友说 “看你这段代码特别清楚,不用反复问你变量含义”,这才明白作者的建议是从 “工程协作” 角度出发的,不是单纯 “吹毛求疵”。
再聊聊 “控制逻辑” 里的细节。比如作者强调 “在 C 家族语言中,把常量放比较左端”(如 if (5 == num) 而非 if (num == 5)),老师上课提过,但我总觉得 “麻烦” 没照做。直到有次写代码时,把 “==” 误写成 “=”(if (num = 5)),编译器没报错,程序运行时逻辑全错,查了半小时才发现问题。后来特意试了 “常量放左边”:if (5 = num),编译器立刻提示 “赋值给常量”,瞬间定位错误。这才明白,作者说的 “细节里藏着稳定性”,真不是空话 —— 很多 bug 不是因为 “技术不行”,而是没养成这些 “防错习惯”。
还有个小争议点:“空语句和空循环” 的处理。作者建议 “为空语句创建 DoNothing () 预处理宏或内联函数”,比如把 “for (;i<10;i++);” 改成 “for (;i<10;i++) DoNothing ();”,理由是 “单独的分号容易被当成‘遗漏代码’,尤其代码量大时,很可能看花眼”。我起初觉得 “没必要,一个分号我能看清”,但后来参与一个有 300 行代码的项目,调试时发现某个循环没执行 —— 查了半天,才发现是把 “for (;i<10;i++) { // 逻辑代码 }” 写成了 “for (;i<10;i++); { // 逻辑代码 }”,多了个分号导致循环空转。这时候才理解作者的建议:工程化的代码,要 “让别人能看懂,也让自己少踩坑”,一个 DoNothing () 虽然多写几个字,却能避免 “低级失误”。
最后,作者关于 “布局风格统一” 的观点,彻底打消了我的纠结。之前我在 “括号写法” 上总摇摆:一会儿用 “for (…) { }”(紧凑式),一会儿用 “for (…) 换行写 { }”(展开式)。作者说:“高手会有自己的风格,但底线是‘前后一致’—— 整个项目用同一种风格,比‘纠结哪种风格更好’重要”。后来我和队友约定:所有循环和判断都用 “展开式” 括号,比如:for (int i = 0; i < 10; i++){// 逻辑代码}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/950312.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

UNIQUE VISION Programming Contest 2024 Christmas (AtCoder Beginner Contest 385)

D - Santa Claus 2 map<int,set> E - Snowflake Tree 开始想到枚举中心点,x=度数,y=min儿子度数-1,其余全要删除,删除越少留下越多,留下1+x+xy,删n-(1+x+xy) 样例1告诉我们可以删除某个子树,这样还是y=min儿…

如果我想在项目发布后,动态更新组件,如何使用模块联邦实现?

要在项目发布后动态更新组件,并使用 Webpack Module Federation(模块联邦) 实现,核心思路是: 将组件拆分为独立的 Remote 应用,Host 应用在运行时从远程加载最新版本的组件,而无需重新构建或部署 Host。 这正是…

静态类型、动态类型、强类型、弱类型

静态类型、动态类型、强类型、弱类型 静态类型与动态类型 变量类型是否会随赋值变化——何时确定变量的类型。静态类型:代码中需要指定变量的类型(或者自动推导),编译期就进行类型检查,无须运行代码即可确定变量的…

AI浪潮下的职业迷思:机遇还是泡沫?

最近刷到一堆AI新闻,从创业融资到巨头裁员,感觉整个行业像坐过山车。一边是剪映前产品负责人廖谦离职创业,半个月就拿下几百万美元投资,搞多模态Agent;另一边Meta却在清晨五点发裁员邮件,连工作十几年的AI科学家…

10/29

dota2水平更上一层lou,冠绝局把把c,就是恐怖利刃太吃队友了,不一定能打好。今天预备学习了tomcat配置 und 离散数学111

[Docker] Docker拉取镜像url详解

[Docker] Docker拉取镜像url详解$(".postTitle2").removeClass("postTitle2").addClass("singleposttitle");目录完整命令简化版本 完整命令 # docker - Docker 客户端命令行工具,用于…

activemqCVE-2015-5254漏洞复现

activemq/CVE-2015-5254漏洞复现 原理 该漏洞源于序列化的Java Message Service(JMS)ObjectMessage对象存在反序列化漏洞,同时程序没有对代理中序列化的类做限制,导致攻击者可以构造恶意的序列化的类进行RCE攻击。 影…

模块联邦共享组件的时候如何进行版本管理

在使用 Webpack Module Federation(模块联邦) 共享组件时,版本管理 是一个关键挑战。 因为微前端或微组件架构中,多个应用(Host 和 Remotes)可能由不同团队维护、独立部署,若组件版本不一致,极易导致运行时错误…

查询排序与表连接

一、分组(group by)相关 (一)分组(group by)的作用 按逻辑次序合并具有重复值的字段,用于查看指定分组的聚合情况,查询结果可同时包含普通列和聚合函数(如 avg、max、min、count 等)。 (二)分组与过滤的语…

pyqt 自定义QTableWidget

自定义QTableWidget `import sys from PyQt5.QtWidgets import (QApplication, QMainWindow, QVBoxLayout, QWidget, QComboBox, QTabWidget, QTableWidget, QTableWidgetItem) from PyQt5.QtCore import Qt import re…

价值主体的技术实现:基于Free Transformer潜变量Z的AI元人文架构探索

基于Free Transformer的潜变量Z技术探索"价值主体行为"时,岐金兰揭示的两个核心担忧,指出了理论技术化过程中的关键风险。这些风险若不能得到妥善解决,将导致AI元人文构想从生机勃勃的价值生态系统,蜕变…

第二十二天

《程序员修炼之道:从小工到专家》阅读笔记:思维重塑 在技术迭代如浪潮的行业里,这本书并非罗列API的工具书,而是为程序员搭建了从“完成任务”到“创造价值”的思维桥梁。它最核心的启示在于:优秀的程序员,本质是…

Problemsetting

List of my problems其实我很不会出题, 所以不会常更新可能不会更新.Problem Difficulty[集训队互测 2023] 优惠购物 3300【UER #12】电子运动 2800【UNR #9】星图 2800【UNR #9】Sing 2900Canvas Painting ?cooperat…

记录一下我最近一年写的脚本,不知不觉近100个了!

记录一下我最近一年写的脚本,不知不觉近100个了! 一个系统初始化的脚本 @echo offecho 右击鼠标以管理员身份运行,按任意键退出 echo 开启远程桌面连接Wmic OS Get Caption | Findstr /i "7" >nul …

The 2025 Hunan Collegiate Programming Contest

Preface 不知道 VP 什么就找了场 QOJ 上最新的比赛,结果发现打的时候就我们一个队,全程无榜就很难受 而且这场的题目质量确实让人不敢恭维,一堆原题和典题,基本没有那种有意思的思维题 最后 9 of 11,剩下两个感觉…

List of my problems

其实我很不会出题, 所以不会常更新.Problem Difficulty[集训队互测 2023] 优惠购物 3300【UER #12】电子运动 2800【UNR #9】星图 2800【UNR #9】Sing 2900Canvas Painting ?cooperated (modified solution/idea):Pr…

歌声转换SVC主流方法原理剖析1 — DDSP-SVC

pre 本文SVC指的是歌声转换(Singing Voice Conversion (SVC)),例如常见且开源的 So-VITS-SVC, RVC, DDSP-SVC 关键词:歌声转换、声音克隆、音色 最早在23年刷到了惠惠的冬之花翻唱,惊为天人,一直对这块很感兴趣,…

SpringBoot整合邮件发送

一、邮件发送核心认知 1. 什么是邮件发送 邮件发送是应用程序中通过邮件服务器将信息传递给指定收件人的功能,支持纯文本、附件、图片、HTML 模板等多种形式。在 Spring Boot 中,借助 Spring 提供的邮件服务封装,可…

vyos syslog配置

设置syslog服务器和端口set system syslog host 10.1.1.2 port 514 设置记录全部内容 set system syslog console facility all 提交并保存 commit save稍后即可在日志服务器上看到日志。 如需记录到文件,使用下列命…

Unity3D URP中材质设置emission自发光但是没有辉光Bloom效果

如图,勾选了emission并且调高了强度,物体没有向外发光的辉光效果,原因是没有设置后处理,需要在Package Manager里下载post processing,然后新建Global Volume然后点开ProFile选中场景的profile即可,如果没有可以…